一、ipv6的概念? ?
????????IPv6 是英文 “Internet Protocol Version 6”(互聯網協議第 6 版)的縮寫,是互聯網工程任務組(IETF)設計的用于替代 IPv4 的下一代 IP 協議,其地址數量號稱可以為全世界的每一粒沙子編上一個地址。
????????由于 IPv4 最大的問題在于網絡地址資源不足,嚴重制約了互聯網的應用和發展。IPv6 的使用,不僅能解決網絡地址資源數量的問題,而且也解決了多種接入設備連入互聯網的障礙。
????????互聯網數字分配機構(IANA)在 2016 年已向國際互聯網工程任務組(IETF)提出建議,要求新制定的國際互聯網標準只支持 IPv6,不再兼容 IPv4。
以下是關于IPv6四種地址類型的講解:
1. 單播地址(Unicast Address)
定義:唯一標識一個網絡接口,發送到單播地址的數據包會精確傳輸到該地址對應的接口。
特點:
點對點通信:類似于IPv4的單播,用于一對一的直接通信(如瀏覽網頁、發送郵件)。
地址分類:IPv6單播地址包括全球單播地址(類似IPv4公網地址)、鏈路本地地址(用于本地鏈路通信)等。
示例:
2001:db8::1
?是一個全球單播地址。
2. 任意播地址(Anycast Address)
定義:同一地址分配給多個接口,但數據包僅發送到“最近”的一個接口(基于路由協議計算的路徑最優性)。
特點:
服務冗余與負載均衡:常用于提高服務可用性(如DNS根服務器、CDN節點)。
路由優化:路由器自動選擇最短路徑,用戶無需感知具體服務節點。
注意:IPv6任意播地址格式與單播地址相同,需通過配置實現功能區分。
3. 組播地址(Multicast Address)
定義:標識一組接口,發送到組播地址的數據包會傳輸到該組所有接口。
特點:
一對多通信:適用于視頻會議、實時數據分發等場景。
地址格式:IPv6組播地址以?
ff00::/8
?開頭(如?ff02::1
?表示鏈路本地所有節點)。組成員動態管理:接口可自由加入或離開組播組。
對比IPv4:IPv6原生支持組播,無需依賴額外協議(如IGMP)。
4. IPv6無廣播地址
原因:IPv6取消了廣播機制,改用組播實現類似功能。
替代方案:
所有節點組播地址:
ff02::1
(鏈路本地范圍)可替代IPv4的廣播。優勢:減少網絡擁塞,僅需通信的節點監聽組播組,避免廣播風暴。
地址解析:IPv6使用**鄰居發現協議(NDP)**替代ARP,通過組播請求完成地址解析(如MAC地址查詢)。
總結對比(IPv4 vs. IPv6)
類型 IPv4 IPv6 單播 支持(如192.168.1.1) 支持(如2001:db8::1) 廣播 支持(如255.255.255.255) 無,由組播替代(如ff02::1) 組播 支持(依賴IGMP) 原生支持(地址以ff00開頭) 任意播 非正式支持 原生支持
? ? ? ? IPv6 地址分為 3 類:單播地址、任意播地址及組播地址。IPv6 地址由 8 個部分組成,每部分 16 位,共計 128 位。IPv6 地址格式類似于:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(其中 x 為十六進制位)。在 Linux 中,IPv6 地址使用。
1.ipv6報頭?
? ? ? ? 每個ipv6數據包都以ipv6包頭開頭,ipv6報頭的長度固定40字節。整體結構如下圖:
?????????在Linux中結構ipv6hdr定義如下:
2.特殊 地址類型以及用途
IPv6特殊地址類型及用途詳解
1. 鏈路本地單播地址(Link-Local Unicast Address)
格式:
fe80::/64
用途:
用于同一物理鏈路上的設備通信(如路由器鄰居發現、本地服務發現)。
每個IPv6接口必須自動生成一個鏈路本地地址,無需手動配置。
示例:
fe80::1a2b:3c4d:5e6f:7a8b
2. 全局單播地址(Global Unicast Address)
通用格式:
| 全局路由前綴(n位) | 子網ID(m位) | 接口ID(128-n-m位) |用途:
用于互聯網上的全局通信(類似IPv4公網地址)。
由ISP或網絡管理員分配。
示例:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
3. 環回地址(Loopback Address)
地址:
::1
用途:
用于本地主機的自我通信(類似IPv4的
127.0.0.1
)。測試網絡協議棧是否正常工作(如
ping ::1
)。
4. 未指定地址(Unspecified Address)
地址:
::
用途:
在初始化過程中,設備未分配地址時作為源地址。
關鍵應用:重復地址檢測(DAD,Duplicate Address Detection),避免地址沖突。
5. 映射IPv4的IPv6地址(IPv4-Mapped IPv6 Address)
格式:
::ffff:<IPv4地址>
結構:前80位為0,接下來16位為
ffff
,最后32位為IPv4地址。用途:
允許IPv6設備與IPv4設備通信(雙棧環境下)。
例如:
::ffff:192.168.1.1
?表示IPv4地址192.168.1.1
。
對比總結
地址類型 IPv6地址示例 功能 鏈路本地地址 fe80::1a2b:3c4d:5e6f
本地鏈路通信,必選地址 全局單播地址 2001:db8::1234
全球互聯網通信 環回地址 ::1
本地協議棧測試 未指定地址 ::
臨時源地址,DAD檢測 映射IPv4地址 ::ffff:192.168.1.1
IPv4與IPv6兼容通信
二、接收ipv6數據包
? ? ? ? ipv6數據包的主要接受方法是ipv6_rcv(),它是所有ipv6數據包的處理程序。
接收的流程如下:
?
三、發送ipv6數據包
?????????IPv6 傳輸路徑很像 IPv4 傳輸路徑,使用方法名稱基本都很像,在 IPv6 中,也有兩個從第 4 層發送 IPv6 數據包的主方法:一個是方法ip6_xmit()
,由 TCP、流控制傳輸協議和數據報擁塞控制協議使用;一個是方法ip6_append_data()
,由 UDP 和原始套接字等使用。
?