-----關注IT小技術,分享更多IT小技術!
01 IPv6介紹
IPv6是英文“Internet Protocol Version 6”(互聯網協議第6版)的縮寫,是互聯網工程任務組(IETF)設計的用于替代IPv4的下一代IP協議。
為什麼要使用IPv6呢?
IPv4地址資源緊張限制了IP技術應用的進一步發展。而移動和寬帶技術的發展要求更多的IP地址,IPv6能從根本上解決這個問題。
Pv4地址資源緊張直接限制了IP技術應用的進一步發展,雖然CIDR,NAT,DHCP等技術隻能暫時緩解IPv4地址緊張,但無法從數量上根本解決地址問題。
IPv6數量
要說IPv6是多少個地址,IPv6地址空間非常巨大,有誇張的說法是:可以做到地球上的每一粒沙子都有一個IP地址。IPv6的地址數量幾乎無限的地址空間(地址長度由32bits增加到128bits )。
IPv6的地址數量為340萬億萬億萬億個地址,現在知道IPv6的強大了吧。
那誰來推動從IPv4遷移到IPv6呢?
主要是由政府、市場來推動。随着技術的進一步發展,Internet上的節點不再單純是計算機了,将包括PDA、移動電話、各種各樣的終端,甚至包括冰箱、電視等家用電器,這些備都需要一個全球單播地址,以連接到Internet中。
全新的地址配置方式
為了簡化主機地址配置,IPv6除了支持手工地址配置和有狀态自動地址配置(利用專用的地址分配服務器動态分配地址)外,還支持一種無狀态地址配置技術。在無狀态地址配置中,網絡上的主機能自動給自己配置IPv6地址。在同一鍊路上,所有主機不用人工幹預就可以通訊。
IPv6的特點
1、簡單:簡化固定的基本報文頭格式,提高處理效率
2、充足的地址空間
3、層次化的地址結構
4、可擴展:引入靈活的擴展報頭,易擴展
5、即插即用:地址配置簡化,可以實現自動配置
6、安全:以IPSec作為認證與加密擴展頭,提供端到端安全
7、支持Qos:新增流标記字段Flow Label
8、增強的鄰居發現機制
9、移動:Mobile IPv6
02 IPv6地址結構與規範IPv6地址結構
IPv6地址 = 前綴 接口标識
前綴:相當于v4地址中的網絡ID
接口标識:相當于v4地址中的主機ID
2001:A304:6101:1::E0:F726:4E58
類似于IPv4地址,IPv6地址的結構也是前綴加上一個特定的标識。在IPv4中是主機标識,而在IPv6中就是接口标識。
IPv6前綴
顧名思義,地址前綴就是在地址的最前面那段數字。當然也屬于128bits地址空間範圍之中。這部分或者有固定的值,或者是路由或子網的标識。
IPv6接口ID
IPv6的地址除了前綴以外,還包括接口ID,那麼接口ID是如何形成的呢?目前有三種方式可以産生IPv6接口ID。
1、由IEEE EUI-64規範自動生成
2、設備随機生成
有時候設備也可以采用随機生成的方法産生一個接口ID,目前Windows XP支持該方式。
3、手動配置
顧名思義,手動配置就是人為指定接口ID來實現。建議在服務器和重要網絡設備上配置
EUI-64規範
将48bits 的MAC地址轉化為64bits 的接口ID
MAC唯一,所以接口ID也唯一
IEEE EUI-64規範
接口ID的典型長度是64bits,IEEE EUI-64規範給出了一個由IEEE 48bits MAC地址自動生成64bits Interface ID的方法。
MAC地址格式中c bit表示廠商ID,d bit 表示廠商編号ID,“0”bit 代表全局/本地位,表示全球有效。g表示其是表示單個主機還是某個組。
具體的轉換算法為:将上述的0轉換為1,在c和d之間插入兩個字節:FFFE,結果為IPv6接口ID。
這種由MAC地址産生IPv6地址接口ID的方法可以減少配置的工作量,尤其是當采用無狀态地址自動配置時,隻需要獲取一個IPv6前綴就可以與接口ID形成IPv6地址。
使用這種方式最大的缺點就是某些惡意者可以通過二層MAC推算出三層IPv6地址。
03 IPv6地址表示方法完整的IPv6地址格式是IPv6地址加上前綴長度來表示
首選格式(RFC2373)
用十六進制表示,如: FE08:….
4個數字一組(16bits),中間用 “ : ” 隔開,如: 2001:12FC:….
地址前綴長度用“/xx”來表示
例如:2001:0410:0000:0001:0000:0000:0000:45ff/64
IPv6的128位地址是按照每16bits 劃分為一段,每段被轉換為一個4位十六進制數,并用冒号隔開。這種表示方法叫冒号十六進制表示法。在首選格式後面加上前綴長度就是一個完整的IPv6地址格式。
壓縮格式
壓縮格式(RFC2373)
若以零開頭可以省略,連續全零的組可用“::”表示,如: 1:2::ACDE:….
一個地址中::隻能出現一次
地址前綴長度用“/xx”來表示
例如:2001:410:0:1::45ff/64
2001:410::1::45ff/64是錯誤的表示方法
RFC2373中規定:當一個或多個連續的16bits 為0字符時,為了縮短地址長度,用::(兩個冒号)表示,但一個IPv6地址中隻允許一個::(如果出現超過一個的::,就無法判斷每個::到底省略了多少個全0段);沒有意義的0可以省略掉。
對于首選格式地址:2001:0410:0000:0001:0000:0000:0000:45ff
又可以表示為:2001:410:0:1::45ff
根據這個規則下列地址是非法的(應用了多個::):
::AAAA::1
3ffe::1010:2A2A::1
注意:使用壓縮表示時,不能将一個段内的有效的0也壓縮掉。例如,不能把FF02:30:0:0:0:0:0:5壓縮表示成FF02:3::5,而應該表示為FF02:30::5。
在壓縮格式表示的IPv6地址後面加上前綴長度就是一個完整的IPv6地址:
2001:410:0:1::45ff / 64
内嵌IPv4地址格式
内嵌IPv4地址的表示方法(RFC2373)
在有些特定場合中使用的IPv6地址中必須包括某些IPv4的地址,例如IPv4兼容IPv6隧道中的地址
IPv6地址的其它部分(不包括IPv4地址的部分)可以采用首選或者壓縮格式
IPv6地址中内嵌的IPv4地址采用以前IPv4的十進制表示方法
地址前綴長度用“/xx”來表示
例如:0:0:0:0:0:0:166.168.1.2/64
例如:::166.168.1.2/64
這其實是過渡機制中使用的一種特殊表示方法。關于過渡機制。
在這種表示方法中,IPv6地址的第一部分使用十六進制表示,而IPv4地址部分是十進制格式。
有兩種内嵌IPv4地址的IPv6地址。
下面是這種表示方法的示例:
0:0:0:0:0:0:192.168.1.2或者::192.168.1.2
0:0:0:0:0:FFFF:192.168.1.2或者::FFFF:192.168.1.2
在内嵌IPv4地址格式後面加上前綴長度就是完整的IPv6地址格式:
0:0:0:0:0:0:192.168.1.2 / 64 或者 ::192.168.1.2 / 64
最後需要指出的是,RFC2373已經被新的RFC3513替代,不過其中關于地址各式的定義,沒有大的變化。
該地址可以按照一種混合方式表達,即X : X : X : X : X : X : d . d . d . d,其中X表示一個1 6位整數,
而d表示一個8位十進制整數。例如,地址
0 : 0 : 0 : 0 : 0 : 0 : 1 0 . 0 . 0 . 1
04 IPv6地址分類單播地址(Unicast Address)
标識一個接口,目的為單播地址的報文會被送到被标識的接口
組播地址(Multicast Address)
标識多個接口,目的為組播地址的報文會被送到被标識的所有接口
任播地址(Anycast Address)
标識多個接口,目的為任播地址的報文會被送到最近的一個被标識接口,最近節點是由路由協議來定義的
任播地址與單播地址使用同一個地址空間
IPv6單播地址分類(RFC3513)
未指定地址:全0地址 ::
回環地址:::1
全球單播地址 例2001:A304:6101:1::E0:F726:4E58
内嵌IPv4地址的IPv6地址 例::10.153.70.200
鍊路本地地址 例FE80::E0:F726:4E58
站點本地地址 例FEC0::E0:F726:4E58
未指定地址
未指定地址
全0,表示為 ::/128
僅用于接口沒有分配地址時作為源地址
在重複地址檢測中出現
含有未指定地址的包不會被轉發
環回地址
環回地址
表示為 ::1/128
表示自己,如同IPv4中的127.0.0.1
全球單播地址
全球單播地址
格式
已分配的全球路由前綴
2001::/16 IPv6 Internet
2002::/16 6to4
2003::/16-3ffd::/16 未指定
3ffe::/16 6bone
内嵌IPv4地址的地址
内嵌IPv4地址的IPv6地址
IPv4兼容IPv6地址:用于IPv4兼容IPv6自動隧道
IPv4映射IPv6地址:用于IPv6表示IPv4地址
當需要将IPv4單播地址與IPv6全球單播地址建立聯系的時候一般使用兩種地址,一種是IPv4兼容IPv6地址,另一種是IPv4映射IPv6地址。
IPv6組播地址
Flags 永久标志
0000:永久多播地址
0001:臨時多播地址
(注:前3bits 保留為0)
Scope 應用範圍
0001:本地接口範圍,單個接口範圍有效,僅用于Loopback
0010:本地鍊路範圍
0100:本地管理範圍,管理員配置的
0101:本地站點範圍
1000:本地組織範圍,屬于同一個組織的多個站點範圍
1110:全局範圍
Group ID
組播組ID
IPv6的組播與IPv4相同,也就是發往組播目的地址的報文會被發送到該組播地址代表的一組接口。
在IPv4中,組播地址的最高三bits 設為111。在IPv6網絡中,組播地址也有特定的前綴來标識,其最高位前8bits 為1。
标志(Flags)字段有4個bits ,目前隻使用了最後一個bit(前三bits 必須置0),當該bit值為0時,表示當前的組播地址是由IANA所分配的一個永久分配地址;當該值為1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)。
範圍(Scope)用來限制組播數據流在網絡中發送的範圍。該字段占有4bits 。RFC3513是這樣定義該字段的:
0:預留
1:節點本地範圍,單個接口有效,僅用于Loopback通訊
2:鍊路本地範圍
4:管理本地範圍,由管理員配置
5:站點本地範圍
8:組織本地範圍,屬于組織的多個站點
E:全球範圍
F:預留
其它的值暫時沒有定義。
從這裡我們就可以推斷出FF02::2是一個鍊路本地範圍的組播地址,而FF05::2是一個站點本地範圍的組播地址。
最重要的字段要屬于最後的組ID(Group-ID)字段了。該字段長度為112bits ,用以标識組播組,我們知道112bits 最多可以生成2的112次方個組ID。目前,RFC2373并沒有将所有的112bits 都定義成組标識,而是建議僅使用該112bits 的最低32bits 組ID,将剩餘的80bits 都置0。這樣可以每個組ID都映射到一個唯一的以太網組播MAC地址(參見RFC2464)
預定義的組播組
Node-local
所有節點的組播地址: FF01:0:0:0:0:0:0:1
所有路由器的組播地址:FF01:0:0:0:0:0:0:2
Link-local
所有節點的組播地址: FF02:0:0:0:0:0:0:1
所有路由器的組播地址: FF02:0:0:0:0:0:0:2
Solicited-Node組播地址:FF02:0:0:0:0:1:FFXX:XXXX
所有OSPF路由器組播地址: FF02:0:0:0:0:0:0:5
所有OSPF的DR路由器組播地址:FF02:0:0:0:0:0:0:6
所有RIP路由器組播地址: FF02:0:0:0:0:0:0:9
所有PIM路由器組播地址: FF02:0:0:0:0:0:0:13
類似于IPv4,IPv6同樣有一些特殊的組播地址,這些地址由特别的含義,這裡舉幾個例子(還有很多類似的特殊地址):
FF01::1(節點本地範圍組播地址)
FF02::1(鍊路本地範圍所有節點組播地址)
FF01::2(節點本地範圍所有路由器組播地址)
FF02::2(鍊路本地範圍所有路由器組播地址)
FF05::2(站點本地範圍所有路由器組播地址)
Solicited-Node組播地址
IPv6中特有的組播地址
Solicited-Node組播地址生成過程
接口ID的後24bits :XX:XXXX
前綴:FF02:0:0:0:0:1:FF
FF02:0:0:0:0:1:FFXX:XXXX
在IPv6組播地址中,有一種特别的組播地址,叫做Solicited-node地址,被請求節點組播地址。Solicited-node地址是一種特殊用途的地址,主要用于重複地址檢測和節點用來獲取相同本地鍊路上鄰居節點的鍊路層地址。
Solicited-node地址由前綴FF02::1:FF00:0/104和單播地址的最後24bits 組成。一個單播地址對應一個Solicited-node地址。Solicited-node地址受限範圍為本地鍊路範圍。
IPv6任播地址
IPv6任播地址IPv6任播地址
IPv6任播地址
這是IPv6特有的地址類型,它用來标識一組網絡接口(通常屬于不同的節點)。目标地址是任播地址的數據包将發送給其中路由意義上最近的一個網絡接口。适合于“One-to-One-of-Many”(一對組中的一個)的通訊場合。接收方隻需要是一組接口中的一個即可,如移動用戶上網就需要因地理位置的不同,而接入離用戶最近的一個接收站,這樣才可以使移動用戶在地理位置上不受太多的限制。
任播地址從單播地址空間中進行分配,使用單播地址的任何格式。因而,從語法上,任播地址與單播地址沒有區别。被分配具有任播地址的節點必須得到明确的配置,從而知道它是一個任播地址。目前,任播地址僅被用做目标地址,且僅分配給路由器。
子網路由器任播地址:發往該任播地址的報文會被發到該子網所有路由器中離得最近的一個,地址格式如下:
在RFC3513中定義了子網路由器任播地址(Subnet-Router anycast Address),其接口ID為全0。
發往該任播地址的報文會被發送到任播地址所代表子網(子網路由器任播地址的前綴)内的某一台路由器,該路由器是離得最“近”的一台。所謂最近一般是路由的概念。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!