分类: WINDOWS
2007-03-05 20:29:22
动态主机配置协议 (DHCP) 曾设计用来处理向计算机分配 IP 地址和其他网络信息,以便计算机可以在网络上自动通信。通过使用 IPv6 网络,实际上不需要 DHCP 来配置地址,但是有充分的理由来使用它。DHCP for IPv6 (DHCPv6) 可以(本文还包含指向英文网页的链接。)
向 IPv6 主机提供有状态的地址配置或无状态的配置设置。IPv6 主机可以使用多种方法来配置地址:
无状态地址自动配置 用于对链接本地地址和其他非链接本地地址两者进行配置,方法是与相邻路由器交换路由器请求和路由器公告消息。
有状态地址自动配置 通过使用如 DHCP 的配置协议,用来配置非链接本地地址。
IPv6 主机自动执行无状态地址自动配置,并在相邻路由器发送的路由器公告消息中使用基于以下标记的配置协议(如 DHCPv6):
托管地址配置标记,也称为 M 标记。设置为 1 时,此标记指示主机使用配置协议来获取有状态地址。
其他有状态配置标记 ,也称为 O 标记。设置为 1 时,此标记指示主机使用配置协议来获取其他配置设置。
结合 M 和 O 标记的值可以产生以下组合:
M 和 O 标记均设置为 0。 此组合对应不具有 DHCPv6 基础结构的网络。主机使用非链接本地地址的路由器公告以及其他方法(如手动配置)来配置其他设置。
M 和 O 标记均设置为 1。 DHCPv6 用于这两种地址(链接本地地址和其他非链接本地地址)和其他配置设置。该组合称为 DHCPv6 有状态,其中 DHCPv6 将有状态地址分配给 IPv6 主机。
M 标记设置为 0,O 标记设置为 1。 DHCPv6 不用于分配地址,仅用来分配其他配置设置。相邻路由器配置为通告非链接本地地址前缀,IPv6 主机从中派生出无状态地址。此组合称为 DHCPv6 无状态:DHCPv6 不为 IPv6 主机分配有状态地址,但分配无状态配置设置。
M 标记设置为 1,O 标记设置为 0。 在此组合中,DHCPv6 用于地址配置,但不用于其他设置。因为 IPv6 主机通常需要使用其他设置(如域名系统 (DNS) 服务器的 IPv6 地址)进行配置,所以这是一种不太可能的组合。
类似于 DHCP for IPv4,DHCPv6 基础结构的组件由下列各项构成:请求配置的 DHCPv6 客户端、提供配置的 DHCPv6 服务器、以及 DHCPv6 中继代理(当客户端位于不具备 DHCPv6 服务器的子网上时,它在客户端和服务器之间传递信息)。
如同 DHCP for IPv4 一样,DHCPv6 也使用用户数据报协议 (UDP) 消息。DHCPv6 客户端在 UDP 端口 546 上侦听 DHCP 消息。DHCPv6 服务器和中继代理在 UDP 端口 547 上侦听 DHCPv6 消息。DHCPv6 消息的结构比 DHCP for IPv4 的结构简单得多,DHCP for IPv4 在 BOOTP 协议中包含原始数据以支持无盘工作站。图 1 显示了客户端和服务器之间发送的 DHCPv6 消息的结构。
1 位字节的“消息类型”字段指明 DHCPv6 消息的类型。3 位字节的“事务 ID”字段由客户端确定并用于对 DHCPv6 消息一起交换的消息进行分组。“事务 ID”字段之后的 DHCPv6 选项用于指明客户端和服务器的标识、地址以及其他配置设置。有关定义的 DHCPv6 选项的列表,请参阅“DHCPv6 RFC 资源”边栏中引用的 RFC 3315。
DHCPv6 选项的格式为类型长度值 (TLV) 格式。图 2 显示了 DHCPv6 选项的结构。
2 位字节的“选项代码”字段指明了特定的选项。2 位字节的“选项长度”字段指明了“选项数据”字段的长度,以字节为单位。“选项数据”字段包含选项的数据。
为中继代理和服务器之间交换的各种消息提供了单独的消息结构,以记录其他信息。图 3 显示了各种类型的消息的结构。
1 位字节的“跃点计数”字段指明了已接收消息的中继代理数。如果其超过了配置的最大跃点计数,正在接收的中继代理可以放弃该消息。16 位字节的“链接地址”字段包含分配给连接到客户端所在子网的接口的非链接本地地址。在“链接地址”字段中,服务器可以确定从中分配地址的合适的地址范围。16 位字节的“对等方地址”字段包含最初发送消息的客户端或之前中继该消息的中继代理的 IPv6 地址。“对等方地址”字段之外是包括“中继消息”选项的 DHCPv6 选项,“中继消息”选项包含将被中继的消息和其他选项。“中继消息”选项提供了将在客户端和服务器之间进行交换的消息的封装。
没有为 IPv6 定义的广播地址。因此,用于某些 DHCPv4 消息的受限广播地址已替换为使用 FF02::1:2 for DHCPv6 的 All_DHCP_Relay_Agents_and_Servers 地址。例如,尝试发现网络上 DHCPv6 服务器位置的 DHCPv6 客户端从其链接本地地址发送一个“要求”消息给 FF02::1:2。如果主机子网上存在 DHCPv6 服务器,它会接收此“要求”消息并发送合适的应答。更为典型的情况是,主机子网上的 DHCPv6 中继代理接收此“要求”消息并将其转发给 DHCPv6 服务器。
有状态消息交换
要获取 IPv6 地址和配置设置的 DHCPv6 有状态消息交换(接收路由器公告中的 M 和 O 标记均设置为 1 时)通常由以下消息组成:
如果客户端和服务器之间存在中继代理,该中继代理会发送包含来自客户端的封装“要求”和“请求”消息的服务器“中继转发”消息。服务器发送包含为客户端封装的“公告”和“应答”消息的中继代理“中继应答”消息。有关 DHCPv6 消息的完整列表,请参阅 图4。
无状态消息交换
要仅获取配置设置的 DHCPv6 无状态消息交换(接收路由器公告中的 M 标记设置为 0,O 标记设置为 1 时)通常由以下消息组成:由 DHCPv6 客户端发送以请求来自服务器的配置设置的“信息请求”消息,以及由包含请求的配置设置的服务器发送的“应答”消息。
对于具有配置为向 IPv6 主机分配无状态地址前缀的路由器的 IPv6 网络,两消息 DHCPv6 交换可用于分配 DNS 服务器、DNS 域名以及其他未包括在路由器公告消息中的配置设置。
Windows 中的 DHCPv6 支持
Windows Vista™ 以及下一版本的 Windows Server®(代码名为“Longhorn”)包括 DHCPv6 客户端。依据接收的路由器公告消息中的 M 和 O 标记的值,DHCPv6 客户端尝试基于 DHCPv6 的配置。因此,要使用 DHCPv6,必须将 DHCPv6 服务器和中继代理配置为维护每个 IPv6 子网,然后将您的 IPv6 路由器配置为设置这两个标记为合适的值。如果某个给定子网存在多个公告路由器,应将它们配置为公告相同的无状态地址前缀和 M 与 O 标记的值。运行 Windows® XP 或 Windows Server 2003 的 IPv6 主机不包括 DHCPv6 客户端,因此会忽略接收的路由器公告中的 M 和 O 标记的值。
通过使用“netsh interface ipv6 set interface InterfaceName managedaddress=enabled”命令,可以将正在运行 Windows Vista 或 Windows Server“Longhorn”的 IPv6 路由器配置为在路由器公告中设置 M 标记为 1。类似地,通过使用“netsh interface ipv6 set interface InterfaceName otherstateful=enabled”命令可以在路由器公告中设置 O 标记为 1。
Beta 2 版本的 Windows Server“Longhorn”通过 DHCP 服务器服务来支持 DHCPv6 中继代理和 DHCPv6 无状态配置。可以将用于 DHCPv6 选项的 DHCP 服务器服务配置为分发到之前所述的两消息 DHCPv6 消息交换中的所有 DHCPv6 客户端。Microsoft 已计划在 Beta 3 版本的 Windows Server“Longhorn”中支持 DHCPv6 有状态操作(包括在 DHCP 管理单元中创建 IPv6 地址范围的功能)。