一文讀懂IPv6地址的格式以及分類

it老良 發佈 2022-10-26T07:59:57.696384+00:00

IPv4協議是目前廣泛部署的網際網路協議,在網際網路發展初期,IPv4以其協議簡單、易於實現、互操作性好的優勢而得到快速發展。

IPv4協議是目前廣泛部署的網際網路協議,在網際網路發展初期,IPv4以其協議簡單、易於實現、互操作性好的優勢而得到快速發展。但是眾所周知目前使用的IPv4地址長度為32位,2的32次方大約43億個IP位址,已無法滿足網際網路發展的需要,於是需要更高版本的IP協議更多數量的IP位址。IPV6地址擴充為128位,能產生2的128次方個IP位址,其資源幾乎是無窮的,號稱可以為每一粒沙子分配一個地址。那麼這海量的IPv6地址空間是如何進行運用的呢,本篇先詳細介紹一下IPv6地址的格式以及它的分類。

IPv6地址表示方法

IPv6地址由網絡前綴和接口標識兩個部分組成。網絡前綴有n位,相當於IPv4地址中的網絡ID;接口標識有(128-n)比特,相當於IPv4地址中的主機ID。

IPv6地址長度為128位,表示為"X:X:X:X:X:X:X:X", 每個X代表4個十六進位值字符,以冒號分隔,一共被分為8組。為了書寫方便,IPV6地址支持地址壓縮格式,壓縮規則如下:

  1. 每段的前面的0可以省略。比如:FE80:0210:1100:0006:0030:A4FF:000C:0097/64壓縮後的書寫格式為FE80:210:1100:6:30:A4FF:C:97/64。
  2. 地址中一個或多個全0欄位0000可以用雙冒號「::」來代替。比如:FF02:0000:0000:0000:0000:0000:0000:0001/64壓縮後的書寫格式為FF02::1/64。

注意:在一個IPv6地址中只能使用一次雙冒號「::」,否則當計算機將壓縮後的地址恢復成128位時,無法確定每個「::」代表0的個數。

IPv6地址分類

IPv6地址分為單播地址、任播地址、組播地址三種類型。和IPv4相比,取消了廣播地址類型,同時增加了任播地址類型。

1. IPv6單播地址(Unicast)

IPv6定義了多種單播地址,目前常用的單播地址有:

(1)全球單播地址:全球單播地址是帶有全球單播前綴的IPv6地址,其作用類似於IPv4中的公網地址。其格式如下圖所示:

全球單播地址由全球路由前綴(Global routing prefix)、 子網ID(Subnet ID)和接口標識(Interface ID)組成:

  • 全球路由前綴:由提供商指定給一個組織機構,通常全球路由前綴至少為48位。目前已經分配的全球路由前綴的前3bit均為001。
  • 子網ID:組織機構可以用子網ID來構建本地網絡(Site)。子網ID通常最多分配到第64位。子網ID和IPv4中的子網號作用相似。
  • 接口標識:用來標識一個設備(Host),與IPv4中的主機ID作用相似。

舉例:IPv6地址2001:1111:2222:ABCD::1/64,全球路由前綴為2001:1111:2222,子網ID為ABCD,接口ID為::1,網絡前綴為2001:1111:2222:ABCD

(2)鏈路本地地址:鏈路本地地址是IPv6中的應用範圍受限制的地址類型, 只能在連接到同一本地鏈路的節點之間使用,它相當於IPv4裡面的169.254.0.0/16地址。它使用了特定的本地鏈路前綴FE80::/10(最高10位值為1111111010),默認情況下從11bit到64bit設置為0,而剩下的64bit,使用接口的MAC地址擴展為64位進行填充標識。鏈路本地地址的格式如下圖所示:

接口MAC地址原本是48位,如何將48位的MAC地址擴展為64位進行填充呢?

IPv6基於EUI-64地址接口標識符的配置如下:

MAC地址的前24位代表廠商ID,後24位代表製造商分配的唯一擴展標識。MAC地址的第七高位叫G/L位(Global/Local),值為0時表示MAC地址全局唯一,值為1時表示MAC地址本地唯一。在MAC地址向EUI-64格式的轉換過程中,MAC地址的前24位和後24位之間插入了16比特的FFFE,並將G/L位的值從0變成了1,這樣就生成了一個64比特的接口ID,且接口ID的值全局唯一。這樣網絡前綴和接口ID一起組成接口地址。

舉例:路由器某接口啟動了IPV6協議棧之後,只配置全球單播地址前綴,該接口的全球單播地址和鏈路本地地址可以根據EUI-64自動生成,假設該接口MAC地址為:707b-e83e-5007,全球單播前綴配置2021:: /64,通過EUI-64生成的全球單播地址為:2021::727b:e8ff:fe3e:5007,鏈路本地地址為:FE80::727b:e8ff:fe3e:5007 。

(3)站點本地地址站點本地地址是另一種應用範圍受限的地址,它僅能在一個站點內使用。類似IPv4中的私網地址,IPv6公網地址雖多,但是部分企業或機構不想讓自己部分內網設備被外網訪問(該設備也無需訪問外網),此時可以使用站點本地地址組建自己的內網,站點本地地址只能用於內網,不能在公網被路由。站點本地地址是由固定10bit地址前綴FEC0::/10、54bit子網標識以及64bit的擴展MAC地址組成。其格式如下圖所示:

(4)未指定地址:IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。該地址可以表示某個接口或者節點還沒有IP位址,可以作為某些報文的源IP位址。源IP位址是::的報文不會被路由設備轉發。

(5)環回地址:IPv6中的環回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。環回與IPv4中的127.0.0.1作用相同,主要用於設備給自己發送報文。該地址通常用來作為一個虛接口的地址(如Loopback接口)。實際發送的數據包中不能使用環回地址作為源IP位址或者目的IP位址。

2. IPv6組播地址(Multicast)

IPv6的組播與IPv4相同,用來標識一組接口,發往組播地址的報文被組播地址標識的所有接口接收。其格式如下圖所示:

一個IPv6組播地址由前綴,標誌(Flag)欄位、範圍(Scope)欄位以及組播組ID(Global ID)4個部分組成:

  • 前綴:IPv6組播地址的前綴是1111 1111,即FF00::/8。
  • 標誌欄位:長度4bit,目前只使用了最後一個比特(前三位必須置0),當該位值為0時,表示當前的組播地址是由IANA(The Internet Assigned Numbers Authority,網際網路數字分配機構)所分配的一個永久分配地址;當該值為1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)。
  • 範圍欄位:長度4bit,用來限制組播數據流在網絡中發送的範圍。
  • 組播組ID:長度112bit,用以標識組播組,比如是全部節點,全部的路由器等等。目前,建議僅使用該112位的最低32位作為組播組ID,將剩餘的80位都置0。

舉例:

FF01::1 ,表示當前節點所有接口地址;

FF02::1,表示當前鏈路所有節點的接口地址;

FF02::2,表示當前鏈路所有路由器的接口地址;

FF02::5,表示當前鏈路所有運行OSPFv3協議路由器的接口地址;

FF02::9,表示當前鏈路所有運行RIPng協議路由器的接口地址;

FF05::1,表示當前站點內所有節點的接口地址。

3. IPv6任播地址(Anycast)

單播是一對一,組播是一對多,廣播是一對全體,那麼任意播就是一對最近的通信方式。任播地址設計用來在給多個主機或者節點提供相同服務時提供冗餘功能和負載分擔功能。目前,任播地址的使用通過共享單播地址方式來完成。將一個單播地址分配給多個節點或者主機,這樣在網絡中如果存在多條該地址路由,當發送者發送以任播地址為目的IP的數據報文時,發送者無法控制哪台設備能夠收到,這取決於整個網絡中路由協議計算的結果。

任播地址是IPv6特有的地址類型,用來標識一組網絡接口。IPv6任播地址僅可以被分配給路由設備,不能應用於主機。任播地址不能作為IPv6報文的源地址,僅用作目標地址,目的為任播地址的報文會被送到最近的一個被標識接口,這裡所謂的「最近」是通過路由協議的開銷來判斷的。另外任播地址與單播地址使用相同的地址空間,因此任播與單播的表示無任何區別,配置時須明確表明是任播地址,以此區別單播和任播。例如在華為路由器接口配置指明IPv6任播地址命令為:ipv6 address 2002:12::1 64 anycast(最後加上anycast參數表示這是一個任播地址)。

關鍵字: