IPV6簡介

白皮書

摘要

由於最近人們對目前 Internet位址集區即將耗盡的密切關注,以及對增加現代化裝置功能的迫切希望,推動Internet 通訊協定目前版本 (稱為 IPv4)的升級進入標準化程序。新版本稱為 IP 第 6 版(IPv6),它解決了 IPv4中未考慮的設計問題,並準備將 Internet
帶入廿一世紀。本文描述 IPv4 Internet中的問題以及在 IPv6 中如何解決這些問題、IPv6位址設定、新的 IPv6 標頭及其擴充、IPv6 中Internet 控制訊息通訊協定 (ICMP) 和 Internet群組管理通訊協定 (IGMP)的取代通訊協定、相鄰節點互動以及 IPv6位址自動組態。本文提供 Internet 標準式的 IPv6概念的基礎,是專為熟悉基本網路概念和 TCP/IP的網路工程師和技術支援人員而準備的。

簡介

自 1981 年發行 RFC 791 以來,目前 IP 版本 (稱為第
4 版或 IPv4) 並未進行重大修改。IPv4
業經證實具有強固性、易於建置和互操作性,而且也經歷將互連網路擴展到今天的
Internet
全球工具規模的考驗。這歸功於它的最初設計。

但是,最初設計時並沒有考慮到以下問題:

  • 近年來 Internet 以指數成長以及 IPv4
    位址空間即將耗盡IPv4
    位址已變得相當匱乏,一些組織不得不使用網路位址轉換工具
    (NAT) 將多個專用位址對應到一個公用的 IP
    位址。雖然 NAT
    促進專用位址空間的重新使用,但它們不支援標準式的網路層安全性或所有高層通訊協定的正確對應,因此當連線兩個使用專用位址空間的組織時,就可能出現問題。

    此外,隨著 Internet
    連線的裝置和工具日益成長,總有一天公用
    IPv4 位址空間會耗盡。

  • Internet 的成長以及 Internet
    主幹路由器處理大型路由表的能力由於 IPv4 網路 ID
    以前和目前的配置方式,在 Internet
    主幹路由器的路由表中通常有超過 70,000
    個以上的路由。目前 IPv4 Internet
    路由基礎結構是由階層式和非階層式結構的路由組成。
  • 需要更簡單的組態大多數目前的 IPv4
    建置不是手動組態,就是使用受管理的位址組態通訊協定,如動態主機組態通訊協定
    (DHCP)。隨著使用 IP
    的電腦和裝置增多,迫切需要一種更簡單、自動化程度更高的位址組態以及其它不依賴於
    DHCP 基礎結構管理的組態。
  • IP 等級的安全性需求在 Internet
    等公開媒體上進行私人通訊,就需要加密服務,以保障傳送資料在傳輸程序中不被檢視或修改。雖然目前有
    IPv4 封包使用的安全標準 (稱為「IP 安全」或
    IPSec),但此標準是選擇性的,普遍使用的是專用的解決方案。
  • 需要為資料即時傳輸提供更好的支援 –
    也稱為服務品質 (QoS)雖然 IPv4 中已有 QoS
    標準,即時傳輸支援還是取決於 IPv4 服務類型
    (TOS) 欄位和 payload 識別 (通常使用 UDP 或 TCP
    連接埠)。不巧的是,IPv4 TOS
    欄位功能有限,隨著時間的經過,會出現各種不同的本機解譯。此外,當
    IPv4 封包 payload 加密後,就無法使用 TCP 和 UDP
    連接埠進行 payload 識別。

為解決這些問題,Internet 工程專案工作小組 (IETF)
開發了一套通訊協定和標準,稱為 IP 第 6 版
(IPv6)。此新版本,以前稱為下一代 IP (IPng),其中加入了許多為更新
IPv4 通訊協定所提出方法的概念。在 IPv6
的設計中,因為不隨意加入新的功能,因此將對上層和下層通訊協定的影響降至最低。

IPv6 特性

以下是 IPv6 通訊協定的特性:

  • 新標頭格式
  • 大位址空間
  • 有效率、具有階層結構的位址設定和路由基礎結構
  • 不受管理的和受管理的位址組態
  • 內建安全性
  • 提供更好的 QoS 支援
  • 用於相鄰節點互動的新通訊協定
  • 可擴充性

以下各節詳細討論其中的每個新特性。

新標頭格式

IPv6
標頭採用的新格式,目的是為了將標頭成本降到最低。具體做法是將非基本欄位和選項欄位放在擴充標頭中,而擴充標頭放在
IPv6 標頭後面。使用簡化的 IPv6
標頭,在中間路由器可進行更有效率的處理。

IPv4 標頭不能與 IPv6
標頭互相操作。主機或路由器必須使用 IPv4 和
IPv6 建置,以辨識和處理這兩種標頭格式。即使
IPv6 位址則是 IPv4 位址的 4 倍,新的 IPv6
標頭僅是 IPv4 標頭 2 倍大小。

大位址空間

IPv6 具有 128 位元 (16 位元組) 的來源和目的 IP
位址。雖然 128 位元可以表示多於 3.4×1038
種可能的組合,但是,IPv6
的大位址空間的設計是用於允許多級子網路和位址配置
(從 Internet 主幹網路到組織中的個別子網路)。

雖然目前只配置少量可能的位址供主機使用,但仍有大量的位址足夠將來使用。由於有了數目可觀的可用位址,節約位址的技術
(如 NAT 的部署) 就不再是必需的了。

有效率、具有階層結構的位址設定和路由基礎結構

Internet 的 IPv6 部分所使用的 IPv6
全域位址用於建立有效率、具有階層結構、可摘要的路由基礎結構,這個結構以多層級
Internet 服務提供程式的共同實施為基礎。在 IPv6
Internet 上,主幹路由器的路由表要小得多,與
Top-Level Aggregators
路由基礎結構對應。有關詳細資訊,請參閱<可彙總全域單點傳播位址>。

不受管理的和受管理的位址組態

為簡化主機組態,IPv6 支援受管理的位址組態 (如存在
DHCP 伺服器的位址組態) 和不受管理的位址組態 (沒有
DHCP 伺服器的位址組態)。使用不受管理的位址組態,連結上的主機自動自行組態為連結的
IPv6 位址 (稱為連結-本機位址)
以及從本機路由器通告的字首所衍生的位址。甚至在不存在路由器的情況下,相同連結上的主機也可自動自行組態為連結-本機位址並進行通訊,而不使用手動組態。

內建安全性

支援 IPSec 是 IPv6
通訊協定套件的要求。這個要求為網路安全需求提供標準的解決方案,並改善不同
IPv6 建置之間的互操作性。

提供更好的 QoS 支援

IPv6
標頭中的新增欄位定義如何處理與識別傳輸。在
IPv6 標頭中使用 Flow Label
欄位來識別傳輸,可使路由器標識和特殊處理屬於一個流量的封包,流量是指來源和目的之間的一系列封包。因為是在
IPv6 標頭中識別傳輸,所以即使透過 IPSec
加密的封包 payload,仍可實現對 QoS 的支援。

用於相鄰節點互動的新通訊協定

IPv6 的 Neighbor Discovery 通訊協定是一組用於 IPv6
訊息的 Internet 控制訊息通訊協定 (ICMPv6),它們管理相鄰節點之間的互動
(同一連結上的節點)。Neighbor Discovery
以其有效的多點傳播和單點傳播Neighbor Discovery
訊息,取代廣播式的位址解析通訊協定 (ARP)、ICMPv4
Router Discovery 和 ICMPv4 Redirect 訊息。

可擴充性

IPv6 透過將擴充標頭加到 IPv6
標頭後面,可以很容易地擴充以適應新的特性。與
IPv4 標頭中的選項 (僅支援 40 位元組的選項)
不同,IPv6 擴充標頭的大小只受 IPv6
封包大小的限制。

IPv4 和 IPv6 之間的差異

表 1 強調 IPv4 和 IPv6 之間的一些主要差異。

表 1 IPv4 和 IPv6 之間的差異

IPv4 IPv6
來源位址和目的位址長度都為
32 位元 (4 位元組)。
來源位址和目的位址長度都為
128 位元 (16 位元組)。有關詳細資訊,請參閱<IPv6
位址設定>。
IPSec 支援是選擇性的。 IPSec
支援是必需的。有關詳細資訊,請參閱<IPv6
標頭>。
在 IPv4
標頭中,路由器不識別用於 QoS 處理的 payload。
在 IPv6
標頭中,路由器使用 Flow Label 欄位識別用於
QoS 處理的 payload。有關詳細資訊,請參閱<IPv6
標頭>。
路由器和傳送主機均支援資料片段。 路由器不支援資料片段。僅傳送主機支援資料片段。有關詳細資訊,請參閱<IPv6
標頭>。
標頭包括檢查值。 標頭不包括檢查值。有關詳細資訊,請參閱<IPv6
標頭>。
標頭包括選項。 所有選項資料均移到
IPv6 擴充標頭中。有關詳細資訊,請參閱<IPv6
標頭>。
位址解析通訊協定 (ARP)
使用廣播 ARP Request 訊框,將 IPv4
位址解析為連結層位址。
用多點傳播 Neighbor
Solicitation 訊息取代 ARP Request
訊框。有關詳細資訊,請參閱 “Neighbor
Discovery”。
使用 Internet
群組管理通訊協定 (IGMP)
管理本機子網路群組成員身份。
用 Multicast Listener
Discovery (MLD) 訊息取代 IGMP。有關詳細資訊,請參閱
“Multicast Listener Discovery”。
使用 ICMP Router Discovery
確定具有最佳預設閘道的 IPv4 位址 (選擇性)。
用 ICMPv6 Router Solicitation
和 Router Advertisement 訊息取代 ICMPv4 Router
Discovery,這是必需的。有關詳細資訊,請參閱
“Neighbor Discovery”。
使用廣播位址將傳輸傳送到子網路上的所有節點。 沒有 IPv6
廣播位址。而是使用連結-本機領域所有節點多點傳播位址。有關詳細資訊,請參閱<多點傳播
IPv6 位址>。
必須手動組態或使用
DHCP 組態。
不需要手動組態或 DHCP。有關詳細資訊,請參閱<位址自動組態>。
使用網域名稱系統 (DNS)
中的主機位址 (A)
資源記錄,將主機名稱對應到 IPv4 位址。
使用網域名稱系統 (DNS)
中的主機位址 (AAAA)
資源記錄,將主機名稱對應到 IPv6
位址。有關詳細資訊,請參閱<IPv6 和 DNS>。
使用 IN-ADDR.ARPA DNS
網域中的指標 (PTR) 資源記錄,將 IPv4
位址對應到主機名稱。
使用 IP6.INT DNS
網域中的指標 (PTR) 資源記錄,將 IPv6
位址對應到主機名稱。有關詳細資訊,請參閱<IPv6
和 DNS>。

LAN 媒體上的 IPv6 封包

包含 IPv6 封包的連結層架構由以下結構組成:

  • 連結層標頭和標尾 – 在連結層對 IPv6
    封包進行的壓縮。
  • IPv6 標頭 – 新 IPv6
    標頭。有關詳細資訊,請參閱
  • Payload – IPv6 封包的 payload。有關詳細資訊,請參閱

圖 1 顯示包含 IPv6 封包的連結層架構的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 1 在連結層的 IPv6 封包

對於典型的 LAN 技術,如 Ethernet、Token ring、光纖分散式資料介面
(FDDI),IPv6 封包有兩種壓縮方法:使用 Ethernet II
標頭或者 IEEE 802.3 (Ethernet)、IEEE 802.5 (Token Ring) 和
FDDI 使用的子網路存取通訊協定 (SNAP) 標頭。

Ethernet II 壓縮

使用 Ethernet II 壓縮,透過將 Ethernet II
標頭中的 EtherType 欄位設為 0x86DD 來表示 IPv6;將
EtherType 欄位設定為 0x800 而表示 IPv4。使用 Ethernet
II 壓縮,IPv6 封包最小為 46 位元組,最大為 1,500
位元組。圖 2 顯示 IPv6 封包的 Ethernet II 壓縮。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 2 Ethernet II 壓縮

IEEE 802.3、IEEE 802.5 和 FDDI 壓縮

在 IEEE 802.3 (Ethernet)、IEEE 802.5 (Token Ring) 和 FDDI
網路上,使用子網路存取通訊協定 (SNAP)
標頭,並將 EtherType 欄位設為 0x86DD 來表示 IPv6。圖
3 顯示 SNAP 壓縮。

ipver03

圖 3 用於 IEEE 802.3、IEEE 802.5 和 FDDI 的 SNAP 壓縮

對於使用 SNAP 標頭的 IEEE 802.3 壓縮,IPv6
封包最小為 38 位元組,最大為 1.492
位元組。對於使用 SNAP 標頭的 FDDI 壓縮,IPv6
封包最大為 4,352 位元組。有關 IEEE 802.5 網路中
IPv6 封包最大尺寸的資訊,請參閱 RFC 2470。

Microsoft IPv6 建置

Microsoft 有兩種 IPv6 建置,分別針對 Microsoft
Windows NT 和 Windows 2000:

  1. 有關 Microsoft Research IPv6 Implementation,可瀏覽:http://www.research.microsoft.com/msripv6/
  2. 有關 Microsoft Technology Preview for Windows 2000,可瀏覽:http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp

注意 這兩種 Microsoft IPv6
建置並非發行的產品。它們不用於生產,也不會得到
Microsoft 產品支援服務部門 (PSS)
的任何支援。請瀏覽個別 Web
網址查詢有關報告的錯誤訊息,並將回饋訊息傳送給
Microsoft 產品群組。

Microsoft Systems Management Server (SMS) 2.0 版和 Windows
2000 Server 中隨附的 Microsoft 網路監視器支援 IPv6
通訊擷取和剖析。

Microsoft Research IPv6 Implementation

Microsoft Research IPv6 Implementation 是一個 IPv6
通訊協定,它可在 Windows NT 4.0 和 Windows 2000
上執行。目前還沒有支援 Windows 95、Windows 98 或
Windows CE 的計畫。Microsoft Research IPv6 Implementation
是以單獨的通訊協定執行,包含自己的傳輸控制通訊協定
(TCP) 版本和用戶資料訊息通訊協定 (UDP)
版本。您可以在不影響 IPv4 通訊的情況下測試
IPv6。

Microsoft Research IPv6 Implementation
中包含用於安裝的編譯檔案、來源程式碼以及各種工具和附加檔案。可在
Microsoft Research IPv6 Implementation Web
網址查詢最新版本,以及支援的 IPv6
特性和通訊協定清單。

Microsoft IPv6 Technology Preview for Windows 2000

Microsoft IPv6 Technology Preview for Windows 2000
是一個由 Microsoft Research IPv6 Implementation
衍生出來的通訊協定,它是為應用程式開發人員專門開發的。它可用於
IPv6
的初學者和測試者,最終目的地是能夠將應用程式移植到
IPv6 上執行。顧名思義,Microsoft IPv6 Technology
Preview for Windows 2000 只能安裝到執行 Windows 2000
版本的電腦上。

IPv6 位址設定

IPv6 位址空間

IPv6 的最明顯的特性是使用極大的位址空間。IPv6
中一個位址的大小為 128 位元,是 IPv4 位址的 4
倍。32 位元位址空間允許有 4,294,967,296
個可能的位址。而 128 位元位址空間允許有
340,282,266,920,938,463,463,374,607,431,768,211,465 (或 3.4 x
1038) 個可能的位址。

在七十年代後期規劃 IPv4
位址空間時,很難想像如此大的位址空間竟可能會耗盡!然而,由於技術和配置方法
(未預見到現今 Internet 上主機的爆炸性成長)
的改變,從 1992 年 IPv4
位址空間消耗情況看,使用取代的位址空間勢在必行。

對於 IPv6,則更難想像 IPv6
位址空間會耗盡。為便於您正確地了解這個數字,可以打個比方:128
位元位址空間可為地球表面每平方米提供
655,570,793,348,866,943,898,599 (6.5 x 1023) 個位址。

切記,IPv6 位址決定採用 128
位元並不是要使地球上每平方米提供 6.5 x 1023
個位址。而是將較大的 IPv6
位址細分為具有階層結構的路由網域,以反應現今
Internet 的拓樸結構。使用 128
位元可允許多個層次的階層結構,並且設計具有階層的位址設定和路由方面具有很大的靈活性,這是目前
IPv4 式的 Internet 所沒有的。

RFC 2373 中描述 IPv6 位址設定架構。

目前的配置

與 IPv4 位址空間畫分的方法相似,IPv6
位址空間是根據高序位位元值畫分的。高序位位元及其固定值稱為格式字首
(FP)。

表 2 顯示按 FP 配置的 IPv6 位址空間。

表 2 目前 IPv6 位址空間的配置

配置 格式字首 (FP) 占位址空間的比例
保留 0000 0000 1/256
未指派 0000 0001 1/256
保留給 NSAP 配置 0000 001 1/128
保留給 IPX 配置 0000 010 1/128
未指派 0000 011 1/128
未指派 0000 1 1/32
未指派 0001 1/16
可彙總全域單點傳播位址 001 1/8
未指派 010 1/8
未指派 011 1/8
未指派 100 1/8
未指派 101 1/8
未指派 110 1/8
未指派 1110 1/16
未指派 1111 0 1/32
未指派 1111 10 1/64
未指派 1111 110 1/128
未指派 1111 1110 0 1/512
連結-本機單點傳播位址 1111 1110 10 1/1024
站台-本機單點傳播位址 1111 1110 11 1/1024
多點傳播位址 1111 1111 1/256

IPv6
節點使用的目前單點傳播位址集由可彙總全域單點傳播位址、連結-本機單點傳播位址以及站台-本機單點傳播位址組成。這些僅占整個
IPv6 位址空間的 15%。

IPv6 位址語法

IPv4 位址以點陣十進位格式表示。32
位元位址以 8 位元為界來畫分。每個 8
位元組轉換為對應的十進位,並以句點隔開。對於
IPv6,128 位元位址以 16 位元為界來畫分,每個 16
位區塊轉換為 4
位十六進位數,並以冒號隔開。這樣產生的表示方法稱為冒號十六進位。

以下是二進位型式的 IPv6 位址:

0010000111011010100100001101001100000000010100000010111100111011

0000001010101010000000001111111111111110001010001001110001011010

128 位元位址以 16 位元為界來畫分。

0010000111011010 1001000011010011 0000000001010000
0010111100111011 0000001010101010 0000000011111111
1111111000101000 1001110001011010

每個 16
位元區塊轉換為十六進位,並用冒號隔開。結果是:

 

21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 

透過移除每個 16
位元區塊中的前置零,可進一步簡化 IPv6
表示法。但是,每個區塊必須至少有一個數字。取消前置零後,位址表示為:

 

21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 

零壓縮

有些類型的位址中包含一長串零。要進一步簡化
IPv6 位址的表示,在冒號十六進位格式中設為 0
的一串連續 16 位元區塊可壓縮為「::」。

例如,連結-本機位址 FE80:0:0:0:2AA:FF:FE9A:4CA2
可以壓縮為:FE80::2AA:FF:FE9A:4CA2。多點傳播位址
FF02:0:0:0:0:0:0:2 可以壓縮為:FF02::2。

零壓縮只能用於壓縮一連串連續 的 16
位元區塊 (冒號十六進位表示法)。不能對某個 16
位元區塊的一部分進行零壓縮。例如,您不能將
FF02:30:0:0:0:0:0:5 表示為 FF02:3::5。

要確定有多少個 0 位元可以用「::」表示,您可以數一下壓縮後位址中區塊的個數,用
8 減去此數,然後將結果乘以 16。例如,在位址
FF02::2 中,有 2 個區塊 (「FF02」區塊和「2」區塊)。「::」表示的位元數為:96
(96 = (8 – 2)*16)。

對於給定位址,零壓縮僅能使用一次。否則,就不能確定每個「::」表示
0 位元的個數。

IPv6 字首

字首是位址的一部分,它表示具有固定值的位元或者是網路識別碼的位元。IPv6
字首的表示方法與 IPv4 無類別的網域間路由 (CIDR)
表示法相同。IPv6 字首記為「位址/字首長度」。例如,FE80::2AA:FF:FE9A:4CA2/64
表示位址的前 64
位元是網路字首。字首表示法也用於表示網路或子網路識別碼。例如,21DA:D3::/48
是一個子網路。

帶有字首的節點位址可用於衍生子網路識別碼。例如,從位址和字首
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A/64
所衍生的子網路識別碼為:21DA:D3:0:2F3B::/64。

注意 IPv4
建置通常使用點陣十進位數字表示網路字首 (稱為子網路遮罩)。IPv6
不使用子網路遮罩。IPv6
只支援字首長度表示法。

雖然可以沿位元邊界定義字首,但 IPv6
位址的冒號十六進位表示法以半位元組 (4 位元)
為界。要正確表示一個字首長度不是 4
的倍數的子網路,必須將十六進位轉換為二進位,才能確定適當的子網路識別碼。例如,要表示位址和字首為
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A/59
的子網路,就必須將「2F3B」中的「3」轉換為二進位
(0011),在第 3 個和每 4
個二進位數字之間畫分半位元組,然後轉換回到十六進位。結果子網路識別碼為
21DA:D3:0:2F20::/59。

IPv6 位址類型

有三種類型的 IPv6 位址:

  1. 單點傳播單點傳播位址識別在單點傳播位址類型領域內的單一介面。有了適當的單點傳播路由拓樸,發往單點傳播位址的封包會被傳送到單一介面。為適應負載平衡系統,RFC
    2373
    允許多個介面使用同一位址,只要對主機上的
    IPv6
    建置來說,這些介面可看作是一個介面即可。
  2. 多點傳播多點傳播位址識別多個介面。有了適當的多點傳播路由拓樸,發往多點傳播位址的封包會被傳送到按位址識別的多個介面。
  3. AnycastAnycast
    位址識別多個介面。有了適當的路由拓樸,發往
    Anycast
    位址的封包會被傳送到該位址識別的最鄰近的單一介面。「最鄰近」介面是指路由距離上最近的介面。多點傳播位址用於一對多通訊,即傳送到多個介面。Anycast
    位址用於一對多中之一通訊,傳送到一個介面。

在所有情況下,IPv6
位址識別的都是介面,而不是節點。節點可用指派給它的介面的任一單點傳播位址來識別。

注意 RFC 2373 不定義廣播位址。在 IPv6
上,所有類型的 IPv4
廣播位址設定均使用多點傳播位址。例如,IPv4
子網路和有限廣播位址被連結-本機領域所有節點多點傳播位址
FF02::1 取代。

連結和子網路

與 IPv4 類似,IPv6 子網路字首 (子網 ID)
指派給單一連結。可以將多個子網路 ID
指派給同一連結。這個技術稱為 multinetting。

單點傳播 IPv6 位址

以下位址類型是單點傳播 IPv6 位址:

  • 可彙總全域單點傳播位址
  • 連結-本機位址
  • 站台-本機位址
  • 特殊位址
  • NSAP 和 IPX 位址

可彙總全域單點傳播位址

可彙總全域單點傳播位址 (用等於 001 的 FP
識別) 與公用 IPv4 位址相同。它們在 Internet IPv6
部分上 (稱為 6bone,亦即 IPv6 主幹網路)
可全域路由和連線。

顧名思義,可彙總全域單點傳播位址用於匯總或摘要,以產生有效率的路由基礎結構。目前
IPv4 式的 Internet
既包括階層式路由,又包括非階層式路由,而
IPv6 式的 Internet
與此不同,它是從最基礎的部分起,支援有效率、具有階層結構的位址設定和路由。可彙總全域單點傳播位址的領域是整個
IPv6 Internet,它是 IPv6
網路的一個區域,在此區域內位址是唯一的。

圖 4 顯示可彙總全域單點傳播位址的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 4 可彙總全域單點傳播位址

可彙總全域單點傳播位址的欄位有:

TLA ID – 表示該位址的 Top Level Aggregator (TLA)。該欄位大小為
13 位元。TLA 識別路由階層結構的最高層級。IANA
管理 TLA 並將其配置到本機 Internet
登錄,登錄又將各個 TLA
配置給大型的、長通訊距離的 Internet 服務供應商
(ISP)。13 位元的欄位允許最多 8,192 個不同的 TLA。IPv6
Internet 路由階層結構中的最高層路由器 (稱為無預設路由的路由器)
沒有預設路由 – 僅有具 16
位元字首的路由,與配置的 TLA 對應。

Res – 為將來擴充 TLA ID 或 NLA ID
的大小而保留的位元。此欄位大小為 8 位元。

NLA ID – 表示該位址的 Next-Level Aggregator (NLA)。NLA
ID 用於識別特定的客戶站台。該欄位大小為 24
位元。使用 NLA ID,ISP
可以在網路中建立多層級位址設定階層結構,組織下游
ISP
的位址設定和路由並識別站台。對於無預設路由的路由器來說,ISP
網路的結構是透明的。

SLA ID – 表示該位址的 Site-Level Aggregator (SLA)。SLA
ID
由個別組織使用,來識別其站台內的子網路。該欄位大小為
16 位元。組織在其站台內使用這些 16 位元,建立
65,536
個子網路或多層級位址設定階層結構以及有效率的路由基礎結構。採用
16
位元子網路具有很大的靈活性,指派給組織可彙總全域單點傳播位址字首相當於配置給該組織
IPv4 A 類別網路 ID (假設最後 8
位元組用於識別子網路上的節點)。客戶網路的結構對
ISP 是透明的。

Interface ID –
表示特定子網路上的介面。該欄位大小為 64
位元。

在可彙總全域單點傳播位址中,該欄位建立一個三層級結構,如圖
5 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 5 可彙總全域單點傳播位址的三層級結構

公共拓樸由提供存取 IPv6 Internet 的大大小小的
ISP
組成。站台拓樸由組織站台內的子網路組成。介面識別碼識別組織站台內子網路上的特定介面。有關可彙總全域單點傳播位址的詳細資訊,請參閱
RFC 2374。

本機使用單點傳播位址

本機使用單點傳播位址有兩種類型:

  1. 連結上的相鄰節點以及 Neighbor Discovery
    程序使用的連結-本機位址。
  2. 與同一站台中其它節點通訊的節點所使用的站台-本機位址。

連結-本機位址

當節點與相同連結上的相鄰節點通訊時,使用連結-本機位址
(用等於 1111 1110 10 的 FP 識別)。例如,在沒有路由器的單連結
IPv6 網路中,連結-本機位址用於該連結上主機之間的通訊。連結-本機位址相當於
Microsoft Windows 系統上使用 169.254.0.0/16
字首自動組態的 IPv4 位址。連結-本機位址的領域是本機連結。

連結-本機位址是 Neighbor Discovery
程序所必需的,即使沒有任何其它單點傳播位址也永遠是自動組態的。有關連結-本機位址自動組態程序的詳細資訊,請參閱<位址自動組態>。

圖 6 顯示連結-本機位址的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 6 連結-本機位址

連結-本機位址永遠以 FE80 開始。使用 64
位元介面識別碼,連結-本機位址的字首永遠是
FE80::/64。IPv6 路由器從不將連結-本機位址通訊轉寄到該連結之外。

站台-本機位址

站台-本機位址 (用等於 1111 1110 11 的 FP 識別)
相當於 IPv4 專用位址空間 (10.0.0.0/8、172.16.0.0/12
和 192.168.0.0/16)。例如,如果專用 Intranet 沒有到
IPv6 Internet
直接的、已路由的連線,它可以使用站台-本機位址,而不會與可彙總全域單點傳播位址衝突。其它站台不能存取站台-本機位址,路由器不得將站台-本機位址通訊轉寄到該站台之外。除可彙總全域單點傳播位址外,還可以使用站台-本機位址。站台-本機位址的領域是該站台
(組織網路)。

與連結-本機位址不同,站台-本機位址不能自動組態,必須透過不受管理的或受管理的位址組態程序進來組態。有關詳細資訊,請參閱<位址自動組態>。

圖 7 顯示站台-本機位址的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 7 站台-本機位址

用於站台-本機位址的前 48
位元永遠是固定的,以 FEC0::/48 開始。這 48
個固定位之元後,是 16 位元子網路識別碼 (子網
ID 欄位),您可以用這 16
位建立組織內的子網路。使用 16
位元,您可在非階層式子網路結構中建立最多
65,536 個子網路,或者將其子網路 ID
欄位的高序位位元進一步細分,建立階層式且可彙總的路由基礎結構。在子網路
ID 欄位之後是一個定義子網路上的特定介面的 64
位元 Interface ID 欄位。

對於位址前 48
位以外的結構,可彙總全域單點傳播位址和站台-本機位址是相同的。在可彙總全域單點傳播位址中,SLA
ID 識別組織內的子網路。對於站台-本機位址,子網路
ID
的功能與之相同。因此,您可以建立一個子網路的路由基礎結構,供站台-本機位址和可彙總全域單點傳播位址使用。

特殊 IPv6 位址

以下是特殊的 IPv6 位址:

  • 未指定的位址未指定的位址(0:0:0:0:0:0:0:0 或 ::)
    僅用於表示位址不存在。它相當於 IPv4
    未指定位址 0.0.0.0。對那些要驗證暫時位址唯一性的封包,通常將未指定位址作為它的來源位址。未指定位址絕不能指派給介面,也不能做為目的位址。
  • 迴路位址迴路位址(0:0:0:0:0:0:0:1 或 ::1)
    用於識別迴路介面,使節點得以向自己傳送封包。它相當於
    IPv4 迴路位址 127.0.0.1。發往迴路位址的封包絕不能在連結上傳送,也不能由
    IPv6 路由器轉寄。

相容位址

為了方便從 IPv4 遷移至 IPv6以及兩種類型主機共存,定義以下位址:

  • IPv4 相容位址雙堆疊節點使用 IPv4 相容位址
    0:0:0:0:0:0:w.x.y.z 或 ::w.x.y.z (此處 w.x.y.z 是 IPv4
    位址的點陣十進位表示法) 在 IPv4
    基礎結構上與 IPv6 通訊。雙堆疊節點是具有
    IPv4 和 IPv6 通訊協定的節點。當使用 IPv4
    相容位址做為 IPv6 目的位址時,IPv6
    通訊自動使用 IPv4 標頭進行壓縮,並使用 IPv4
    基礎結構傳送到目的。
  • IPv4 對應位址IPv4 對應位址 0:0:0:0:0:FFFF:w.x.y.z 或 ::FFFF:w.x.y.z
    用來將只用於 IPv4 的節點表示為 IPv6
    節點。它只用於內部表示。IPv4
    對應位址絕不能做為 IPv6
    封包的來源位址或目的位址。

NSAP 位址和 IPX 位址

為提供一種方法將網路服務存取點 (NSAP) 和
Internet 封包交換 (IPX) 位址對應到 IPv6 位址,定義
NSAP 和 IPX 位址。

  • NSAP 位址NSAP 位址使用的 FP 等於 0000001,並將 IPv6
    位址的最後 121 位元對應到 NSAP 位址。有關 4
    種類型 NSAP 位址對應的詳細資訊,請參閱 RFC
    1888。
  • IPX 位址IPX 位址使用的 FP 等於 0000010,並將 IPv6
    位址的最後 121 位元對應到 IPX 位址。IPX
    位址到 IPv6 位址的對應還沒有定義。

多點傳播 IPv6 位址

IPv6 中的多點傳播通訊方式與在 IPv4
中相同。任意配置的 IPv6 節點可以聆聽任意 IPv6
多點傳播位址的多點傳播通訊。IPv6
節點可同時聆聽多個多點傳播位址。節點可以隨時加入或離開多點傳播群組。

IPv6 多點傳播位址的 FP 為 1111111。可以很容易地分出多點傳播
IPv6 位址,因為它永遠以「FF」開始。在 Routing
標頭中,多點傳播位址不能做為來源位址或者
Routing 標頭 的中間目的位址。

除 FP
外,多點傳播位址還包含其它結構,來識別其旗標、領域和多點傳播群組。圖
8 顯示 IPv6 多點傳播位址。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 8 IPv6 多點傳播位址

多點傳播位址的欄位有:

Flags –
表示多點傳播位址上設定的旗標。該欄位大小為
4 位元。正如 RFC 2373 中所述,唯一定義的旗標是
Transient (T) 旗標。T 旗標使用 Flags
欄位的低序位位元。設為 0 時,T
旗標表示多點傳播位址是由 Internet 編號機構 (IANA)
配置的永久性 (眾所周知的) 多點傳播位址。設為
1 時,T 旗標表示多點傳播位址是一個暫時的 (非永久指派的)
多點傳播位址。

Scope – 表示多點傳播通訊針對 IPv6
網路的領域。該欄位大小為 4
位元。除了多點傳播路由通訊協定提供的資訊外,路由器還使用多點傳播領域確定是否可以轉寄多點傳播通訊。

表 3 列出 Scope 欄位定義的值。

表 3 Scope 欄位定義的值

領域
0 保留
1 節點-本機領域
2 連結-本機領域
5 站台-本機領域
8 組織-本機領域
E 全域領域
F 保留

例如,具有多點傳播位址 FF02::2
的通訊具有連結-本機領域。IPv6
路由器從不將此類通訊轉寄到本機連結之外。

Group ID –
識別多點傳播群組,且在其領域內是唯一的。該欄位大小為
112 位元。永久指派的群組 ID
與領域無關。暫時群組 ID 僅與特定領域相關。從
FF01:: 到 FF0F::
之間的多點傳播位址是保留的、眾所周知的位址。

要指定節點-本機領域以及連結-本機領域的所有節點,需要定義以下位址:

  • FF01::1 (節點-本機領域所有節點多點傳播位址)
  • FF02::1 (連結-本機領域所有節點多點傳播位址)

要指定節點-本機領域、連結-本機領域以及站台-本機領域的所有路由器,需要定義以下位址:

  • FF01::2 (節點-本機領域所有路由器多點傳播位址)
  • FF02::2 (連結-本機領域所有路由器多點傳播位址)
  • FF05::2 (站台-本機領域所有路由器多點傳播位址)

由於在 Group ID 中使用了 112 位元,所以可以有
2112 個群組 ID。但是,考慮到 IPv6
多點傳播位址對應到 Ethernet 多點傳播 MAC
位址的方式,RFC 2373 建議從 IPv6
多點傳播位址的低序位 32 位元開始指派 Group ID,並將剩餘的原始群組
ID 位元設為 0。透過只使用低序位 32
位元,每個群組 ID 均對應到唯一的 Ethernet
多點傳播 MAC 位址。圖 9 顯示修改後的 IPv6
多點傳播位址。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 9 修改後的 IPv6 多點傳播位址 (使用 32
位元群組 ID)

請求節點位址

在位址解析程序中,使用請求節點位址可便於更有效率地查詢網路節點。在
IPv4 中,ARP Request 訊框傳送到 MAC
級廣播,對網段上所有節點均有影響,包括那些沒有執行
IPv4 的節點。IPv6 使用 Neighbor Discovery
訊息執行這個功能。但是,並不將連結-本機領域多點傳播位址做為
Neighbor Solicitation
訊息目的位址,而使用請求節點多點傳播位址,前者會干擾本機連結上的所有
IPv6 節點。請求節點多點傳播位址由字首
FF02::1:FF00:0/104 和要解析的 IPv6 位址的最後 24
位元組成。

例如,對於連結-本機 IPv6 位址為
FE80::2AA:FF:FE28:9C5A
的節點,對應的請求節點位址為 FF02::1:FF28:9C5A。要將
FE80::2AA:FF:FE28:9C5A
位址解析為其連結層位址,節點可以向請求節點位址
FF02::1:FF28:9C5A 傳送一個 Neighbor Solicitation。使用
FE80::2AA:FF:FE28:9C5A
位址的節點聆聽在請求節點位址的多點傳播通訊;對於與實體網路配接卡對應的介面,該節點使用網路配接卡註冊對應的多點傳播位址。

使用請求節點多點傳播位址後,位址解析 (連結上的常見事件)
不需要使用影響所有網路節點的機制。透過使用請求節點位址,在位址解析程序中,沒有幾個節點會受到影響。實際上,由於
Ethernet MAC 位址、介面 ID
以及請求節點位址之間的聯繫,請求節點位址扮演的是類似單點傳播位址的角色,便於有效地進行位址解析。

Anycast IPv6 位址

Anycast
位址指派給多個介面。路由基礎結構將目的位址為
Anycast 位址的封包轉寄到指派給該 anycast
位址的最鄰近介面。為便於傳輸,路由基礎結構必須能夠識別介面指派的
anycast 位址以及知道它們的距離 (按路由數計)。目前,anycast
位址僅做為目的位址,並且只指派給路由器。Anycast
位址從單點傳播位址空間指派,anycast
位址的領域就是指派該位址的單點傳播位址類別的領域。

子網-路由器 anycast
位址是預先定義的,也是必需的。它是從給定介面的子網路字首建立的。要構建子網-路由器
anycast
位址,子網路字首中的位元固定為適當的值,其餘的位元設為
0。圖 10 顯示子網路-路由器 anycast 位址。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 10 子網路-路由器 Anycast 位址

與子網路相連的所有路由器介面均指派該子網路的子網路-路由器
anycast 位址。子網路-路由器 anycast
位址用於與遠端子網路相連的多個路由器之一通訊。

主機的 IPv6 位址

具有單一網路配接卡的 IPv4
主機通常有一個指派給該配接卡的 IPv4
位址。但是,IPv6 主機通常有多個 IPv6 位址 –
即使只有一個介面。可指派 IPv6
主機以下單點傳播位址:

  • 每個介面的連結-本機位址
  • 每個介面的單點傳播位址 (可以是站台-本機位址,或者一個或多個可彙總全域單點傳播位址)
  • 迴路位址 (::1)

典型的 IPv6 主機是多宿主 (有多個介面或位址)
主機,因為它有至少 2 個位址來接收封包 – 連結-本機位址
(用於本機連結通訊) 和可路由的站台-本機位址或可彙總位址。

此外,每個主機在以下多點傳播位址聆聽傳輸:

  • 節點-本機領域所有節點多點傳播位址
    (FF01::1)
  • 連結-本機領域所有節點多點傳播位址
    (FF02::1)
  • 每個單點傳播位址的請求節點位址
  • 結合群組的多點傳播位址

路由器的 IPv6 位址

IPv6 路由器可指派以下單點傳播位址:

  • 每個介面的連結-本機位址
  • 每個介面的單點傳播位址 (可以是站台-本機位址,或者一個或多個可彙總全域單點傳播位址)
  • 子網路-路由器 anycast 位址
  • 其它 anycast 位址(選擇性)
  • 迴路位址 (::1)

此外,每個路由器在以下多點傳播位址聆聽傳輸:

  • 節點-本機領域所有節點多點傳播位址
    (FF01::1)
  • 節點-本機領域所有路由器多點傳播位址
    (FF01::2)
  • 連結-本機領域所有節點多點傳播位址
    (FF02::1)
  • 連結-本機領域所有路由器多點傳播位址
    (FF02::1)
  • 站台-本機領域所有路由器多點傳播位址
    (FF05::2)
  • 每個單點傳播位址的請求節點位址
  • 結合群組的多點傳播位址

IPv6 介面識別碼

所有使用字首 001 到 111 的位址還必須使用 64
位元介面識別碼,該識別碼是從 EUI-64
位址衍生而來的。64 位元 EUI-64
位址是由電氣和電子工程師學會 (IEEE) 定義的。EUI-64
位址或者是指派給網路配接卡,或者是從 IEEE 802
位址衍生而來的。

注意 本白皮書根據 RFC 2373 討論 IPv6
介面識別碼的衍生。為了解決隱私權問題,Internet
草案 “Privacy Extensions for Stateless Address
Autoconfiguration in IPv6” 中討論 IPv6
介面識別碼另一種衍生方法(隨時間改變)。

IEEE 802 位址

傳統的網路配接卡介面識別碼使用 48
位元位址,稱為 IEEE 802 位址。它由 24 位元公司
ID (也稱為製造商 ID) 和 24 位元擴充 ID (也稱為主板
ID) 組成。結合使用公司 ID (唯一指派給每個網路配接卡製造商的公司
ID) 和主板 ID (在組裝時唯一指派給每個網路配接卡的主板
ID),可以產生全球唯一的 48 位元位址。此 48
位元位址也稱為實體、硬體或媒體存取控制 (MAC)
位址。

圖 11 顯示 48 位元 IEEE 802 位址的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 11 48 位元 IEEE 802 位址

在 IEEE 802 位址中定義的位元有:

全域/本機 (U/L) –
第一個位元組中的次低序位位元,用來表示位址是總體管理還是在本機管理。如果
U/L 位元設為 0,則使用唯一公司 ID 的 IEEE
管理此位址。如果 U/L 位元設為 1,該位址在本機管理。網路管理員已覆寫製造商位址,並指定不同的位址。U/L
位元在圖 11 中由 u 指定。

個別/群組 (I/G) –
第一個位元組的低序位位元,用於表示位址是個別位址
(單點傳播),還是群組位址 (多點傳播)。設為 0
時,位址是單點傳播位址。設為 1
時,位址是多點傳播位址。I/G 位元在圖 11 中由 g
指定。

對於典型的 802.x 網路配接卡位址,U/L 和 I/G
位元均設為 0,以與總體管理的單點傳播 MAC
位址對應。

IEEE EUI-64 介面識別碼

IEEE EUI-64
位址代表網路介面位址設定的新標準。公司 ID
仍為 24 位元,但擴充 ID 為 40
位元,為網路配接卡製造商產生更多的位址空間。EUI-64
位址使用 U/L 和 I/G 位元的方式與 IEEE 802
位址相同。

圖 12 顯示 EIU-64 位址的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 12 EUI-64 位址

將 IEEE 802 位址對應到 EIU-64 位址

要從 IEEE 802 位址建立 EUI-64 位址,就需要將 16
位元 11111111 11111110 (0xFFFE) 插入到公司 ID 和擴充
ID 之間的 IEEE 802 位址中,如圖 13 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 13 IEEE 802 位址到 EUI-64 位址的轉換

取得 IPv6 位址的介面識別碼

要取得 IPv6 單點傳播位址的 64
位元介面識別碼,就需要對 EUI-64 位址中的 U/L
位元進行取補數操作 (如果它為 1,則將它設為 0;如果它為
0,則將它設為 1)。圖 14
顯示總體管理的單點傳播 EUI-64
位址的轉換程序。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 14 總體管理的單點傳播 EUI-64 位址到 IPv6
介面識別碼的轉換

要從 IEEE 802 位址獲得 IPv6
介面識別碼,必須先將 IEEE 802 位址對應到 EUI-64
位址,然後對 U/L 位元進行取補數操作。圖 15
顯示總體管理的單點傳播 IEEE 802
位址的轉換程序。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 15 總體管理的單點傳播 IEEE 802 位址到 IPv6
介面識別碼的轉換

IEEE 802 位址轉換範例

主機 A 有 Ethernet MAC 位址 00-AA-00-3F-2A-1C。首先,它在第
3 和第 4 個位元組之間插入 FF-FE,從而轉換為
EUI-64 格式,結果是:00-AA-00-FF-FE-3F-2A-1C。然後,對
U/L 位元 (它是第 1 個位元組的第 7 位元)
進行取補數操作。第 1
個位元元組的二進位元格式為 00000000。對第 7
位元取補數後,它就變成 00000010 (0x02)。最終結果是
02-AA-00-FF-FE-3F-2A-1C,以冒號十六進位元表示時,則變成
2AA:FF:FE3F:2A1C。因此,與 MAC 位址為 00-AA-00-2A-1C
的網路配接卡對應的連結-本機位址是:FE80::2AA:FF:FE3F:2A1C。

注意 對 U/L
位元取補數後,如果位址是總體管理的,則會將
0x2 加入到第 1
個位元組中;如果位址是本機管理的,則會從第
1 個位元組中減掉 0x2。

將 IPv6 多點傳播位址對應到 Ethernet 位址

在 Ethernet 連結上傳送 IPv6
多點傳播封包時,對應的目的 MAC 位址為
33-33-mm-mm-mm-mm,此處 mm-mm-mm-mm 是 IPv6
多點傳播位址後 32 位元的直接對應,如圖 16
所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 16 IPv6 多點傳播位址到 Ethernet 多點傳播 MAC
位址的對應

為在 Ethernet 連結上有效地接收 IPv6
多點傳播封包,Ethernet
配接卡可在其上的一個資料表格中儲存其它相關的
MAC 位址。如果收到具有相關 MAC 位址的 Ethernet
訊框,就會將它傳送到上層進一步處理。對於該主機聆聽的每個多點傳播位址,在相關
MAC 位址的表中都會有對應的項目。

例如,Ethernet MAC 位址為 00-AA-00-3F-2A-1C (連結-本機位址為
FE80::2AA:FF:FE3F:2A1C) 的主機使用 Ethernet
配接卡註冊以下多點傳播 MAC 位址:

  • 位址 33-33-00-00-00-01,與連結-本機領域所有節點多點傳播位址
    FF02::1 對應。
  • 位址 33-33-FF-3F-2A-1C,與請求節點位址
    FF02::1:FF3F:2A1C
    對應。切記,請求節點位址由字首
    FF02::1:FF00:0/104 和單點傳播 IPv6 位址的最後 24
    位元組成。

可根據需要,在 Ethernet
配接卡上的相關位址表中新增或移除主機在其上聆聽的其它多點傳播位址。

IPv6 和 DNS

RFC 1886 中描述 IPv6 中對網域名稱系統 (DNS)
所做的改進,這些改進包括以下新的要素:

  • 主機位址 (AAAA) 資源記錄
  • 反向查詢使用的 IP6.INT 網域

主機位址 (AAAA) 資源記錄

AAAA (稱為 4 A) 是一種新的 DNS
資源記錄類型,用於將完整的網域名稱解析為
IPv6 位址。它相當於 IPv4 使用的主機位址 (A)
資源記錄。此資源記錄類型叫做 AAAA (類型值為
28),是因為 128 位元 IPv6 位址是 32 位元 IPv4
位址的 4 倍大。以下是 AAAA
資源記錄的一個範例:

 

host1.microsoft.com IN AAAA FEC0::2AA:FF:FE3F:2A1C 

對於特定主機名稱,主機必須指定 AAAA
查詢或者一般查詢,以便在 DNS
查詢應答部分獲得 IPv6 位址解析資料。

IP6.INT 網域

建立 IP6.INT 網域,是用於 IPv6
反向查詢。反向查詢也稱為指標查詢,它確定根據
IP
位址的主機名稱。要建立反向查詢的名稱空間,在完整表示的
32 位元 IPv6
位址中的每個十六進位元數字就必須變成反向網域階層結構中各自分離的層級
(反向順序)。

例如,位址 FEC0::2AA:FF:FE3F:2A1C (完全表示為
FEC0:0000:0000:0000:02AA: 00FF:FE3F:2A1C)
的反向尋找網域名稱為:

 

C.1.A.2.F.3.E.F.F.F.0.0.A.A.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.C.E.F.IP6.INT。 

RFC 1886 中描述對 DNS
的支援,提出一種簡單的方法,將主機名稱對應到
IPv6
位址,並提供反向名稱解析。但是,這個支援並不提供將這些更新傳播到
AAAA
記錄的簡便方法,這是由於站台重新編號或者在任意位元邊界上指派反向尋找區域
( IP6.INT 以半位元組為界)。這些問題可使用一個新的「A6」資源記錄來解決,Internet
草案 “DNS Extensions to Support IPv6 Address Aggregation
and Renumbering” 中有詳細闡述。

IPv4 位址和 IPv6 相等位址

表 4 列出 IPv4 位址和位址設定概念以及 IPv6
的相等位址。

表 4 目前配置的 IPv6 位址空間

IPv4 位址 IPv6 位址
Internet 位址類別 IPv6 中未建置
多點傳播位址
(224.0.0.0/4)
IPv6 多點傳播位址
(FF00::/8)
廣播位址 >IPv6 中未建置
未指定位址為 0.0.0.0 未指定位址為 ::
迴路位址為 127.0.0.1 迴路位址為 ::1
公用 IP 位址 可彙總全域單點傳播位址
專用 IP 位址 (10.0.0.0/8、172.16.0.0/12
和 192.168.0.0/16)
站台-本機位址 (FEC0::/48)
自動組態的位址
(169.254.0.0/16)
連結-本機位址 (FE80::/64)
文字表示:點陣十進位表示法 文字表示:冒號十六進位格式
(取消前置零和零壓縮)。IPv4
相容位址以點陣十進位表示法表示。
網路位元表示:以點陣十進位表示法或字首長度表示的子網路遮罩 網路位元表示:僅使用字首長度表示法
DNS 名稱解析:IPv4
主機位址 (A) 資源記錄
DNS 名稱解析:IPv6
主機位址 (AAAA) 資源記錄
DNS 反向解析:IN-ADDR.ARPA
網域
DNS 反向解析:IP6.INT
網域

IPv6 標頭

IPv6 標頭是 IPv4
標頭的簡化版本。它刪除不必要或很少使用的欄位,並增加對即時通訊提供更好支援的欄位。回顧
IPv4 標頭有助於了解 IPv6 標頭。

IPv4 標頭

圖 17 顯示 IPv4 標頭 (見 RFC 791 中所述)。

ipver17

圖 17 IPv4 標頭

IPv4 標頭中的欄位有:

Version – 表示 IP 版本號碼,並設為 4。該欄位大小為
4 位元。

Internet Header Length – 表示 IP 標頭中 4
位元組區塊的數量。該欄位大小為 4 位元。因為
IP 標頭至少為 20 位元組,所以 Internet Header Length
欄位 (IHL) 最小值為 5。IP 選項可以按每 4
個位元組來擴充最小 IP 標頭大小。如果 IP
選項未使用 IP 選項欄位中的所有 4
位元組,則其餘位元組填為 0,整個 IP
標頭就是一個 32 位元的整數 (4 位元組)。使用最大值
0xF,則包括選項在內的 IP 標頭最大為 60 位元組
(15*4)。

Type of Service – 表示在 IP
網路中透過路由器傳輸封包所需的服務。此欄位大小為
8
位元,包含優先順序、延遲、輸貫量以及可靠性特性的位元。

Total Length – 表示 IP 封包的總長度 (IP 標頭 + IP
payload),不包括連結層訊框。該欄位大小為 16
位元,可表示最多為 65,535 位元組長的一個 IP
封包。

Identification – 識別特定 IP 封包。該欄位大小為
16 位元。Identification 欄位由 IP
封包的來源節點選定。如果 IP
封包有分段,所有資料片段均保持此識別欄位值,這樣目的節點可以將這些資料片段分組以便重新組裝。

Flags – 識別重組程序的旗標。該欄位大小為 3
位元,但是,目前只定義 2 位元。有 2 個旗標 –
一個表示 IP
封包是否可以分段;另一個表示目前資料片段後面是否還有其它資料片段。

Fragment Offset – 指定資料片段相對於來源 IP
payload 的位置。該欄位大小為 13 位元。

Time to Live – 指定 IP
封包在丟棄前可傳送的最大連結數。該欄位大小為
8 位元。Time to Live 欄位 (TTL)
最初是做為時間計數,IP
路由器使用它對應地遞減 TTL 以確定轉寄 IP
封包所需的時間 (以秒計)。現今路由器幾乎總是在不到
1 秒鐘內就轉寄一個 IP 封包,RFC 791
要求它至少將 TTL 減 1。因此,TTL
變成最大連結計數,其值由傳送節點設定。TTL
等於 0 時,封包會被丟棄,且 ICMP
到期訊息會被傳送到來源 IP 位址。

Protocol – 指定上層通訊協定。該欄位大小為 8
位元。例如,TCP 使用 Protocol 6,UDP 使用 Protocol 17,ICMP
使用 Protocol 1。Protocol 欄位用來將一個 IP
封包多路分解到上層通訊協定。

Header Checksum – 只在 IP
標頭上提供檢查值。該欄位大小為 16
位元。在檢查值評估中並不包括 IP payload,因為
IP payload 通常含有自己的檢查值。每個接收 IP
封包的 IP 節點檢驗 IP
標頭檢查值,如果檢查值檢驗失敗,就會丟棄 IP
封包,而顯示任何提示。當路由器轉寄 IP
封包時,必須遞減 TTL。因此,在來源和目的之間的每一躍點均重新評估標頭檢查值。

Source Address – 存放原始主機的 IP
位址。該欄位大小為 32 位元。

Destination Address – 存放目的主機的 IP
位址。該欄位大小為 32 位元。

Options – 存放一個或多個 IP
選項。該欄位的位元數是 32 的倍數。如果 IP
的一個或多個選項未完全使用 32
位元,則必須填滿其餘位元,使 IP
標頭是一個可由 Internet Header Length 欄位表示的 4
位元組區塊整數。

IPv6 封包結構

圖 18 顯示 IPv6 封包的結構。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 18 IPv6 封包的結構

IPv6 標頭

IPv6 標頭永遠存在且為固定值 40
位元組。本白皮書稍後詳細描述 IPv6
標頭中的欄位。

擴充標頭

可以有零或多個擴充標頭,且長度可變。IPv6
標頭中的 Next Header
欄位表示下一個擴充標頭。在每個擴充標頭中還另有一個
Next Header
欄位,表示下一個擴充標頭。最後的擴充標頭表示在上層通訊協定資料單元中包含的上層通訊協定
(如 TCP、UDP 或 ICMPv6)。

IPv6 標頭和擴充標頭取代現有的、具有選項的
IPv4 IP 標頭。使用新的擴充標頭格式,可增加 IPv6
以支援將來的需求總和容量。與 IPv4
標頭中的選項不同,IPv6
擴充標頭沒有最大尺寸,因此可以擴充以存放
IPv6 通訊所需的所有擴充資料。

上層通訊協定資料單元

上層通訊協定資料單元 (PDU)
通常由上層通訊協定標頭及其 payload (如 ICMPv6
訊息、UDP 訊息或者 TCP 區段) 組成。

IPv6 封包 payload 由 IPv6 擴充標頭和上層 PDU
組成。通常,它最多可連線 65,535
位元組。長度多於 65,535 位元組的 payload 可使用
Hop-by-Hop 選項擴充標頭中的 Jumbo Payload
選項來傳送。

IPv6 標頭

圖 19 顯示 IPv6 標頭 (在 RFC 2460 中定義)。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 19 IPv6 標頭

IPv6 標頭中的欄位有:

版本 – 其長度為 4 位元,用於表示 IP
的版本,設定為 6。

Traffic Class – 表示 IPv6
封包的類別或優先順序。該欄位大小為 8 位元。Traffic
Class 欄位的功能與 IPv4 的 Type of Service
欄位類似。在 RFC 2460 中,未定義 Traffic Class
欄位的值。但是,IPv6
建置需要提供應用層通訊協定一種指定 Traffic
Class 欄位的值以進行測試的方法。

Flow Label –
指定此封包屬於來源和目的之間的一組特定的封包,要求中間
IPv6 路由器進行特殊處理。該欄位大小為 20
位元。Flow Label
用於非預設服務連線品質,如即時資料 (聲音和視訊)
所需的連線。對於預設路由器處理,Flow Label
設為 0。在來源和目的之間可以有多個流,分別使用不同的非零
Flow Label 來區分。

Payload Length – 指定 IP payload
長度。該欄位大小為 16 位元。Payload Length
欄位包括擴充標頭和上層 PDU。使用 16
位元,可表示最多 65,535 位元組的 IPv6 payload。對於大於
65,535 位元組的 payload,Payload Length 欄位設為 0,並在
Hop-by-Hop 選項擴充標頭中使用 Jumbo payload 選項。

Next Header – 指定第一個擴充標頭 (如果有的話)
或上層 PDU (如 TCP、UDP 或 ICMPv6)
中的通訊協定。該欄位大小為 8 位元。當表示
Internet 層之上的一個上層通訊協定時,使用與
IPv4 通訊協定欄位中相同的值。

Hop Limit – 指定在丟棄 IPv6
封包前可傳送的最大連結數。該欄位大小為 8
位元。Hop Limit 與 IPv4 TTL
欄位相似,所不同的是,它與路由器處封包佇列已等待的時間
(以秒計) 沒有歷史關連。Hop Limit 等於 0
時,封包被丟棄,且 ICMP
到期訊息會被傳送到來源位址。

Source Address – 存放原始主機的 IPv6
位址。該欄位大小為 128 位元。

Destination Address – 存放目前目的主機的 IPv6
位址。該欄位大小為 128 位元。大多數情況下,Destination
Address
設為最終的目的位址。但是,如果存在路由擴充標頭,Destination
Address
就可能設定為來源路由清單中的下一個路由器介面。

Next Header 欄位的值

表 5 顯示 IPv6 標頭或 IPv6 擴充標頭的 Next Header
欄位的典型數值。

表 5 Next Header欄位的值

值 (十進位) 標頭
0 Hop-by-Hop 選項標頭
6 TCP
17 UDP
41 壓縮的 IPv6 標頭
43 Routing 標頭
44 Fragment 標頭
46 來源保留通訊協定
50 Encapsulating Security Payload
51 Authentication 標頭
58 ICMPv6
59 No next header
60 Destination Options 標頭

IPv4 和 IPv6 標頭的比較

表 6 顯示 IPv4 和 IPv6 標頭欄位之間的差異。

表 6 IPv4 標頭欄位和對應的 IPv6 標頭欄位

IPv4 標頭欄位 IPv6 標頭欄位
Version 欄位相同,但版本號碼不同。
Header Length 在 IPv6 中已刪除。 IPv6
中沒有 Header Length 欄位,因為 IPv6
標頭永遠是固定值 40 位元組。
每一擴充標頭或是固定值,或者指定各自的大小。
Type of Service 在 IPv6 中,用 Traffic
Class 欄位取代。
Total Length 在 IPv6 中,用 Payload
Length 欄位來取代,僅表示 payload 的大小。
Identification 在 IPv6 中已刪除。在
IPv6
標頭中沒有資料片段資訊。它包含在資料片段擴充標頭中。
Fragmentation Flags 在 IPv6 中已刪除。在
IPv6
標頭中沒有資料片段資訊。它包含在資料片段擴充標頭中。
Fragment Offset 在 IPv6 中已刪除。在
IPv6
標頭中沒有資料片段資訊。它包含在資料片段擴充標頭中。
Time to Live 在 IPv6 中,用 Hop Limit
欄位取代。
Protocol 在 IPv6 中,用 Next Header
欄位取代。
Header Checksum 在 IPv6 中已刪除。在
IPv6 中,由連結層對整個 IPv6
封包進行位元級的錯誤偵測。
Source Address 欄位相同,所不同的是
IPv6 位址長度為 128 位元。
Destination Address 欄位相同,所不同的是
IPv6 位址長度為 128 位元。
Options 在 IPv6 中已刪除。IPv4
選項由 IPv6 擴充標頭取代。

IPv6 擴充標頭

IPv4
標頭包括所有選項。因此,每個中間路由器必須檢查其是否存在,如存在則進行處理。它會引起
IPv4 封包轉寄效能下降。對於 IPv6,傳輸和轉寄選項均移到擴充標頭中。唯一需要在每個中間路由器都處理的擴充標頭是
Hop-by-Hop Option 擴充標頭。這可提高 IPv6
標頭處理速度,並改進轉寄程序的效能。

RFC 2460 定義以下所有 IPv6 節點須支援的 IPv6
擴充標頭:

  • Hop-by-Hop Option 標頭
  • Destination Options 標頭
  • Routing 標頭
  • Fragment 標頭
  • Authentication 標頭
  • Encapsulating Security Payload 標頭

在典型的 IPv6
封包中,沒有擴充標頭。如果中間路由器或者目的主機需要進行特殊處理,傳送主機就會加入一個或多個擴充標頭。

每個擴充標頭必須以 64 位元 (8 位元組)
為界。擴充標頭大小不等,它包含一個 Header
Extension Length
欄位,需要時必須使用填滿,以確保其大小為 8
位元組的倍數。

圖 20 顯示 IPv6 標頭中的 Next Header
欄位以及形成一串指標的零個或多個擴充標頭。每個指標表示與一個標頭直接相鄰標頭的類型,直到最後找到更高層通訊協定為止。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 20 IPv6 擴充標頭

擴充標頭順序

擴充標頭的處理是按照它們出現的順序進行的。因為
Hop-by-Hop Options
標頭是唯一被路徑上每個節點都處理的擴充標頭,所以它必須排在第
1 位。其它擴充標頭也使用相似的規則。在 RFC
2460 中,建議將擴充標頭按以下順序放在 IPv6
標頭中:

  1. Hop-by-Hop Options 標頭
  2. Destination Options 標頭 (當存在 Routing 標頭
    時,用於中間目的主機)
  3. Routing 標頭
  4. Fragment 標頭
  5. Authentication 標頭
  6. Encapsulating Security Payload 標頭
  7. Destination Options 標頭 (用於最終目的)

Hop-by-Hop Options 標頭

Hop-by-Hop Options
標頭用於指定到目的的路徑上每個躍點處的參數。可將
IPv6 標頭 Next Header 欄位中的值設為 0 來識別。圖
21 顯示 Hop-by-Hop Options 標頭。

ipver21

圖 21 Hop-by-Hop Option 標頭

Hop-by-Hop Options 標頭由 Next Header 欄位、Header
Extension Length 欄位以及 Options 欄位 (包含一個或幾個選項)
組成。Header Extension Length 欄位的值是 Hop-by-Hop
Options 擴充標頭中 8
位元組區塊的數量,不包括第 1 個 8
位元組。因此,對於 8 位元組 Hop-by-Hop Options
標頭,Header Extension Length 欄位的值為 0。填滿選項用於確保
8 位元組邊界。

一個選項就是 Hop-by-Hop Options
標頭中的一個標頭,描述封包傳輸的具體特性,或者提供填滿。每個選項均使用
TCP/IP 通訊協定中常用的類型-長度-值 (TLV)
格式進行編碼。選項類型既識別該選項,也決定處理節點處置該選項的行為。選項長度指定了該選項的長度。選項值是與該選項有關的資料。

RFC 2460、2675 和 2711 定義以下選項:

  • Pad1 選項 (Option Type 為 0)
    用於填滿單一位元組。
  • PadN 選項 (Option Type 為 1) 用於填滿 2
    個或更多位元組。
  • Jumbo Payload 選項 (Option Type 為 194)
    用於指定大於 65,535 位元組的 payload
    的大小。使用 Jumbo Payload 選項,可使用 32
    位元 Jumbo Payload Length 欄位指定最多 4,294,967,295
    位元組的 payload 大小。Payload 大小大於 65,535
    位元組的 IPv6 封包稱為 jumbogram。
  • Router Alert 選項 (Option Type 為 5),它告知路由器封包的內容還需要進一步處理。Router
    Alert 選項用於 Multicast Listener Discovery 和 Resource
    ReServation Protocol (RSVP)。

Destination Options 標頭

Destination Options
標頭用於指定中間目的或最終目的主機的封包傳輸參數。可在上一個標頭的
Next Header 欄位中將值設為 60 來識別此標頭。圖 22
顯示 Destination Options 標頭。

ipver22

圖 22 Destination Options 標頭

Destination Options 標頭中欄位的定義與 Hop-by-Hop
Options 標頭相同。

Destination Options 標頭有兩種使用方式:

  1. 如果存在 Routing
    標頭,則指定每個中間目的主機的傳輸或處理選項。
  2. 也指定最終目的主機的傳輸或處理選項。

Routing 標頭

與 IPv4 支援的來源路由相似,IPv6
來源節點可以使用 Routing
擴充標頭指定來源路由,它是封包通往最終目的主機的路徑上通過的中間目的主機的清單。可在上一個標頭的
Next Header 欄位中將值設為 43 來識別 Routing 標頭。

Routing 標頭由 Next Header 欄位、Header Extension
Length 欄位 (定義方法與 Hop-by-Hop Options
擴充標頭相同)、Routing Type 欄位、Segments Left
欄位以及路由類型特有的資料組成。

對於 Routing Type 0 (在 RFC 2460 中定義),路由類型特有的資料是一系列中間目的位址。當
IPv6 封包到達中間目的主機時,Routing
標頭會經過處理,下一中間目的位址 (根據
Segments Left 欄位的值) 變成 IPv6
標頭中的目的位址。

圖 23 顯示 Routing Type 0 的 Routing 標頭。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 23 Routing Type 0 的 Routing 標頭

Fragment 標頭

Fragment 標頭用於 IPv6
分段以及重新組裝服務。可在上一個標頭的 Next
Header 欄位中將值設為 44 來識別此標頭。圖 24
顯示 Fragment 標頭。

ipver24

圖 24 Fragment 標頭

Fragment 標頭 包括 Next Header 欄位、13 位元
Fragment Offset 欄位、More Fragments 旗標以及 32 位元
Identification 欄位。Fragment Offset 欄位、More Fragments
旗標以及 Identification 欄位與 IPv4
標頭中對應欄位的使用方法相同。由於將 Fragment
Offset 欄位指定用於 8 位元組段資料區塊,因此
Fragment 標頭不能用於 IPv6 jumbogram。

在 IPv6 中,只有來源節點可對payload
進行分段。如果上層通訊協定提交的 payload
大於連結或路徑 MTU,IPv6 就會在來源位址對
payload 進行分段,並使用 Fragment
欄位擴充標頭提供重新組裝資訊。

在將 IPv6
封包分段時,最初是將它分成不可分段部分和可分段部分:

  • 對於來源 IPv6
    封包的不可分段部分,分段節點和目的之間的每個中間節點都必須對它進行處理。此部分由
    IPv6 標頭、Hop-by-Hop Options 標頭、中間目的的
    Destination Options 標頭以及 Routing 標頭組成。
  • 來源 IPv6
    封包的可分段部分必須在最終目的節點進行處理。這一部分由
    Authentication 標頭、Encapsulating Security Payload
    標頭、最終目的的 Destination Options
    標頭以及上層 PDU 組成。

然後,就形成了 IPv6
片段封包。每一片段封包都由不可分段的部分、Fragment
標頭以及一部分可分段的部分組成。

圖 25 顯示 IPv6 封包的分段程序。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 25 IPv6 分段程序

Authentication 標頭

Authentication 標頭為 IPv6 封包提供資料驗證 (對傳送該封包的節點進行驗證)、資料完整性
(確認傳輸程序中資料沒有被修改)
以及防重播保護 (確保擷取的封包不被重新傳閱並接受為有效的資料)。Authentication標頭
(在 RFC 2402 描述) 是 RFC 2401 中定義的 IP
安全體系結構的一部分。

可在上一個標頭的 Next Header 欄位中將值設為 51
來識別 Authentication 標頭。圖 26 顯示Authentication
標頭。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 26 Authentication 標頭

Authentication 標頭包含 Next Header 欄位、Header
Length 欄位、Security Parameter Index (SPI) 欄位、Sequence
Number 欄位以及 Authentication Data 欄位組成,其中,SPI
欄位指定特定的 IP 安全性 (IPSec) 安全相關 (SA);Sequence
Number 欄位提供防重播保護;Authentication Data
欄位包含完整性檢查值 (ICV)。ICV
提供資料驗證和完整性。

Authentication
擴充標頭並不透過加密資料來提供資料保密性服務。要提供該服務,可將
Authentication 標頭 和 Encapsulating Security Payload (ESP)
標頭一起使用。

有關 Authentication
標頭如何使用加密技術提供資料驗證和完整性的細節,不在本白皮書討論之列。有關詳細資訊,請參閱
RFC 2402。

Encapsulating Security Payload 標頭和標尾

Encapsulating Security Payload (ESP)
標頭和標尾為壓縮的 payload
提供資料保密性、資料驗證和資料完整性服務。相反的,Authentication
標頭為整個 IPv6
封包提供資料驗證和完整性服務。可在上一個標頭的
Next Header 欄位中將值設為 50 來識別 ESP
標頭和標尾。圖 27 顯示 ESP 標頭和標尾。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 27 ESP 標頭和標尾

ESP 標頭包含 Security Parameter Index (SPI) 欄位 (指定
IPSec SA) 以及 Sequence Number 欄位 (提供防重播保護)。ESP
標尾包含 Padding、Padding Length、Next Header 以及
Authentication Data 各欄位。Authentication Data
欄位包含完整性檢查值 (ICV)。

有關 ESP
擴充標頭和標尾如何使用加密技術提供資料保密性、資料驗證和完整性的細節,不在本白皮書討論之列。有關詳細資訊,請參閱
RFC 2406。

IPv6 MTU

IPv6 要求連結層支援 IPv6 封包的最小尺寸為 1280
位元組。那些不支援這一最小尺寸的連結層,必須提供連結層分段和對
IPv6 透明的重新組裝架構。對於支援可組態 MTU
大小的連結層,建議將它們組態為 MTU
大小至少為 1500 位元組 (Ethernet II 壓縮 IPv6 MTU)。可組態
MTU 的一個例子是點對點通訊協定 (PPP)
連結的最大接收單元 (MRU)。

與 IPv4 相似,IPv6 使用 ICMPv6 Packet Too Big
訊息,執行 Path MTU Discovery 程序,如 “Path MTU
Discovery” 中所述。Path MTU Discovery
允許傳輸大於 1280 位元組的 IPv6 封包。

IPv6 來源主機可以使用上述程序和 Fragment 標頭
將大於路徑 MTU 的上層通訊協定 payload
分段。但是,使用 IPv6 分段的效果極差。IPv6
節點必須能夠重新組裝至少為 1500
位元組的分段封包。

上層檢查值

目前 IPv4 TCP 和 UDP
建置將一個偽標頭加入到其檢查值評估中,該標頭包含
IPv4 Source Address 和 Destination Address 欄位。對於在
IPv6 上傳送的 TCP 和 UDP
通訊,必須修改檢查值評估,以將 IPv6
位址包括進去。圖 28 顯示 TCP 和 UDP
檢查值必須使用的新的偽標頭。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 28 IPv6 偽標頭

IPv6 偽標頭包括 Source Address、Destination Address、Upper-Layer
Packet Length 欄位 (指定上層 PDU 的長度) 以及一個
Next Header 欄位 (指定進行檢查值評估的上層通訊協定)。

此偽標頭也用於 ICMPv6 檢查值評估。

ICMPv6

與 IPv4 相似,IPv6
不提供報告錯誤的裝置,而是使用 Internet
控制訊息通訊協定 (ICMP) 的更新版本,稱為 ICMP
第 6 版 (ICMPv6)。ICMPv6 具有 IPv4 ICMP
的一般功能,即報告傳輸或轉寄錯誤,以及提供用於疑難解答的簡單回應服務。

ICMPv6 通訊協定還提供以下功能的架構:

  • Multicast Listener Discovery (MLD)MLD 是一組 ICMP 訊息 (3 個),它們取代 IPv4
    網際群組管理通訊協定 (IGMP) 的第 2
    版,以管理子網路多點傳播成員身份。在
    “Multicast Listener Discovery” 中對 MLD
    有更詳細的闡述。
  • Neighbor Discovery (ND)Neighbor Discovery 是一組 ICMPv6 訊息 (5 個),它們管理連結上節點間通訊。Neighbor
    Discovery 取代位址解析通訊協定 (ARP)、ICMPv4
    Router Discovery 以及 ICMPv4 Redirect 訊息。在
    “Neighbor Discovery” 中對 Neighbor Discovery
    有更詳細的闡述。

ICMPv6 是 IPv6 建置所必需的,在 RFC2463
中有詳細闡述。

ICMPv6 訊息類型

ICMPv6 訊息有兩種類型:

  1. 錯誤訊息錯誤訊息用於報告目的節點或中間路由器轉寄或傳輸
    IPv6 封包程序中出現的錯誤。ICMPv6 錯誤訊息的
    8 位元類型欄位的值為 0 到 127 (高序位位元設為
    0)。ICMPv6 錯誤訊息包括 Destination Unreachable、Packet
    Too Big、Time Exceed 與 Parameter Problem。
  2. 資訊訊息資訊訊息用於提供診斷功能以及其它主機功能
    (如 MLD 及 Neighbor Discovery)。ICMPv6 資訊訊息的
    Type 欄位的值為 128 到 255 (高序位位元設為 1)。ICMPv6
    資訊訊息請參閱 RFC 2463 所述,這些訊息包括
    Echo Request 和 Echo Reply。

ICMPv6 標頭

圖 29 顯示所有 ICMPv6 訊息的結構。

ipver29

圖 29 ICMPv6 訊息結構

IPv6 標頭中的欄位有:

Type – 表示 ICMPv6 訊息的類型。該欄位大小為 8
位元。在 ICMPv6 錯誤訊息中,高序位位元設為 0;在
ICMPv6 資訊訊息中,高序位位元設為 1。

Code –
區分給定訊息類型的多個訊息。該欄位大小為 8
位元。對於給定類型,如果只有一個訊息,則
Code 欄位設為 0。

Checksum – 存放 ICMP
訊息的檢查值。該欄位大小為 16
位元。計算檢查值時,將 IPv6 偽標頭加入到 ICMPv6
訊息中。

Message body – 包含 ICMPv6 訊息特有的資料。

ICMPv6 錯誤訊息

ICMPv6
錯誤訊息用於報告路由器或目的主機的轉寄錯誤或傳輸錯誤。

Destination Unreachable

當封包無法轉寄到其目的時,路由器或目的主機就會發出
ICMPv6 Destination Unreachable 訊息。圖 30 顯示 ICMPv6
Destination Unreachable 訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 30 ICMPv6 Destination Unreachable 訊息

在 Destination Unreachable 訊息中,Type 欄位值設為
1,Code 欄位設為 0 到 4。在 Checksum 欄位之後,是
32 位元的 Unused
欄位以及丟棄的封包部分,這使整個包含 ICMPv6
訊息的 IPv6 封包不多於 1280 位元組 (最小的 IPv6
MTU)。如果存在 IPv6
擴充標頭,此訊息中包含的丟棄封包位元組數就會有所變化。對於沒有擴充標頭的
ICMPv6 訊息,則包含 1232 位元組的丟棄封包 (比
1280 少 48 位元組,即 IPv6 標頭用去 40 位元組,ICMPv6
Destination Unreachable 標頭用去 8 位元組)。

表 7 顯示各種 Destination Unreachable 訊息的 Code
欄位值。

表 7 ICMPv6 Destination Unreachable 訊息

代碼值 說明
0 No route matching the
destination was found in the routing table.
1 The communication with the
destination is prohibited by administrative policy.
當封包被防火牆丟棄時,通常會傳送此訊息。
2 The address is beyond the scope
of the source address.
3 The destination address is
unreachable.
由於不能解析目的的連結層位址,所以傳送此訊息。
4 The destination port was
unreachable. 當包含 UDP 訊息的 IPv6
封包到達目的,但在目的 UDP
連接埠沒有應用程式聆聽時,就會傳送此訊息。

Packet Too Big

當由於轉寄連結上的連結 MTU 小於 IPv6
封包尺寸,該封包無法轉寄時,就會傳送 ICMPv6
Packet Too Big 訊息。圖 31 顯示 ICMPv6 Packet Too Big
訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 31 ICMPv6 Packet Too Big 訊息

在 Packet Too Big 訊息中,Type 欄位設為 2,Code
欄位設為 0。在 Checksum 欄位之後是 32 位元 MTU
欄位,用於存放在其上轉寄該封包的連結的連結
MTU。然後是丟棄封包部分,它使包含 ICMPv6
訊息的整個 IPv6 封包等於最大長度,即 1280
位元組。Packet Too Big 訊息用於 “Path MTU
Discovery” 中所述的 IPv6 Path MTU Discovery 程序。

Time Exceeded

通常情況下,當 IPv6 標頭中的 Hop Limit
欄位為零時 (在收到時或轉寄程序中遞減其值後),路由器就會傳送
ICMPv6 Time Exceeded 訊息。圖 32 顯示 ICMPv6 Time Exceeded
訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 32 ICMPv6 Time Exceeded 訊息

在 Time Exceeded 訊息中,Type 欄位設為 3,Code
欄位設為 0 (當 IPv6 標頭中的 Hop Limit 欄位為 0) 或
1 (目的主機資料片段重新組裝逾時)。在 Checksum
欄位之後是 32 位元 Unused
欄位以及丟棄的封包部分,修正後包含 ICMPv6
的整個 IPv6 封包就會不多於 1280
位元組。接收到代碼 =0 的 Time Exceeded
訊息,就表示傳出封包的 Hop Limit
不夠大,無法連線目的;或者存在路由迴路。

Parameter Problem

ICMPv6 Parameter Problem
訊息由路由器或者目的傳送。當 IPv6
標頭或擴充標頭發生錯誤時,就會傳送此訊息,這可避免
IPv6 做進一步處理。圖 33 顯示 ICMPv6 Parameter Problem
訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 33 ICMPv6 Parameter Problem 訊息

在 Parameter Problem 訊息中,Type 欄位設為 4,Code
欄位值為 0 到 2。在 Checksum 欄位之後是 32 位元
Pointer 欄位,它表示出錯的 IPv6
封包中的位元組位移。在 Pointer
欄位之後是丟棄封包部分,修正後 ICMPv6
訊息不多於 1280 位元組。Pointer
欄位值設為正確的位移,即便丟棄封包部分不包括此錯誤的位置也是如此。

表 8 顯示Parameter Problem 訊息的 Code 欄位值。

表 8 ICMPv6 Parameter Problem 訊息

代碼值 說明
0 An error in a field within the
IPv6 header or an extension header was encountered.
1 An unrecognized Next Header
field value was encountered. 它相當於 IPv4 Destination
Unreachable – Protocol Unreachable 訊息。
2 An unrecognized IPv6 option was
encountered.

ICMP v6 資訊訊息

ICMPv6 資訊訊息( 在 RFC 2463 中定義)
提供診斷功能,便於疑難解答。

Echo Request

ICMPv6 Echo Request 訊息傳送到目的,請求即時的
Echo Reply 訊息。Echo Request/Echo Reply
訊息功能提供一種簡單的診斷方法,有助於各種到達性和路由問題的疑難解答。圖
34 顯示 ICMPv6 Echo Request 訊息。

ipver34

圖 34 ICMPv6 Echo Request 訊息

在 Echo Request 訊息中,Type 欄位設為 128,Code
欄位設為 0。在 Checksum 欄位之後是 16 位元
Identifier 和 Sequence Number 欄位。Identifier 和 Sequence
Number 欄位由傳送主機設定,用於將傳入的 Echo
Reply 訊息與對應的 Echo Request 相配合。Data
欄位為零或多個位元組的選項資料,也由傳送主機設定。

Echo Reply

ICMPv6 Echo Reply 訊息是為表示收到 ICMPv6 Echo
Request 訊息而傳送的。圖 35 顯示 ICMPv6 Echo Reply
訊息。

ipver35

圖 35 ICMPv6 Echo Reply 訊息

在 Echo Reply 訊息中,Type 欄位設為 129,Code
欄位設為 0。在 Checksum 欄位之後是 16 位元
Identifier 和 Sequence Number 欄位。Echo Reply
訊息中設定的 Identifier、Sequence Number 以及 Data
欄位的值與最初觸發該 Echo Reply 的 Echo Request
訊息中的對應欄位設定相同。

ICMPv4 訊息和 ICMPv6 訊息的比較

表 9 列出 ICMPv4 訊息及對應的 ICMPv6 訊息。

表 9 ICMPv4 訊息及對應的 ICMPv6 訊息

ICMPv4 訊息 對應的 ICMPv6 訊息
Destination Unreachable –
Network unreachable (Type 3、Code 1)
Destination Unreachable – No
route to destination (Type 1、Code 0)
Destination Unreachable – Host
Unreachable (Type 3、Code 1)
Destination Unreachable –
Address unreachable (type 1、Code 3)
Destination Unreachable –
Protocol unreachable (Type 3、Code 2)
Paremeter Problem –
Unrecognized Next Header 欄位 (Type 4、Code 1)
Destination Unreachable – Port
Unreachable (Type 3、Code 3)
Destination Unreachable -Port
Unreachable (Type 1、Code 4)
Destination Unreachable –
Fragmentation needed and DF set (Type 3、Code 4)
Packet too Big (Type 2、Code
0)
Destination Unreachable –
Communication with destination host administratively
prohibited (Type 3、Code 10)
Destination Unreachable
-Communication with destination administratively
prohibited (Type 1、Code 1)
Time Exceeded – TTL expired
(Type 11、Code 0)
Time Exceeded – Hop Limit
exceeded (Type 3、Code 0)
Time Exceeded – Fragmentation
timer expired (Type 11、Code 1)
Time Exceeded -Fragmentation
timer expired (Type 3、Code 1)
Parameter Problem (Type 12、Code
0)
Parameter Problem (Type 4、Code
0 或 2)
Source Quench (type 4、Code 0) 在 IPv6
中未建置此訊息。
Redirect (Type 5、Code 0) Neighbor Discovery Redirect
message (Type 137、Code 0)。有關詳細資訊,請參閱
“Neighbor Discovery”。

Path MTU Discovery

路徑 MTU
是來源和目的之間路徑上所有連結的最小連結 MTU。對於路徑
MTU 的尺寸為最大值的 IPv6
封包不需要由主機分段,就可由路徑上所有路由器成功地轉寄。要發現路徑
MTU,傳送節點就必須使用接收 ICMP Packet Too Big
訊息的方法。

使用以下步驟來發現路徑 MTU:

  1. 傳送節點假定路徑 MTU
    是轉寄通訊的介面的連結 MTU。
  2. 傳送節點以此路徑 MTU 的大小傳送 IP
    資料電報。
  3. 如果路徑上的路由器無法在連結 MTU
    小於某封包尺寸的連結上轉寄該封包,它就會丟棄
    IPv6 封包,並將 ICMP Packet Too Big
    訊息發回到傳送節點。ICMP Packet Too Big
    訊息包含轉寄失敗所在連結的連結 MTU。
  4. 傳送節點將發向目的的封包的路徑 MTU
    設定為 ICMPv6 Packet Too Big 訊息中 MTU 欄位值。

傳送節點從第 2 步重新開始,根據需要重複第
2 步到第 4 步數次,就會發現此路徑 MTU。當未再收到其它
ICMPv6 Packet Too Big
訊息,或者從目的收到確認時,即可確定路徑 MTU。

在 RFC 1981 中,建議 IPv6 節點支援Path MTU Discovery。對於不支援Path
MTU Discovery的節點必須將最小連結 MTU (1280 位元組)
作為路徑 MTU。

路徑 MTU 的變化

由於路由拓樸的變化,來源和目的之間的路徑可能會隨時間而發生變化。當新路徑需要較小的路徑
MTU 時,在上述程序中,從第 3
步開始執行,並重複第 2 步到第 4
步,直到發現新的路徑 MTU 為止。

透過接收 ICMP Packet Too Big
訊息,可立即發現路徑 MTU 減少。路徑 MTU
增加則必須由傳送節點偵測。正如 RFC 1981
中所述,當收到 ICMPv6 Packet Too Big
訊息時,過至少 5 分鐘 (建議過 10 分鐘),傳送節點可嘗試傳送一個更大的
IPv6 封包。

Multicast Listener Discovery

IPv6 Multicast Listener Discovery (MLD) 相當於 IPv4 中
Internet 群組管理通訊協定第 2 版 (IGMPv2)。MLD
是路由器和節點之間交換的一組訊息,使路由器可以發現一組多點傳播位址,對於這些位址,每個結合介面均有聆聽節點。與
IGMPv2 相似,MLD 只發現多點傳播位址清單 (針對這些位址,至少有一個聆聽節點),而不是每個多點傳播位址的各個多點傳播聆聽節點清單。在
RFC 2710 中對 Multicast Listener Discovery (MLD)
有詳細闡述。

與 IGMPv2 不同的是,MLD 使用 ICMPv6
訊息,而不是定義自己的訊息結構。所有 MLD
訊息為 ICMPv6 訊息類型 130、131 和 132。這三種類型的
MLD 訊息為:

  1. Multicast Listener Query路由器使用 Multicast Listener Query,來查詢連結上的多點傳播聆聽節點。Multicast
    Listener Query 的訊息有兩種類型:General Query 和
    Multicast-Address-Specific Query。General Query
    用於查詢所有多點傳播位址的多點傳播聆聽節點。Multicast-Address-Specific
    Query
    用於查詢特定多點傳播位址的多點傳播聆聽節點。這兩種訊息類型可透過
    IPv6 標頭中的多點傳播目的位址以及 Multicast
    Listener Query 訊息中的多點傳播位址來區分。
  2. Multicast Listener Report多點傳播聆聽節點使用 Multicast Listener Report,表示希望收到特定多點傳播位址的多點傳播通訊,或者回應
    Multicast Listener Query。
  3. Multicast Listener Done多點傳播聆聽節點使用 Multicast Listener Done
    來報告它不再想接收特定多點傳播位址的多點傳播通訊。

MLD 訊息封包由 IPv6 標頭、Hop-by-Hop Options
擴充標頭以及 MLD 訊息組成。Hop-by-Hop Options
擴充標頭包含 IPv6 Router Alert 選項 (如 RFC 2711
中所述)。對於傳送到某些多點傳播位址 (路由器不在這些位址上聆聽)
的 MLD
訊息,此選項可確保該路由器會處理這些訊息。圖
36 顯示 MLD 訊息封包的格式。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 36 MLD 訊息封包的格式

Multicast Listener Query

MLD Multicast Listener Query 訊息相當於 IGMPv2 Host
Membership Query
查詢訊息。路由器使用它來查詢結合連結上的聆聽主機。

在 IPv6
標頭中,來源位址是傳送查詢的介面的連結-本機位址。Hop
Limit 欄位設為 1。對於 General Query,目的位址是連結-本機領域所有節點多點傳播位址
(FF02::1)。對於 Multicast-Address-Specific Query,目的位址是要查詢的特定多點傳播位址。

圖 37 顯示 MLD Multicast Listener Query 訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 37 MLD Multicast Listener Query 訊息

在 MLD Multicast Listener Query 訊息中,Type
欄位設為 130,Code 欄位設為 0。在 Checksum
欄位之後是 16 位元 Maximum Response Delay 欄位和
Reserved 欄位。Maximum Response Delay
是多點傳播群組成員必須使用 MLD Multicast Listener
Report 訊息報告其成員身份的時間上限 (以毫秒計)。在
General Query中,Multicast Address 欄位設為未指定位址
(::)。在 Multicast-Address-Specific Query中,Multicast
Address 欄位設為要查詢的特定多點傳播位址。

Multicast Listener Report

MLD Multicast Listener Report 訊息相當於 IGMPv2 Host
Membership Report
訊息。聆聽節點使用它來報告它希望收到特定多點傳播位址的多點傳播通訊,或者回應
MLD General 或 Multicast-Address-Specific Query 訊息。

在 IPv6
標頭中,來源位址是傳送報告的介面的連結-本機位址。Hop
Limit 欄位設為 1,目的位址是要報告的特定多點傳播位址。

圖 38 顯示 MLD Multicast Listener Report 訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處在單獨的頁中檢視。

圖 38 MLD Multicast Listener Report 訊息

在 MLD Multicast Listener Report 訊息中,Type
欄位設為 131,Code 欄位設為 0。在 Multicast Listener
Report 訊息中不使用 Maximum Response Delay
欄位,其值設為 0。Multicast Address
欄位設為要報告的特定多點傳播位址。

Multicast Listener Done

MLD Multicast Listener Done 訊息相當於 IGMPv2 Leave
Group
訊息。聆聽節點使用它來通知本機路由器:該主機不再是特定多點傳播位址的聆聽節點。

在 IPv6
標頭中,來源位址是傳送報告的介面的連結-本機位址。Hop
Limit 欄位設為 1,目的位址是連結-本機領域所有路由器多點傳播位址
(FF02::2)。

圖 39 顯示 MLD Multicast Listener Done 訊息。

如果您的瀏覽器不支援內嵌框架,請按一下此處在單獨的頁中檢視。

圖 39 MLD >Multicast Listener Done 訊息

在 MLD Multicast Listener Done 訊息中,Type 欄位設為
132,Code 欄位設為 0。在 Multicast Listener Done
訊息中不使用 Maximum Response Delay 欄位,其值設為
0。Multicast Address
欄位設為特定多點傳播位址,傳送節點通知本機路由器它不再是該位址的聆聽節點。

Neighbor Discovery

IPv6 Neighbor Discovery (ND)
是確定相鄰節點之間關係的一組訊息和程序。ND
取代了 IPv4 中使用的 ARP、ICMP Router Discovery 以及
ICMP Redirect,並提供其它功能。

ND 用途:

  • 主機用它來發現相鄰路由器。
  • 主機用它來發現位址、位址字首以及其它組態參數。
  • 節點用它來解析 IPv6
    封包轉寄到的相鄰節點的連結層位址,並確定相鄰節點的連結層位址從何時起發生改變。
  • 節點用它來確定是否仍然可以連線到相鄰節點。
  • 路由器用它來通告自己的存在、主機組態參數以及連結字首。
  • 路由器用它來通知主機:有更好的下一躍點位址,以供轉寄針對特定目的的封包。

表 10 列出並說明 ND 程序 (在 RFC 2461 中描述)。

表 10 IPv6 Neighbor Discovery 程序

程序 說明
Router Discovery 它是主機發現相連連結上本機路由器的程序。相當於
ICMPv4 Router Discovery。有關詳細資訊,請參閱
“Router Discovery”。
Prefix discovery 主機使用此程序發現本機連結目的的網路字首。它與
ICMPv4 Address Mask Request/Reply
相似。有關詳細資訊,請參閱 “Router
Discovery”。
Parameter Discovery 主機透過此程序發現其它執行參數,包括連結
MTU
以及傳出封包的預設的躍點限制。有關詳細資訊,請參閱
“Router Discovery”。
位址自動組態 此程序用於在有或沒有受管理的位址組態伺服器,如動態主機組態通訊協定第
6 版 (DHCPv6) 時,設定介面 IP
位址。有關詳細資訊,請參閱<位址自動組態>。
位址解析 節點使用此程序將相鄰節點的
IPv6 位址解析為其連結層位址。它相當於 IPv4
中的 ARP。有關詳細資訊,請參閱<位址解析>。
Next-hop determination 節點使用該程序確定封包根據目的位址轉寄到的相鄰節點的
IPv6
位址。轉寄或下一躍點位址是目的位址或連結上預設路由器位址。有關詳細資訊,請參閱<傳送主機演算法>。
Neighbor unreachability
detection
節點使用此程序確定相鄰節點的
IPv6
層不再接收封包。有關詳細資訊,請參閱
“Neighbor unreachability detection”。
重複位址偵測 節點使用此程序確定要使用的位址還沒有被相鄰節點使用。相當於
IPv4 中使用 gratuitous ARP
訊框。有關詳細資訊,請參閱<重複位址偵測>。
重新導向功能 此程序通知主機:有一個更好的第一躍點
IPv6 位址可以到達目的。它相當於 IPv4 ICMP
Redirect
訊息。有關詳細資訊,請參閱<重新導向功能>。

Neighbor Discovery 訊息格式

與 Multicast Listener Discovery (MLD) 訊息相似,ND
訊息使用 ICMPv6 訊息結構以及 ICMPv6 類型 133 到 137。ND
訊息由 ND 訊息標頭 (包括 ICMPv6 標頭和 ND
訊息特有的資料) 以及零或多個 ND 選項,如圖 40
所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 40 Neighbor Discovery 訊息的格式

ND 訊息有 5 種:

  • Router Solicitation
  • Router Advertisement
  • Neighbor Solicitation
  • Neighbor Advertisement
  • Redirect

ND 訊息選項提供其它資訊,通常指示 MAC
位址、連結網路字首、連結上的 MTU
資訊以及重新導向資料。

要確保收到的 ND
訊息來源於本機連結上的一個節點,則所有 ND
訊息都必須以躍點限制為 255 來傳送。收到 ND
訊息時,就會檢查 IPv6 標頭中的 Hop Limit
欄位。如果它未設為 255,該訊息就會被丟棄,並不提供任何提示。檢驗
ND 訊息躍點限制是否為 255,可確保免遭非連結節點發起的
ND 式的網路攻擊。將躍點限制設定為 255,路由器就不可能轉寄非連結節點的
ND 訊息。

Neighbor Discovery 選項

ND 選項格式為 Type-Length-Value,如圖 41 所示。

ipver41

圖 41 Neighbor Discovery 選項的格式

8 位元 Type 欄位表示 ND 選項的類型。表 11 列出
RFC 2461 中定義的 ND 選項類型。

表 11 IPv6 Neighbor Discovery 選項類型

Type Option Name
1 Source Link-Layer Address
2 Destination Link-Layer Address
3 Prefix Information
4 Redirected Header
5 MTU

8 位元 Length 欄位表示 8
位元組區塊中整個選項的長度。所有 ND
選項必須以 8 位元組為界。長度可變的 Value
欄位包含該選項的資料。

Source Link-Layer Address/Target Link-Layer Address 選項

Source Link-Layer Address 選項表示 ND
訊息傳送者的連結層位址。Source Link-Layer Address
選項包含在 Neighbor Solicitation、Router Solicitation
以及 Router Advertisement 訊息中。當 ND
訊息的來源位址為未指定位址 (::) 時,則不包含
Source Link-Layer Address 選項。

Target Link-Layer Address 選項表示 IPv6
封包應發往的相鄰節點的連結層位址。Target
Link-Layer Address 選項包含在 Neighbor Advertisement 以及
Redirect 訊息中。

Source Link-Layer Address 選項的格式與 Target
Link-Layer Address 選項相同,如圖 42 所示。

ipver42

圖 42 Source and Target Link-Layer Address 選項的格式

對於 Source Link-Layer Address 選項,Type 欄位設為 1;對於
Target Link-Layer Address 選項,Type 欄位設為 2。 Length
欄位設為整個選項中 8 位元組區塊的數量。
Link-Layer Address
欄位是一個長度可變的欄位,它包含來源或標的的連結層位址。為
IPv6 定義的每個連結層都必須指定在 Source and
Target Link-Layer Address
選項中設定連結層位址格式的方法。

例如,RFC 2464 定義在 Ethernet 上傳送 IPv6
封包的方法。它還包括 Source and Target Link-Layer
Address ND 選項的格式。對於 Ethernet,連結層位址長度為
48 位元 (6 位元組)。圖 43 顯示 Ethernet 的 Source and
Target Link-Layer Address 選項。

ipver43

圖 43 用於 Ethernet 的 Source and Target Link-Layer
Address 選項的格式

Prefix Information 選項

Prefix Information 選項在 Router Advertisement
訊息中傳送,指出位址自動組態有關的位址字首和資訊。在
Router Advertisement 訊息中,有多個 Prefix Information
選項,表示多個位址字首。圖 44 顯示 Prefix
Information 選項的格式。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 44 Prefix Information 選項的格式

Prefix Information 選項中的欄位有:

Type – 此欄位的值為 3。

Length – 此欄位的值為 4 (整個選項長度為 32
位元組)。

Prefix Length – 表示組成位址字首的 Prefix
欄位中的前導零位元數。該欄位大小為 8 位元。Prefix
Length 欄位值為 0 到 128。

On-link flag – 當設為 1 時,表示在收到 Router
Advertisement
訊息的連結上可使用包含的字首所指定的位址。當設為
0
時,並不假定在連結上可以使用與字首相符合的位址。該欄位大小為
1 位元。

Autonomous flag – 當設為 1
時,表示包含的字首用於建立一個自治的 (或不受管理的)
位址組態。設為 0
時,包含的字首不用於建立一個不受管理的位址組態。該欄位大小為
1 位元。

Reserved 1 – 是為將來使用而保留的 6
位元欄位,其值設為 0。

Valid Lifetime –
表示位址根據包含的字首並使用不受管理的位址組態而保持有效的時間
(秒數)。該欄位大小為 32 位元。Valid Lifetime
欄位也表示所包含字首對連結確定有效的時間 (秒數)。要使有效生存時間無限長,請將
Valid Lifetime 時間欄位設為 0xFFFFFFFF。

Preferred Lifetime –
表示位址根據包含的字首並使用不受管理的位址組態而處於偏好狀態的時間
(秒數)。該欄位大小為 32
位元。仍然有效的不受管理的自動組態位址不是處於偏好的狀態,就是處於取代的狀態。如果處於偏好的狀態,位址可以用於無限制的通訊。處於取代狀態,則不建議在新通訊使用此位址。但是,現有使用取代位址的通訊可以繼續。當偏好的生存時間到期時,位址就會從偏好的狀態轉入取代狀態。要使偏好的生存時間無限長,則必須將
Preferred Lifetime 欄位設為 0xFFFFFFFF。

Reserved 2 – 為將來使用而保留的 32
位元欄位,其值設為 0。

Prefix – 指示透過不受管理的自動組態而衍生的
IPv6 位址的字首。該欄位大小為 128 位元。使用
Prefix Length 欄位和 Prefix
欄位,可以明確地描述該字首,當它與節點的介面識別碼一起使用時,即可產生一個
IPv6 位址。在 Prefix 欄位中,超出 Prefix Length
欄位值的位元設為 0。不應傳送連結-本機字首,接收主機會忽略該字首。

Redirected Header 選項

在 Redirect 訊息中傳送 Redirected Header
選項,可以指定使路由器傳送 Redirect 訊息的 IPv6
封包。根據最初傳送的 IPv6
封包大小,它可以包含所有或部分重新導向的
IPv6 封包。圖 45 顯示 Redirected Header 選項的格式。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 45 Redirected Header 選項的格式。

Redirected Header 選項中的欄位有:

Type – 此欄位的值為 4。

Length – 此欄位的值為整個選項中的 8
位元組區塊的數量。

Reserved – 為將來使用而保留的 48
位元欄位,其值設為 0。

Portion of redirected packet – 包含導致傳送 Redirect
訊息的 IPv6 封包或者部分 IPv6
封包。其中包含的來源封包大小是符合的封包部分,同時整個
Redirect 訊息長度不多於 1280 位元組。

MTU 選項

MTU 選項在 Router Advertisement
訊息中傳送,用來表示連結的 IPv6 MTU。通常,僅當連結的
IPv6 MTU
不甚清楚或者由於平移的橋接組態而需要設定時,才使用此選項。MTU
選項覆寫介面硬體所報告的 IPv6 MTU。

在橋接環境或第 2
層交換環境中,對於同一網段上不同的連結層 MTU,可能使用不同的連結層技術。在這種情況下,同一網路上不同節點之間
IPv6 MTU 的差異無法透過 Path MTU Discovery 來發現。MTU
選項用來表示該網段上所有連結層技術都支援的最高
IPv6 MTU。

請考慮圖 46 中所示的交換組態。

ipver46

圖 46 使用 MTU 選項的第 2 層交換環境

兩個 IPv6 主機 (主機 A 和主機 B)
使用光纖分散式資料介面 (FDDI)
連接埠,連線到兩個不同的 Ethernet (第 2 層)
交換機上。這兩個交換機由 Ethernet
主幹網路連線。當主機 A 和主機 B 協商 TCP
連線時,每個主機均報告 TCP 最大網段尺寸為 4312
位元組 (4352 位元組的 FDDI 連結層 MTU 減去 40
位元組的 IPv6 標頭)。當連線通路上的 TCP
資料開始流動時,交換機就會丟棄主機 A 和 B
之間傳送的大於 1500 位元組的 IPv6
封包,而不顯示任何提示。

使用 MTU 選項,該網段的路由器 (未顯示)
就會在 Router Advertisement
訊息中向網段上所有主機報告 IPv6 MTU 為 1500。當主機
A 和 B 均將其 IPv6 MTU 從 4312 修正到 1500,中間交換機就不會丟棄兩者之間的最大尺寸
TCP 連線資料。

MTU 選項的格式如圖 47 所示。

ipver47

圖 47 MTU 選項的格式

MTU 選項中的欄位有:

Type – 此欄位的值為 5。

Length – 此欄位的值為 1 (整個選項有 8 個位元組)。

保持 – 它是一個為將來使用而保持的 16
位元欄位,其值設為 0。

MTU – 表示收到 Router Advertisement
的連結上主機應使用的 IPv6 MTU。該欄位大小為 32
位元。如果 MTU 欄位的值大於連結 MTU,該值就會被忽略。

Neighbor Discovery 訊息

所有 IPv6 ND 功能均使用以下訊息來實施:

  • Router Solicitation
  • Router Advertisement
  • Neighbor Solicitation
  • Neighbor Advertisement
  • Redirect

Router Solicitation

Router Solicitation 訊息由 IPv6
主機傳送,用來發現連結上的 IPv6
路由器。主機傳送一個多點傳播 Router Solicitation,以提示
IPv6 路由器立即答覆,而不是等待定期的 Router
Advertisement 訊息。

例如,假定本機連結是 Ethernet,則在 Router
Solicitation 訊息的 Ethernet 標頭中:

  • Source Address 欄位設為傳送網路配接卡的 MAC
    位址。
  • Destination Address 欄位設為 33-33-00-00-00-02。

在 Router Solicitation 訊息的 IPv6 標頭中:

  • Source Address 欄位設為分配給傳送介面的 IPv6
    位址,或者設為 IPv6 未註明位址 (::)。
  • Destination Address 欄位設為所有路由器連結-本機多點傳播位址
    (FF02::2)。
  • Hop Limit 欄位設為 255。

Router Solicitation 訊息的格式如圖 48 所示。

ipver48

圖 48 Router Solicitation 訊息的格式

Router Solicitation 訊息中的欄位有:

Type – 此欄位的值為 133。

Code – 此欄位的值為 0。

Checksum – 此欄位的值為 ICMPv6 檢查值。

Reserved – 為將來使用保留的 32
位元欄位,其值設為 0。

Source Link-Layer Address 選項 – ND Source Link-Layer
Address 選項包含傳送者的連結層位址。對於
Ethernet 節點而言,Source Link-Layer Address
選項包含傳送主機的 Ethernet MAC
位址。接收路由器使用 Source Link-Layer Address
選項中的位址,來確定對應的單點傳播 Router
Advertisement 所發往的主機的單點傳播 MAC 位址。

Router Advertisement

IPv6 路由器會定期或者回應收到 Router Solicitation
訊息時傳送 Router Advertisement
訊息。主機需要使用它所包含的這些資訊來確定連結字首、連結
MTU、是否使用位址自動組態、以及透過位址自動組態建立的位址處於有效和偏好的狀態的時間。

例如,假設本機連結是 Ethernet,則在 Router
Advertisement 訊息的 Ethernet 標頭中:

  • Source Address 欄位設為傳送網路配接卡的 MAC
    位址。
  • Destination Address 欄位設為 33-33-00-00-00-01 (定期
    Router Advertisement),或者傳送 Router Solicitation
    的主機的單點傳播 MAC 位址。

在 Router Advertisement 訊息的 IPv6 標頭中:

  • Source Address 欄位設為指派給傳送介面的連結-本機位址。
  • Destination Address 欄位設為所有節點連結-本機多點傳播位址
    (FF02::1),或者是傳送 Router Solicitation
    訊息的主機的單點傳播 IPv6 位址。
  • Hop Limit 欄位設為 255。

Router Advertisement 訊息的格式如圖 49 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 49 Router Advertisement 訊息的格式

Router Advertisement 訊息中的欄位有:

Type – 此欄位的值為 134。

Code – 此欄位的值為 0。

Checksum – 此欄位的值為 ICMPv6 檢查值。

Cur Hop Limit – 對於收到此 Router Advertisement
訊息的主機,此欄位表示該主機傳送的封包的
IPv6 標頭中 Hop Count 欄位的預設值。該欄位大小為
8 位元。Cur Hop Limit 為 0 表示此路由器沒有指定
Hop Count 欄位的預設值。

Managed Address Configuration flag – 當設為 1,表示收到此
Router Advertisemen]
訊息的主機必須使用受管理的位址組態通訊協定
(如 DHCPv6),獲得從不受管理的位址自動組態衍生的位址以外的位址。該欄位大小為
1 位元。

Other Stateful Configuration flag – 當設為 1
時,表示收到此 Router Advertisement
訊息的主機必須使用受管理的位址組態通訊協定
(如 DHCPv6),以獲得非位址組態的資訊。該欄位大小為
1 位元。

Reserved – 為將來使用保留的 6
位元欄位,其值設為 0。

Router Lifetime – 將路由器生存時間 (以秒計)
表示為預設值。該欄位大小為 16 位元。Router
Lifetime 最大值為 65,535 秒 (約 18.2 小時)。Router
Lifetime 為 0
表示:不能將此路由器作為預設路由器。但是,Router
Advertisement 中包含的其它資訊都是有效的。

Reachable Time –
表示在收到可連線確認後多長一段時間 (毫秒)
內某節點認為相鄰節點是可連線的。該欄位大小為
32 位元。Reachable Time 的值為 0
表示路由器沒有指定可連線時間。有關詳細資訊,請參閱
“Neighbor Reachability Detection”。

Retrans Timer – 表示 Neighbor Solicitation
訊息兩次重傳之間的時間間隔 (以毫秒計)。該欄位大小為
32 位元。在 Neighbor Unreachability Detection
程序中,使用 Retrans Timer。Retrans Timer 值為 0
表示路由器沒有指定 Retrans Timer。

Source Link-Layer Address 選項 – Source Link-Layer Address
選項包含傳送 Neighbor Solicitation
訊息的介面的連結層位址。當路由器在多個連結層位址之間平衡
payload 時,此選項可以省略。

MTU 選項 – MTU 選項包含連結的 MTU。僅在有可變
MTU 的連結上或可交換的環境中 (同一網段上使用多個連結層技術),才應傳送此選項。

Prefix Information 選項 – Prefix Information
選項包含用於位址自動組態的連結字首。本機-連結字首從不作為
Prefix Information 選項傳送。

Neighbor Solicitation

IPv6 主機傳送 Neighbor Solicitation
訊息,以發現連結上 IPv6
節點的連結層位址。它包括傳送者的連結層位址。通常,用於位址解析時,Neighbor
Solicitation
為多點傳播;當檢驗相鄰節點的可連線時,則為單點傳播。

例如,假設本機連結是 Ethernet,則在 Neighbor
Solicitation 訊息的 Ethernet 標頭中:

  • Source Address 欄位設為傳送網路配接卡的 MAC
    位址。
  • 對於多點傳播 Neighbor Solicitation,Destination
    Address 欄位設為與目標的請求節點多點傳播 IP
    位址對應的 MAC 位址。對於單點傳播 Neighbor
    Solicitation,Destination Address
    欄位設為相鄰節點的單點傳播 MAC 位址。

在 Neighbor Solicitation 訊息的 IPv6 標頭中:

  • Source Address 欄位設為指派給傳送介面的 IPv6
    位址,或者在重複位址偵測程序中,設為 IPv6
    未指定位址 (::)。
  • 對於多點傳播 Neighbor Solicitation,Destination
    Address
    欄位設為目標的請求節點多點傳播位址。對於單點傳播
    Neighbor Solicitation,Destination Address
    欄位設為目標的單點傳播 IP 位址。
  • Hop Limit 欄位設為 255。

Neighbor Solicitation 訊息的格式如圖 50 所示。

ipver50

圖 50 Neighbor Solicitation 訊息的格式

Neighbor Solicitation 訊息中的欄位有:

Type – 此欄位的值為 135。

Code – 此欄位的值為 0。

Checksum – 此欄位的值為 ICMPv6 檢查值。

Reserved – 為將來使用而保留的 32
位元欄位,其值設為 0。

Target Adderess – 表示目標的 IP
位址。該欄位大小為 128 位元。

Source Link-Layer Address 選項 – Source Link-Layer Address
選項包含傳送者的連結層位址。對於 Ethernet
節點而言,Source Link-Layer Address
選項包含傳送節點的 Ethernet MAC
位址。接收節點使用 Source Link-Layer Address
選項中的位址,來確定對應的 Neighbor Advertisement
所發往的節點的單點傳播 MAC
位址。在重複位址偵測程序中,當來源 IPv6
位址是未指定位址 (::)
時,則不包含連結層位址選項。

Neighbor Advertisement

IPv6 節點傳送 Neighbor Advertisement
訊息,以表示收到了 Neighbor Solicitation
訊息。另外,IPv6 節點還傳送未請求的 Neighbor
Advertisement,以通知相鄰節點在連結層位址中所發生的變更。節點使用
Neighbor Advertisement 包含的資訊來確定 Neighbor
Advertisement
訊息的類型、傳送者的連結層位址以及傳送者在網路中的角色。

例如,假設本機連結是 Ethernet,則在 Neighbor
Advertisement 訊息的 Ethernet 標頭中:

  • Source Address 欄位設為傳送網路配接卡的 MAC
    位址。
  • 對於請求的 Neighbor Advertisement 而言,Destination
    Address 欄位設為最初 Neighbor Solicitation
    傳送者的單點傳播 MAC 位址。對於未請求的
    Neighbor Advertisement,Destination Address 欄位設為
    33-33-00-00-00-01,它是與所有節點連結-本機多點傳播位址對應的
    Ethernet MAC 位址。

在 Neighbor Advertisement 訊息的 IPv6 標頭中:

  • Source Address 欄位設為指派給傳送介面的連結-本機位址。
  • 對於請求的 Neighbor Advertisement,Destination
    Address 欄位設為最初 Neighbor Solicitation
    傳送者的單點傳播 IP 位址。對於未請求的
    Neighbor Advertisement 而言,Destination Address
    欄位設為所有節點連結-本機多點傳播位址
    (FF02::1)。
  • Hop Limit 欄位設為 255。

Neighbor Advertisement 訊息的格式如圖 51 所示。

ipver51

圖 51 Neighbor Advertisement 訊息的格式

Neighbor Advertisement 訊息中的欄位有:

Type – 此欄位的值為 136。

Code – 此欄位的值為 0。

Checksum – 此欄位的值為 ICMPv6 檢查值。

Router flag – 表示 Router Advertisement
訊息的傳送者的角色。該欄位大小為 1
位元。當傳送者為路由器時,Router flag 設為 1;當傳送者不是路由器時,Router
flag 設為 0。Neighbor Unreachability Detection 使用 Router
flag,以確定路由器何時變成主機。

Solicited flag – 當設為 1 時,表示傳送 Neighbor
Advertisement 訊息是為了回應 Neighbor Solicitation
訊息。該欄位大小為 1 位元。在 Neighbor
Unreachability Detection 程序中,使用 Solicited flag
做為可連線確認。對於多點傳播 Neighbor
Advertisement 以及未請求的單點傳播 Neighbor
Advertisement,Solicited flag 都設為 0。

Override flag – 當設為 1 時,表示在包含的 Target
Link-Layer Address
選項中的連結層位址應覆蓋現有相鄰節點快取記憶體項目中的連結層位址。該欄位大小為
1 位元。如果 Override flag 設為 0
且連結層位址未知,帶有此旗標的連結層位址只更新相鄰節點快取記憶體項目。對於請求的多點傳閱位址和代理程式通告,Override
flag 設為 0。對於其它請求的和未請求的通告,Override
flag 設為 1。有關相鄰節點快取記憶體的詳細資訊,請參閱<Neighbor
Discovery 程序>。

Reserved – 為將來使用而保留的 29
位元欄位,其值設為 0

Target Address –
表示被通告的位址。該欄位大小為 128
位元。對於請求的 Neighbor Advertisement
訊而言息,目標位址包含在對應的 Neighbor
Solicitation 中的 Target Address
欄位內。對於未請求的 Neighbor Advertisement
訊息而言,目標位址為其連結層位址已變更的位址。

Target Link-Layer Address option – Target Link-Layer Address
選項包含該目標的連結層位址,此目標是 Neighbor
Advertisement 的傳送者。對於 Ethernet 節點而言,Target
Link-Layer Address 選項包含傳送節點的 Ethernet MAC
位址。傳送節點使用 Target Link-Layer Address
選項中的位址,確定通告節點的單點傳播 MAC
位址。

Redirect

IPv6 路由器傳送 Redirect
訊息,以通知來源主機有一個到達指定目的更好的第一躍點位址。Redirect
訊息只能由路由器傳送,用於單點傳播傳輸;對於來源主機只能是單點傳播的;並且只能由主機處理。

例如,假設本機連結是 Ethernet,則在 Redirect
訊息的 Ethernet 標頭中:

  • Source Address 欄位設為傳送網路配接卡的 MAC
    位址。
  • Destination Address
    欄位設為來源傳送者的單點傳播 MAC 位址。

在 Neighbor Advertisement 訊息的 IPv6 標頭中:

  • Source Address 欄位設為指派給傳送介面的連結-本機位址。
  • Destination Address
    欄位設為來源主機的單點傳播 IP 位址。
  • Hop Limit 欄位設為 255。

Redirect 訊息的格式如圖 52 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 52 Redirect 訊息的格式

Redirect 訊息中的欄位有:

Type – 此欄位的值為 137。

Code – 此欄位的值為 0。

Checksum – 此欄位的值為 ICMPv6 檢查值。

Reserved – 為將來使用而保留的 32
位元欄位,其值設為 0。

Target Address – 對於發往 Destination Address
欄位中的節點的封包,表示更好的下一躍點位址。該欄位大小為
128 位元。對於非連結傳輸,Target Address
欄位設為本機路由器的本機-連結位址。對於連結傳輸,Target
Address 欄位設為 Redirect 訊息中的 Destination Address
欄位值。

Destination Address – 包含使路由器傳送 Redirect
訊息的封包的目的位址。該欄位大小為 128
位元。來源主機收到後,就使用 Target Address 和
Destination Address
欄位更新該目的的轉寄資訊。該主機隨後發往最終目的的封包就會轉寄到
Target Address 欄位中的位址。

Target Link-Layer Address option – Target Link-Layer Address
選項包含目標 (隨後封包應發往的節點)
的連結層位址。僅當路由器知道 Target Link-Layer
Address 選項時,才能加入此選項。

Redirected Header 選項 – Redirected Header
選項包含導致傳送 Redirect
訊息的來源封包部分。其中包含的來源封包大小是適合的重新導向封包部分,同時整個
Redirect 訊息長度不多於 1280 位元組。

Neighbor Discovery 程序

ND 通訊協定為以下程序提供訊息交換:

  • 位址解析 (包括重複位址偵測)
  • Router Discovery (包括字首和參數發現)
  • Neighbor Unreachability Detection
  • 重新導向功能

有關位址自動組態的資訊,請參閱<位址自動組態>。有關確定下一躍點的資訊,請參閱<傳送主機演算法>。

為便於相鄰節點之間的互動,RFC 2461
定義以下主機資料結構,作為如何儲存 ND
程序資訊的範例:

  • 相鄰節點快取記憶體儲存相鄰節點的連結 IP
    位址、其對應的連結層位址以及指出相鄰節點可連線的狀態。相鄰節點快取記憶體相當於
    IPv4 中的 ARP 快取記憶體。
  • 目的快取記憶體儲存轉寄資訊或最近傳輸發往目的的下一躍點
    IP 位址。目的快取記憶體中的項目包括目的 IP
    位址 (本機或遠端)、之前解析的下一躍點 IP
    位址以及目的的 Path MTU。
  • 字首清單列出連結字首。字首清單中的每個項目均定義可直接存取的目的
    (相鄰節點) 的 IP位址範圍。此清單中的內容來自於各路由器在
    Router Advertisement 訊息中所通告的字首。
  • 預設路由器清單列出與傳送 Router Advertisement
    訊息且可作為預設路由器的連結路由器相對應的
    IP 位址。

RFC 2461 將這些資料結構定義為 IPv6
主機概念性模型的範例。只要主機的外部行為與
RFC 2461 一致,就不需要 IPv6
建置以建立這些精確的資料結構。例如,Microsoft
Research IPv6 Implementation 和 IPv6 Technology Preview for
Windows 2000
使用路由表,而不是字首清單和預設路由器清單。

位址解析

IPv6 節點的位址解析程序包括 Neighbor Solicitation
和 Neighbor Discovery
訊息之間的交換,用來解析給定目的的連結下一躍點位址的連結層位址。傳送主機在對應介面上傳送一個多點傳播
Neighbor Solicitation 訊息。Neighbor Solicitation
訊息的多點傳播位址是從目標 IP
位址衍生的請求節點多點傳播位址。Neighbor
Solicitation 訊息包括 Source Link-Layer Address
選項中傳送主機的連結層位址。有關主機如何確定目的的下一躍點位址的資訊,請參閱<傳送主機演算法>。

當目標主機收到 Neighbor Solicitation
訊息時,它就會根據 Neighbor Solicitation
訊息的來源位址以及 Source Link-Layer Address
選項中的連結層位址,更新自己的相鄰節點快取記憶體。然後,目標節點將一個單點傳播
Neighbor Advertisement 傳送到 Neighbor Solicitation
傳送者。Neighbor Advertisement 包含 Target Link-Layer
Address 選項。

收到目標的 Neighbor Advertisement
後,傳送主機就會根據 Target Link-Layer Address
選項中的資訊,更新自己相鄰節點快取記憶體中的目標項目。此時,便可以傳送傳送主機和
Neighbor Solicitation 目標之間的單點傳播 IPv6 傳輸。

位址解析範例

主機 A 的 Ethernet MAC 位址為 00-AA-00-11-11-11,對應的連結-本機位址為
FE80::2AA:FF:FE11:1111。主機 B 的 Ethernet MAC 位址為
00-AA-00-22-22-22,對應的連結-本機位址為
FE80::2AA:FF:FE22:2222。要將封包傳送到主機 B,主機
A 必須使用位址解析,以解析主機 B
的連結層位址。

根據主機 B 的 IP 位址,主機 A 向位址
FF02::1:FF22:2222 傳送一個請求節點多點傳播 Neighbor
Solicitation,如圖 53 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 53 用於位址解析的多點傳播 Neighbor
Solicitation

主機 B (已使用其 Ethernet
配接卡註冊請求節點多點傳播位址 33-33-22-22-22-22)
接收和處理 Neighbor Solicitation。主機 B 以單點傳播
Neighbor Advertisement 訊息回應,如圖 54 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 54 用於位址解析的單點傳播 Neighbor
Advertisement

重複位址偵測

IPv4 節點使用 ARP Request 訊息和稱為「gratuitous
ARP」的方法,偵測本機連結上的重複 IP
位址。與此類似,IPv6 節點使用 Neighbor Advertisement
訊息,偵測本機連結上重複位址的使用情況。

使用 IPv4 gratuitous ARP,ARP Request 訊息標頭中的
Source Protocol Address 欄位和 Target Protocol Address
欄位設定為偵測重複的 IPv4 位址。在 IPv6
重複位址偵測中,Neighbor Solicitation 訊息中的
Target Address 欄位設定為偵測重複的 IPv6 位址。

重複位址偵測與位址解析有以下區別:

  • 在重複位址偵測 Neighbor Solicitation 訊息中,IPv6
    標頭中的 Source Address 欄位設為未指定位址 (::)。直到確定沒有重複位址時為止不能使用正在查詢重複的位址。
  • 在針對重複位址偵測 Neighbor Solicitation
    訊息而作出的 Neighbor Advertisement 回應中,IP
    標頭的 Destination Address 設為連結-本機領域所有節點多點傳播位址
    (FF02::1)。Neighbor Advertisement 訊息中的 Solicited
    flag 設為 0。因為重複位址偵測 Neighbor
    Solicitation 訊息的傳送者未在使用期望的 IP
    位址,因此無法接收單點傳播 Neighbor
    Advertisements。因此,Neighbor Advertisement
    是多點傳播的。

收到其 Target Address 欄位設為需要偵測重複的 IP
位址的多點傳播 Neighbor Advertisement
後,節點會禁止在介面上使用重複的 IP
位址。如果節點沒有收到保護 IPv6 位址使用的
Neighbor Advertisement,就會在介面上起始化該位址。

重複位址偵測範例

主機 B 具有連結-本機位址 FE80::2AA:FF:FE22:2222。主機
A 欲使用連結-本機位址 FE80::2AA:FF:FE22:2222。但是,主機
A 在使用此連結-本機位址之前,必須先透過重複位址偵測來檢驗該位址的唯一性。

主機 A 向位址 FF02::1:FF22:2222
傳送一個請求節點多點傳播 Neighbor Solicitation,如圖
55 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 55 用於重複位址偵測的多點傳播 Neighbor
Solicitation

主機 B (已使用其 Ethernet
配接卡註冊請求節點多點傳播位址 33-33-22-22-22-22)
接收和處理 Neighbor Solicitation。主機 B
發現來源位址是未指定位址。然後,主機 B
以多點傳播 Neighbor Advertisement 訊息回應,如圖 56
所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 56 用於重複位址偵測的多點傳播 Neighbor
Advertisement

Router Discovery

Router Discovery
是節點嘗試發現本機連結上一組路由器的程序。IPv6
中的 Router Discovery 與 RFC 1256 所述的 IPv4 的 ICMP
Router Discovery 類似。

ICMPv4 Router Discovery 和 IPv6 Router Discovery
的一個重要區別在於,在目前預設路由器無法使用時,採用什麼機制來選擇新的預設路由器。在
ICMPv4 Router Discovery中,Router Advertisement
訊息中包括一個 Advertisement Lifetime 欄位。Advertisement
Lifetime 是指:自接到上一個 Router Advertisement
訊息起,認為不可再使用該路由器的時間。最糟的情況是,無法使用路由器,而直到
Router Advertisement
時間到期為止,主機不嘗試去發現新的預設路由器。

IPv6 在 Router Advertisement 訊息中有一個 Router
Lifetime
欄位。此欄位表示可將路由器視為預設路由器的時間長度。但是,如果無法使用目前預設路由器,則偵測這一情況時要使用
Neighbor Unreachability Detection,而不使用 Router
Advertisement 訊息中的 Router Lifetime 欄位。因為
Neighbor Unreachability Detection
確定無法使用路由器,就會立即從預設路由器清單中選出新的路由器。有關詳細資訊,請參閱
“Neighbor Unreachability Detection”。

除組態預設路由器外,IPv6 Router Discovery
還組態以下內容:

  • IPv6 標頭中 Hop Limit 欄位的預設設定。
  • 確定節點是否應該將受管理的位址通訊協定,如
    IPv6 的動態主機組態通訊協定 (DHCPv6),用於位址和其它組態參數。
  • 在可連線偵測和 Neighbor Solicitation
    重傳中使用的計時器。
  • 為連結定義的網路字首清單。每個網路字首均包含
    IPv6
    網路字首以及其有效和偏好的的生存時間。一經指定後,網路字首加上介面識別碼就可為接收介面產生不受管理的
    IP
    位址組態。另外,網路字首也定義本機連結上節點的位址範圍。
  • 本機連結的 MTU。

IPv6 Router Discovery 程序為:

  • IPv6 路由器定期在本機連結上傳送一個 Router
    Advertisement
    訊息,將其身份通告為路由器。另外,它們還提供組態參數,如預設的躍點限制、MTU
    以及字首。
  • 本機連結上使用中的 IPv6 主機接收 Router
    Advertisement
    訊息,並使用其內容來維護預設路由器清單、字首清單以及其它組態參數。
  • 啟動的主機將 Router Solicitation
    訊息傳送到連結-本機領域所有路由器多點傳播位址
    (FF02::2)。收到 Router Solicitation
    訊息後,本機連結上的所有路由器均向傳送此
    Router Solicitation 的節點傳送單點傳播 Router
    Advertisement 訊息。該節點接收 Router Advertisement
    訊息,並使用其內容建立預設路由器、字首清單以及設定其它組態參數。在放棄
    Router Discovery 程序之前傳送的 Router Solicitation
    數量由可設定變數來設定。RFC 2461
    使用的變數名稱為 MAX_RTR_SOLICITATIONS,推薦值為
    3。

路由器和字首發現範例

主機 A 的 Ethernet MAC 位址為 00-AA-00-11-11-11,對應的連結-本機位址為
FE80::2AA:FF:FE11:1111。路由器 1 Ethernet MAC 位址為
00-AA-00-22-22-22,對應連結-本機位址為
FE80::2AA:FF:FE22:2222。要將封包轉寄到非連結目的,主機
A 必須發現路由器 1 的存在。

主機 A 將一個多點傳播 Router Solicitation
傳送至位址 FF02::2,如圖 57 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 57 用於路由器和字首發現的多點傳播 Router
Solicitation

路由器 1 (已使用 Ethernet
配接卡註冊多點傳播位址 33-33-00-00-00-02)
接收並處理 Router Solicitation。路由器 1
以一個單點傳播 Router Advertisement
訊息回應,該訊息中包含組態參數和本機連結字首,如圖
58 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 58 用於路由器和字首發現的單點傳播 Router
Advertisement

Neighbor Unreachability Detection

可連線的定義是將 IPv6
封包正確地傳送到相鄰節點,並讓相鄰節點 IPv6
層成功地接收和處理封包的能力。對於向路由器傳送封包的節點,封包傳送到路由器的
IPv6
層,然後轉寄到下一躍點。對於向相鄰節點傳送封包的節點,封包傳送到該節點的
IPv6
層。請注意可連線的定義並不需要透過路由器傳送到遠端節點
– 僅傳送到相鄰路由器,這一點很重要。

當相鄰節點無法連線時,IPv6
會偵測這個情況,並嘗試加以糾正。要確定相鄰節點是否可連線,IPv6
依靠上層通訊協定 (指示通訊進度),或依靠接收
Neighbor Advertisement 訊息 (作為對單點傳播 Neighbor
Solicitation 訊息的回應而傳送)。

對於 TCP
通訊,當收到新資料或已傳送資料的確認區段時,就會指示通訊進度。UDP
傳輸可能不存在進度指示。在這種情況下,該節點向下一躍點相鄰節點傳送單點傳播
Neighbor Solicitation 訊息,以監視其持續的可連線。

只將收到所請求的 Neighbor Advertisement
作為可連線的證據。僅在回應 Neighbor Solicitation
時,才傳送所請求的 Neighbor Advertisement,後者將其
Solicited flag 設為 1。未請求的 Neighbor Advertisement
或 Router Advertisement 訊息不作為可連線的證據。

Neighbor Unreachability Detection
偵測對稱可連線。在這種情況下,封包必須既能發到想要的相鄰節點,也能從想要的相鄰節點發出。當傳送
Neighbor Solicitation 以及收到所請求的 Neighbor
Advertisement
時,就會確認兩節點之間的路徑。對於未請求的
Neighbor Advertisement 或 Router Advertisement
訊息,只確認傳送訊息的節點一端的路徑。這稱為不對稱可連線。

對於特定的本機節點,僅由傳送 Neighbor
Solicitation 和接收 Neighbor Advertisement
的節點確認可連線。傳送 Neighbor Advertisement
的節點收不到 Neighbor Advertisement
已到達指定節點的確認資訊。對於兩個均可確定可連線的節點,二者都必須彼此交換
Neighbor Solicitation 和 Neighbor Advertisement 訊息。

可透過監視相鄰節點快取記憶體中的相鄰節點項目,來確定相鄰節點的可連線。RFC
2461 定義相鄰節點快取記憶體項目的以下狀態:

  • INCOMPLETEIPv6 位址解析正在使用請求節點多點傳播
    Neighbor Solicitation。當建立新的相鄰節點快取記憶體項目,但還沒有該節點的對應連結層位址時,則進入
    INCOMPLETE
    狀態。在放棄位址解析程序並刪除相鄰節點快取記憶體項目之前,所傳送的多點傳播
    Neighbor Solicitation 數量由可設定變數來設定。RFC
    2461 使用的變數名稱為 MAX_MULTICAST_SOLICIT,推薦值為
    3。
  • REACHABLE可連線由收到所請求的單點傳播Neighbor
    Advertisement 來確認。在 Router Advertisement 中的
    Reachable Time
    欄位指定的毫秒數到期前,相鄰節點快取記憶體項目一直處於
    REACHABLE 狀態。
  • STALE可連線時間 (自收到上一個可連線確認起的一段時間)
    已到期。在 Reachable Time 欄位值 (毫秒)
    到期後,相鄰節點快取記憶體項目轉入 STALE
    狀態並保持此狀態,直到封包傳送到相鄰節點為止。當收到通告連結層位址的未請求
    Neighbor Advertisemen t時,也進入 STALE 狀態。
  • DELAY要在傳送 Neighbor Solicitation
    前留出一定時間讓上層通訊協定提供可連線確認,相鄰節點快取記憶體項目狀態就轉為
    DELAY 狀態,並等待一段時間 (可設定此時間)。RFC
    2461 使用的變數名稱為 DELAY_FIRST_PROBE_TIME,推薦值為
    5
    秒。到延遲時間為止,如果沒有收到可連線確認,則該項進入
    PROBE 狀態,並傳送單點傳播 Neighbor Solicitation。
  • PROBE對於處於 STALE 和DELAY
    狀態的相鄰節點快取記憶體項目,可連線確認正在進行中。傳送單點傳播
    Neighbor Solicitation
    訊息的時間間隔與該主機收到的 Router
    Advertisement 訊息中的 Retrans Timer
    欄位對應。在放棄可連線偵測程序並刪除相鄰節點快取記憶體項目之前所傳送的
    Neighbor Solicitation 數量由可設定變數來設定。RFC
    2461 使用的變數名稱為 MAX_UNICAST_SOLICITS,推薦值為
    3。

圖 59
顯示相鄰節點快取記憶體中一個項目的狀態圖。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 59 相鄰節點快取記憶體項目的狀態

如果無法連線的相鄰節點是路由器,主機就會從預設路由器清單中另選一個路由器,並在其上執行位址解析和無法連線偵測。

如果路由器成為主機,它應該傳送多點傳播
Neighbor Advertisement,並將 Router flag 設為 0。如果主機收到從
Router flag 設為 0 的路由器發出的 Neighbor
Advertisement,主機就會將該路由器從預設路由器清單中刪除,如果需要則另選一個路由器。

重新導向功能

路由器使用重新導向功能,通知來源主機有一個更好的第一躍點相鄰節點,可將發往特定目的的通訊轉寄到該處。在以下兩種情況中要用到重新導向功能:

  1. 路由器向來源主機通報本機連結上離目的「較近」(closer)
    的可用路由器的 IP 位址。「Closer」是用來連線目的網段的路由度量函數。當一個網段上有多個路由器時,來源主機會選擇一個預設路由器,但它並不是到達目的的最佳路由器時,就會出現這種情況。
  2. 路由器通知來源主機:目的是一個相鄰節點
    (與來源主機在同一連結上)。當主機的字首清單不包括目的的字首時,就會出現這種情況。因為目的並不與清單中字首相符,所以來源主機將封包轉寄到其預設路由器上。

IPv6 重新導向程序有以下步驟:

  1. 來源主機向其預設路由器傳送一個單點傳播封包。
  2. 該路由器處理此封包,並注意到來源主機位址是一個相鄰節點位址。另外,它還注意到來源主機和下一躍點在同一連結上。
  3. 此路由器將封包轉寄到對應的下一躍點位址。
  4. 路由器向來源主機傳送 Redirect 訊息。在
    Redirect 訊息的 Target Address
    欄位中,顯示節點的下一躍點位址,來源主機應將發往目的的封包傳送到此位址上。對於重新導向到路由器的封包,Target Address
    欄位設為該路由器的連結-本機位址。對於重新導向到主機的封包,Target
    Address 欄位設為封包最初發往的目的位址。

    Redirect 訊息中包含 Redirected Header
    選項。它也可以包含 Target Link-Layer Address
    選項。

  5. 收到 Redirect 訊息後,來源主機就使用 Target
    Address
    欄位中的位址更新目的快取記憶體中的目的位址項目。如果
    Redirect 訊息中包含 Target Link-Layer Address
    選項,則使用其內容建立或更新對應的相鄰節點快取記憶體項目。

僅由來源主機和目的之間的路徑上的第一個路由器傳送
Redirect 訊息。主機從不傳送 Redirect
訊息,路由器從不因為收到 Redirect
訊息而更新路由表。

重新導向範例

主機 A 的 Ethernet MAC 位址為 00-AA-00-11-11-11,對應的連結層位址為
FE80::2AA:FF:FE11:1111。主機 A 還具有站台-本機位址
FEC0::1:2AA:FF:FE11:1111/64。路由器 1 的 Ethernet MAC
位址為 00-AA-00-22-22-22,對應的連結層位址為
FE80::2AA:FF:FE22:2222。路由器 1 還具有站台-本機位址
FEC0::1:2AA:FF:FE22:2222/64。路由器 2 的 Ethernet MAC
位址為 00-AA-00-33-33-33,對應的連結層位址為
FE80::2AA:FF:FE33:3333。路由器 2 還具有站台-本機位址
FEC0::1:2AA:FF:FE33:3333/64。主機 A 向位址為
FEC0::2:2AA:FF:FE99:9999 的非連結主機 (未顯示)
傳送一個封包,並將路由器 1
作為目前的預設路由器。但是,路由器 2
是更好的可連線目的路由器。

主機 A 將發往 FEC0::2:2AA:FF:FE99:9999
的封包發到路由器 1,如圖 60 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 60 來源節點傳送的單點傳播封包

路由器 1 收到主機 A
發來的封包,並注意到主機 A
是一個相鄰節點。它還注意到主機 A
和目的的下一躍點位址在同一連結上。根據其本機路由表中的內容,路由器
1 將從主機 A 收到的單點傳播封包轉寄到路由器 2,如圖
61 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 61 路由器轉寄的單點傳播封包

為通知主機 A 將以後的到目的
FEC0::2:2AA:EE:FE99:9999 的封包發到路由器 2,路由器
1 向主機 A 傳送 Redirect 訊息,如圖 62 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 62 路由器傳送的 Redirect 訊息

主機傳送演算法

IPv6 主機傳送 IPv6
封包的程序由本機主機結構和 ND
通訊協定組成。當將一個封包發到任意目的地時,IPv6
主機使用以下演算法:

  1. 檢查目的快取記憶體中與目的位址符合的項目。
  2. 如果在目的快取記憶體中找到一個與目的位址符合的項目,則取得目的快取記憶體項目中的下一躍點位址。移到第
    3 步驟。如果在目的快取記憶體中沒有找到與目的位址符合的項目,則要確定目的位址是否符合字首清單中的字首。

    如果目的位址符合字首清單中的一個字首,則將下一躍點位址設為目的位址。移到第
    3 步驟。

    如果目的位址與字首清單中的字首不相符,則將下一躍點位址設為目前預設路由器的位址。移到第
    3 步驟。

    如果沒有預設路由器(
    並且在預設路由器清單中沒有路由器),則將下一躍點位址設為目的位址。

  3. 檢查相鄰節點快取記憶體中與下一躍點位址符合的項目。
  4. 如果在相鄰節點快取記憶體中找到一個與下一躍點位址符合的項目,則獲得連結層位址。如果在相鄰節點快取記憶體中沒有找到與下一躍點位址符合的項目,則使用位址解析,取得下一躍點位址的連結層位址。
  5. 使用相鄰節點快取記憶體項目的連結層位址傳送封包。

主機傳送演算法如圖 63 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 63 主機傳送演算法

位址自動組態

IPv6
的一個最有用的特性就是它能夠自動進行自我設定,即使不使用受管理的組態通訊協定如
IPv6 的動態主機組態通訊協定 (DHCPv6),也是如此。預設情況下,IPv6
主機可為每個介面設定一個連結-本機位址。透過使用
Router Discovery,主機還可以確定路由器位址、其它組態參數、其它位址以及連結字首。在
Router Advertisement
訊息中,指出是否應該使用受可管理的位址組態通訊協定資訊。

僅在可進行多點傳播的介面上進行位址自動組態。在
RFC 2462 中描述位址自動組態。

自動組態的位址狀態

自動設定的位址處於以下一種或幾種狀態:

  • 暫時的正在對該位址進行唯一性驗證。驗證是透過重複位址偵測完成的。節點收不到發往暫時位址的單點傳播通訊。但是,它能收到和處理多點傳播
    Neighbor Advertisement 訊息 (該訊息的傳送是為了回應重複位址偵測程序中傳送的
    Neighbor Solicitation 訊息)。
  • 偏好的唯一性已確認的位址。節點可從偏好的位址傳送和接收單點傳播通訊。位址處於偏好的狀態的時間由
    Router Advertisement 訊息的 Prefix Information
    選項中的 Preferred Lifetime 欄位確定。
  • 取代的位址仍有效,但是,不建議用於新通訊。現有通訊工作階段仍可使用取代的位址。節點可從取代位址傳送和接收單點傳播通訊。
  • 有效可從該位址傳送和接收單點傳播通訊。有效狀態包括偏好的狀態和取代狀態。位址處於有效狀態的時間由
    Router Advertisement 訊息的 Prefix Information
    選項中的 Valid Lifetime
    欄位確定。有效生存時間必須大於或等於偏好的生存時間。
  • 無效的節點不再為該位址傳送或接收單點傳播通訊。當有效生存時間到期後,位址就進入無效的狀態。

自動組態的位址與偏好的和有效生存時間之間的關係如圖
64 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 64 自動組態位址的狀態和生存時間

注意 位址自動組態僅用於主機,連結-本機位址自動組態除外。路由器必須使用另外的方法
(如手動組態) 取得位址和組態參數。

自動組態類型

自動組態有三種類型:

  1. 不受管理的該位址組態以收到 Router Advertisement
    訊息為基礎,其 Managed Address Configuration 和
    Other Stateful Configuration 旗標設為 0,並具有一個或多個
    Prefix Information 選項。
  2. 受管理的此組態以使用受管理的位址組態通訊協定 (如
    DHCPv6)
    為基礎,取得位址和其它組態選項。當主機收到沒有字首選項的
    Router Advertisement 訊息、而 Managed Address
    Configuration 和 Other Stateful Configuration 旗標設為
    1
    時,就會使用受管理的位址組態。當本機連結上沒有路由器時,主機也使用受管理的位址組態通訊協定。
  3. 混合此組態的基礎是收到具有 Prefix Informaiton
    選項的 Router Advertisement 訊息、且 Managed Address
    Configuration 和 Other Stateful Configuration 旗標設為
    1。

對於所有類型,永遠設定連結-本機位址。

自動組態程序

IPv6 節點的自動組態程序如下:

  1. 暫時的連結-本機位址是根據 FE80::/64 字首和
    64 位元介面識別碼而衍生的。
  2. 使用重複位址偵測來驗證暫時的連結-本機位址的唯一性,從而傳送
    Neighbor Solicitation 訊息,其 Target Address
    欄位設為暫時的連結-本機位址。
  3. 如果收到回應 Neighbor Solicitation 訊息的
    Neighbor Advertisement
    訊息,就表示本機連結上另一節點正在使用此暫時的連結-本機位址,位址自動組態即停止。此時,必須在該節點上進行手動組態。
  4. 如果未收到 Neighbor Advertisement 訊息 (該訊息的傳送是為回應
    Neighbor Solicitation 訊息),就認為暫時的連結-本機位址是唯一的和有效的。針對該介面而起始化連結-本機位址。使用網路配接卡註冊對應的請求節點多點傳播連結層位址。

對於 IPv6
主機,位址自動組態繼續進行,如下所示:

  1. 主機傳送 Router Solicitation 訊息。
  2. 如果未收到 Router Advertisement
    訊息,主機就會使用受管理的位址組態通訊協定,取得位址和其它組態參數。
  3. 如果收到 Router Advertisement 訊息,就會設定
    Hop Limit、Reachable Time、Retrans Timer 以及 MTU (如果有
    MTU 選項的話)。
  4. 對於每個存在的 Prefix Information 選項:如果 On-Link 旗標設為 1,則將該字首會加入到字首清單中。

    如果 Autonomous 旗標設為 1,則使用字首和 64
    位元介面識別碼衍生暫時的位址。

    使用重複位址偵測,驗證暫定位址的唯一性。

    如果暫時的位址正被使用,則不起始該介面位址的使用。

    如果暫時的位址目前不被使用,則起始化該位址。這包括設定有效的和偏好的的生存時間
    (根據 Prefix Information 選項中的 Valid Lifetime 和
    Preferred Lifetime 欄位)。還包括使用網路配接卡註冊對應的請求節點多點傳播連結層位址。

  5. 如果 Router Advertisement 訊息中的 Managed Address
    Configuration 旗標設為 1,就會使用受管理的位址組態通訊協定,以取得其它位址。
  6. 如果 Router Advertisement 訊息中的 Other Stateful
    Configuration 旗標設為 1,就會使用受管理的位址組態通訊協定,以取得其它組態參數。

主機的位址自動組態程序如圖 65 和 66 所示。

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 65 主機的位址自動組態程序 (第 1 部分)

如果您的瀏覽器不支援內嵌框架,請按一下此處來檢視個別的頁面。

圖 66 主機的位址自動組態程序 (第 2 部分)

摘要

本白皮書討論新的 IPv6
通訊協定套件,並盡可能地將 IPv6
通訊協定套件與 IPv4
中現有的相似特性或概念進行比較。本白皮書探討
IPv6 解決 IPv4 通訊協定設計問題的方法、新 IPv6
標頭和擴充標頭、ICMPv6 (取代 IPv4 ICMP)、MLD (取代
IPv4 IGMP)、IPv6 Neighbor Discovery 程序 (管理相鄰 IPv6
節點之間的互動) 以及 IPv6
位址自動組態。雖然現在還沒有廣泛使用,但
Internet 的未來必將以 IPv6
為基礎。增進對這個策略性通訊協定的了解,以開始規劃最終採用和遷移至
IPv6,這是很重要的。

其它資訊

有關 Windows 2000
的最新資訊,請瀏覽全球資訊網網址:http://www.microsoft.com/ntserver/、MSN™
上的 Windows NT Server 論壇以及 Microsoft Network
連線服務 (GO WORD: MSNTS)。

有關 IPv6 的最新資訊,請瀏覽 IPv6 工作群組 Web
網址:http://www.ietf.org/html.charters/。此網址包含到目前
RFC 集合的連結和描述 IPv6 通訊協定套件的 Internet
草案的連結。

有關標準的 IPv6 部署規劃的最新資訊,請瀏覽
Next Generation Transition (ngtrans) 工作群組 Web 網址:http://www.ietf.org/html.charters/。此網址包含到目前
RFC 集合的連結和描述各種部署工具和轉換策略的
Internet 草案的連結。

Comments Are Closed