1. 程式人生 > >IPv6地址格式淺談

IPv6地址格式淺談

關於IPv6,大概每個人都多多少少使用過,現在越來越多的機構的也在使用IPv6,但是總是覺得接觸到的東西都沒有真正清晰的說明Pv6到底是怎麼回事,所以決定寫個文章理一下思路。

IPv6是Internet Protocol Version 6的縮寫,是對應IPv4的下一代IP協議。IPv4的問題大家都清楚,地址空間小,分配不靈活,協議本身的設計又缺乏安全性,網路發展過程中層出不窮的協議也讓IPv4的解決有些吃力,QoS更是難以解決的大問題。所以IPv6應運而生。

一、表示方式    
    關於IPv6的發展歷程不多說,先聊聊IPv6的表示方式。
    IPv6的長度是128bit,是IPv4的32bit長度的四倍,目前有三種表示方式:

    1、冒分十六進位制表示法
    格式為 X:X:X:X:X:X:X:X,其中每個X代表16個bit,以十六進位制顯示,如:
        ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

    這種表示方式中前導的0可以省略表示(每個X中前面連續的0可以省略不寫,若整個X都為0,則用一個0表示整個X),如:
        2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

    2、0位壓縮表示法
    在某些情況下,一個IPv6地址中問可能包含很長的一段0,可以把連續的一段0壓縮為“::”。但為保證地址解析的唯一性,地址中”::”只能出現一次,例如:
        FF01:0:0:0:0:0:0:1101 → FF01::1101
        0:0:0:0:0:0:0:1 → ::1
        0:0:0:0:0:0:0:0 → ::

    3、內嵌IPv4地址表示法
    為了實現IPv4-IPv6互通,IPv4地址會嵌入IPv6地址中,此時地址常表示為:X:X:X:X:X:X:d.d.d.d,前96bit採用冒分十六進位制表示,而最後32bit地址則使用IPv4的點分十進位制表示,例如::192.168.0.1與::FFFF:192.168.0.1就是兩個典型的例子 。


二、地址結構
    IPv6分為單播、任播、組播,相比IPv4去掉了廣播。每種播報方式的地址結構都不同,這裡只講詳細講單播的IPv6的地址結構。
    
    IPv6的結構也是從高位開始解析,如下:
    

    未知地址(全0)::/128,相當於IPv4的0.0.0.0;
    環回地址::1/128相當於IPv4的127.0.0.1;
    組播地址不多說;
    鏈路本地地址相當於IPv4的區域網或者內網地址,只能在區域網內使用。
    除了這些開頭的地址都是全網單播地址(相當於可以在網際網路上使用的IPv4地址)。


    1、介面標識
    介面標識用於標識一個連線,在每一個子網字首下應該是唯一的,同一個介面標識不建議用於幾個不同的節點上,在越大的範圍下是唯一的就越好。有時候,介面標識肯會被從它所在的那一層派生出來,比如同一個介面標識可能會被用在同一個節點的多個子網字首不一樣的介面上。
    注意,介面標識的唯一性和IPv6地址的唯一性是兩碼事,比如一個全網單播的IPv6地址可能會使用一個區域性範圍內唯一的介面標識,而一個鏈路連線的地址可能會用一個全網範圍內唯一的介面標識。
    除了二進位制000開頭的地址外,所有的介面標識都是64bit長,格式符合EUI-64。
    如果從mac地址這類通用的token轉換過來的,那麼EUI-64格式的介面標識應該是全網唯一的。下圖是介面標識前三個位元組的格式,其中'u'的位置,如果是1表示這個標識是全網唯一的,如果是0則表示這個標識是區域性範圍的。'g'用來表示個體或組,'c'是所在網路的網名。


    2、單播地址格式
    全網單播地址的一般格式如下:

       global routing prefix是分配給站點(一級子網/鏈路)的,subnet ID是子網號,標識站點內的連線,之後是介面標識的剩餘部分(n+m等於64)。

    3、v6內嵌v4的地址格式
    IPv4相容IPv6格式
    這種模式將v4地址嵌入v6地址中用於相容v6和v4地址,具體例子如下:

       其中IPv4必須是公網地址(不能是內網地址)。不過這種老方法現在已經基本被棄用了。


       IPv4對映到IPv6地址


    4、鏈路連線v6單播地址格式
       鏈路連線地址用在鏈路內連線的時候,格式如下:

    這種地址格式多用於自動定址、鄰居發現演算法或者沒有路由器的時候。
    路由器不會轉發任何鏈路內的資訊到鏈路外。

    5、站點連線v6單播地址格式
       站點地址用於站點內部定址用於在站點內部進行定址,因此不需要全域性字首,不過這種地址已經被棄用了。

       最新的標準已經不支援這種地址格式了,subnet ID有值的時候只能是全網單播。但是已經這樣部署的地址還可以使用,只是將其解析為全網單播的地址。
--------------------- 

原文:https://blog.csdn.net/zero_indigo/article/details/80266761