關于IPv6地址定義的補充內容
前文我們講述了不少IPv6地址的相關內容,了解了它與傳統版本IP地址的不同之處和一些新內容的含義,現在我們來對這部分內容在進行一些內容上的擴充?,F在我們將要講述的是:多播地址和字段以及一些定義。
IPv6多播地址識別多個接口。使用適當的多播路由拓撲,將向多播地址發送的數據包發送給該地址識別的所有接口。
IPv6多播地址有 1111 1111 的格式前綴 (FP)。IPv6地址很容易區分為多播地址,因為它總是以 FF 開始。多播地址不能被用作源地址。
除了 FP 以外,多播地址還包括其他結構,以便標識它們的標志、作用域和多播組,如下圖所示。
多播地址中的字段如下所示:
標志:“標志”字段表示在IPv6多播地址上設置的標志。該字段的大小為 4 位。從 RFC 2373 起,定義的唯一標志是 Transient (T) 標志。T 標志使用“標志”字段的低位比特。當設置為 0 時,T 標志表示該多播地址是由 Internet 號碼指派機構 (IANA) ***指派的(著名)多播地址。當設置為 1 時,T 標志表示該多播地址是瞬態(非***指派)多播地址。
范圍:作用域字段表示進行多播通訊的 IPv6網絡的作用域。該字段的大小為 4 位。除了多播路由協議提供的信息之外,路由器使用多播作用域來確定是否可以轉發多播通訊。
以下作用域在 RFC 2373 中定義:
作用域字段值范圍:1 節點本地,2 鏈路本地,5 站點本地,8 組織本地,E 全局
例如,使用多播地址 FF02::2 的通訊具有鏈路本地作用域。IPv6路由器永遠不會將此通訊轉發到本地鏈路以外。
組ID:“組ID”字段標識多播組,并且在作用域中是唯一的。該字段的大小為 112 位。***指派的組 ID 獨立于作用域。瞬態組 ID 僅與特定的作用域有關。從 FF01::到 FF0F::的多播地址是保留的已知地址。
為了識別用于節點本地和鏈路本地作用域的所有節點,定義下列IPv6地址的多播地址:
FF01::1(節點本地作用域所有節點地址)
FF02::1(鏈路本地作用域所有節點地址)
為了識別用于節點本地、鏈路本地和站點本地作用域的所有路由器,定義下列多播地址:
FF01::2(節點本地作用域所有路由器地址)
FF02::2(鏈路本地作用域所有路由器地址)
FF05::2(站點本地作用域所有路由器地址)
在“組ID”中使用 112 位,就可能有 2 的 112 次方個組ID。但是,因為 IPv6多播地址被映射到以太網多播 MAC 地址,所以 RFC 2373 建議從 IPv6多播地址的低位 32 位指派“組 ID”,并將剩余的原始組 ID 位設置為 0。通過在組 ID 中只使用低位 32 位,每個組 ID 映射到唯一的以太網多播 MAC 地址。
請求節點地址:請求節點地址有利于在地址解析過程中實現有效的網絡節點查詢。在 IPv4中,ARP 請求幀被發送到 MAC 層次的廣播,擾亂了網絡段上的所有節點,包括不運行 IPv4的節點。IPv6使用“鄰居請求”消息執行地址解析。但是,沒有使用本地鏈路作用域所有節點地址作為“鄰居請求”消息目標,因為這樣可能擾亂本地鏈路上的所有 IPv6節點,而是使用請求節點多播地址。請求節點多播地址由前綴 FF02::1:FF00:0/104 和被解析的 IPv6地址的*** 24 位地址組成。
例如,對于使用 FE80::2AA:FF:FE28:9C*** 鏈路本地 IPv6地址的節點,相應的請求節點地址是 FF02::1:FF28:9C***。要將 FE80::2AA:FF:FE28:9C*** 地址解析為它的鏈路層地址,節點將發送“鄰居請求”消息給 FF02::1:FF28:9C*** 請求節點地址。使用 FE80::2AA:FF:FE28:9C*** 地址的節點,將偵聽請求節點地址的多播通訊,因為對應于某一物理網絡適配器的接口,已經和網絡適配器一起注冊了相應的多播地址。
使用請求節點多播地址的結果是,地址解析(通常發生在鏈路上)不需要使用擾亂所有網絡節點的機制。事實上,在地址解析過程中很少有節點被擾亂。在實踐中,因為以太網 MAC 地址、IPv6接口 ID 和請求節點地址之間的關系,所以請求節點地址扮演偽單播地址的角色,以便實現非常有效的地址解析。