The Cable GuyDHCPv6 通訊協定

Joseph Davies

動態主機設定通訊協定 (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 伺服器的子網路時,DHCPv6 轉接代理會在用戶端與伺服器之間傳達訊息。

DHCPv6 訊息

就像 DHCP for IPv4 一樣,DHCPv6 會使用「使用者資料包通訊協定 (UDP)」訊息。DHCPv6 用戶端是在 UDP 連接埠 546 接聽 DHCP 訊息。DHCPv6 伺服器和轉接代理則是在 UDP 連接埠 547 接聽 DHCPv6 訊息。DHCPv6 訊息的結構比 DHCP for IPv4 簡單多了,後者的來源是在 BOOTP 通訊協定中,以支援無磁碟工作站。[圖 1] 顯示用戶端與伺服器之間傳送的 DHCPv6 訊息的結構。

Figure 1 DHCPv6 messages between client and server

Figure 1** DHCPv6 messages between client and server **(按影像可放大)

[1 位元組訊息類型] 欄位表示 DHCPv6 訊息的類型。[3 位元組交易識別碼] 欄位是由用戶端決定,並用來將 DHCPv6 訊息交換的訊息加以分組。在 [交易識別碼] 欄位後面的 DHCPv6 選項,是用來表示用戶端和伺服器識別、位址以及其他組態設定。如需定義之 DHCPv6 選項的清單,請參閱「DHCPv6 RFC 資源」資訊看板中所參照的 RFC 3315。

DHCPv6 選項是以類型長度值 (TLV) 格式進行格式化。[圖 2] 顯示 DHCPv6 選項的結構。

[2 位元組選項程式碼] 欄位表示特定的選項。[2 位元組選項長度] 欄位表示 [選項資料] 欄位的長度 (以位元組為單位)。[選項資料] 欄位包含選項的資料。

在轉接代理和伺服器之間交換的訊息有個別的訊息結構來記錄其他資訊。[圖 3] 顯示這幾種訊息的結構。

Figure 2 Structure of DHCPv6 options

Figure 2** Structure of DHCPv6 options **(按影像可放大)

[1 位元組躍點計數] 欄位表示已接收訊息的轉接代理數目。接收的轉接代理若發現訊息超出已設定的最大躍點計數,就會捨棄該訊息。[16 位元組連結位址] 欄位包含一個非連結本機位址,該位址會指派給連接到用戶端所在之子網路的介面。從 [連結位址] 欄位,伺服器可以決定指派位址的正確位址範圍。[16 位元組對等位址] 欄位包含原始傳送訊息之用戶端或轉接訊息之先前轉接代理的 IPv6 位址。除了 [對等位址] 欄位之外,還有包含 [轉接訊息] 選項的 DHCPv6 選項,[轉接訊息] 選項會包含轉接的訊息及其他選項。[轉接訊息] 選項提供在用戶端與伺服器之間交換的訊息的封裝。

並未定義 IPv6 的廣播位址。因此,原本 DHCPv4 訊息使用的有限廣播位址,在 DHCPv6 已改成使用 All_DHCP_Relay_Agents_and_Servers 位址 FF02::1:2。例如,嘗試在網路上搜索 DHCPv6 伺服器位置的 DHCPv6 用戶端,會將 [請求] 訊息從它的連結本機位址傳送到 FF02::1:2。如果主機的子網路上有 DHCPv6 伺服器,它就會接收 [請求] 訊息,並會傳送適當的回覆。更典型的情況是,主機的子網路上的 DHCPv6 轉接代理會接收請求訊息,然後將它轉送到 DHCPv6 伺服器。

Figure 3 Structure of messages between relay and server

Figure 3** Structure of messages between relay and server **(按影像可放大)

可設定狀態的訊息交換

為了取得 IPv6 位址和組態設定而進行的 DHCPv6 可設定狀態的訊息交換 (若接收之路由器通告中的 M 和 O 旗標都設為 1) 通常會包含下列訊息:

  • 由用戶端傳送來尋找伺服器的 [請求] 訊息。
  • 由伺服器傳送的 [通告] 訊息,指出它可以提供位址和組態設定。
  • 由用戶端傳送的 [要求] 訊息,來向特定伺服器要求位址和組態設定。
  • 由要求的伺服器傳送的 [回覆] 訊息,其中包含位址和組態設定。

如果用戶端和伺服器之間有轉接代理,轉接代理就會傳送伺服器 [回覆轉寄] 訊息,其中包含來自用戶端封裝的 [請求] 訊息和 [要求] 訊息。伺服器會傳送轉接代理的 [轉接回覆] 訊息,其中包含針對用戶端封裝的 [通告] 訊息和 [回覆] 訊息。如需 DHCPv6 訊息的完整清單,請參閱 [圖 4]

Figure 4 DHCPv6 訊息

DHCPv6 訊息 描述 同等的 DHCP for IPv4 訊息
請求 由用戶端傳送來尋找伺服器。 DHCPDiscover
通告 伺服器為了回應 [請求] 訊息而傳送,以指出可用性。 DHCPOffer
要求 由用戶端傳送來向特定伺服器要求位址或組態設定。 DHCPRequest
確認 由用戶端傳送給所有伺服器,以判斷用戶端的設定對連接的連結是否有效。 DHCPRequest
更新 由用戶端傳送到特定伺服器,以延長指派位址的存留時間並取得更新的組態設定。 DHCPRequest
重新連結 當未接收到 [更新] 訊息的回應時,由用戶端傳送到伺服器。 DHCPRequest
回覆 由伺服器傳送到特定用戶端,以回應 [請求]、[要求]、[更新]、[重新連結]、[資訊要求]、[確認]、[釋放] 或 [拒絕] 訊息。 DHCPAck
釋放 由用戶端傳送,以指出用戶端已不再使用指派的位址。 DHCPRelease
拒絕 由用戶端傳送到特定伺服器,以指出已使用指派的位址。 DHCPDecline
重新設定 由伺服器傳送到用戶端,以指出伺服器有新的或更新的組態設定。然後,用戶端會傳送 [更新] 訊息或 [資訊要求] 訊息。 N/A
資訊要求 由用戶端傳送來要求組態設定 (但非位址)。 DHCPInform
轉接轉寄 由轉接代理傳送來轉寄訊息給伺服器。[轉接轉寄] 會包含封裝為 DHCPv6 [轉接訊息] 選項的用戶端訊息。 N/A
轉接回覆 由伺服器傳送,以透過轉接代理傳送訊息給用戶端。[轉接回覆] 會包含封裝為 DHCPv6 [轉接訊息] 選項的伺服器訊息。 N/A

無狀態訊息交換

只為了取得組態設定而進行的 DHCPv6 無狀態訊息交換 (若接收之路由器通告中的 M 旗標設為 0 且 O 旗標設為 1) 通常會包含下列訊息:由 DHCPv6 用戶端傳送來向伺服器要求組態設定的 [資訊要求] 訊息,以及由伺服器傳送並包含所要求之組態設定的 [回覆] 訊息。

針對已設定路由器指派無狀態位址首碼給 IPv6 主機的 IPv6 網路,可利用雙訊息 DHCPv6 交換來指派 DNS 伺服器、DNS 網域名稱和其他組態設定,這些設定並不包含在路由器通告訊息中。

Windows 中的 DHCPv6 支援

Windows Vista™ 和下一版的 Windows Server® (代號 "Longhorn") 包括 DHCPv6 用戶端。DHCPv6 用戶端會根據接收之路由器通告訊息中的 M 和 O 旗標值,來嘗試使用 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。

Windows Server "Longhorn" 的 Beta 2 版使用 DHCP 伺服器服務來支援 DHCPv6 轉接代理和 DHCPv6 無狀態設定。您可以針對 DHCPv6 選項設定 DHCP 伺服器服務,來分送至前述雙訊息 DHCPv6 訊息交換中的所有 DHCPv6 用戶端。Microsoft 計劃將在 Windows Server "Longhorn" Beta 3 版中支援 DHCPv6 可設定狀態作業,包括在 DHCP 嵌入式管理單元中建立 IPv6 位址範圍的能力。

DHCPv6 RFC 資源

選取的 RFC,與 DHCPv6 相關:

Joseph Davies 是 Microsoft 的技術文件作家,從 1992 年開始教導和編寫 Windows 網路方面的主題。他為 Microsoft Press 寫過 5 本書,同時也是每個月 TechNet Cable Guy 專欄的作家。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.