IPv6 群組網路中是如何發現鄰居的? IPv6 位址設定方式 SLAAC 和 DHCPv6 又是啥?
本期給大家分享IPv6相關知識。
ICMPv6協定概述
ICMPv6是IPv6中重要的基礎協定之一;
lCMPv6主要用於網路診斷、傳遞錯誤訊息、鄰居發現、群播發現、IPv6無狀態位址配置等;
以下是ICMPv6封包的基本格式:
Type欄位定義了ICMPv6封包的訊息類型;
Code欄位取決於Type值,可將ICMPv6封包細分為更具體的用途。
l以下是ICMPv6封包的一些重要的用途和分類,其中鄰居發現是最重要的部分,是IPv6鄰居節點互相通訊的基礎。
確定鄰居鏈路層位址
鄰居發現的第一個作用是確定鄰居的連結層位址。 IPv6協定體系淘汰了ARP,而使用ICMPv6來發現鄰居的連結層位址;
確定鄰居鏈結層位址透過NS和NA交互實現,其中NS即NeighborSolicitation(鄰居發現),NA即NeighborAdvertisement(鄰居公告);
確定鄰居連結層位址的工作流程如下:
重複地址偵測
鄰居發現的另一個作用是重複位址偵測(Duplicate Address Detection,簡稱DAD);
重複地址檢測也是透過NS和NA交互作用實現;
重複地址檢測的工作原理如下:
路由器發現
透過鄰居發現報文,還可以發現網路中的路由器;
路由器發現透過RA和RS互動實現,其中RA即RouterSolicitation(路由器發現),
RS即RouterAdvertisement(路由器公告)
路由器發現的工作原理如下:
IPv6位址自動配置
IPv6位址自動設定可以分為無狀態位址自動配置(SLAAC)和有狀態位址自動設定(DHCPv6);
使用無狀態位址自動配置還是有狀態位址自動配置由伺服器決定;
客戶端透過伺服器回覆的RA封包中的M、O標誌位決定使用無狀態還是有狀態位址配置;
由於IPv6位址資源充足,在實際應用程式中終端取得到的都是IPv6公網位址。
(1) SLAAC:無狀態位址自動配置
無狀態位址自動設定協定( Stateless Address Autoconfiguration,簡稱SLAAC)適用於伺服器不需要嚴格控制客戶端所使用IPv6位址的場景。
無狀態位址自動配置協定透過RA和RS互動實現,詳細流程如下:
(2) DHCPv6:有狀態位址自動配置
Dynamic Host Configuration Protocol for IPv6 ,簡稱DHCPv6 ,是專用於IPv6位址自動設定的協議,透過DHCPv6取得IPv6位址也稱為有狀態位址自動設定。
DHCPv6定義了多種封包類型(Msg-type),最重要的位址申請主要由Solicit、Advertise、Request、Reply四種類型的封包互動實作。
有狀態位址自動設定適用於伺服器需要對客戶端使用的IPv6位址進行嚴格控制的場景;
有狀態位址自動設定位址取得主要透過DHCPv6互動實現,其中也涉及到路由器發現和重複位址偵測的過程,其主要流程如下: