IPV6重復地址檢測機制


IPV6重復地址檢測機制

沖突檢測

在ipv4當中,我們的設備如果是靜態地址,在啟動網絡服務的時候,設備會向外發送一個免費arp報文用做沖突檢測,DHCP在分配地址時候,也會做沖突檢測。IPV4當中做沖突檢測主要依賴的還是arp報文。

在IPV6當中肯定也是會有沖突檢測功能的,在IPV6當中主要使用的是NS和NA報文,就是鄰居請求報文和鄰居應答報文,NS和NA報文的作用當然不僅限於此,這一點與IPV4比較類似,arp報文不僅用於地址沖突檢測,還有很多其它用途。

IPV6比IPV4要復雜一些,IPV6我們知道的,即使我們給接口配置了一個單播地址,它其實還會生成其它地址或組播地址,比如當我們給接口配置了一個單播地址之后,在地址生效之前肯定會做沖突檢測,但是別忘了,接口上還有一個鏈路本地地址,這個地址同樣也要做地址重復檢測的,在IPV6當中有一個原則,任何一個單播地址要想正常使用,都要做地址重復檢測。

報文分析

在ipv4當中,當電腦發現arp地址沖突檢測的時候,源MAC地址就是自己的MAC,目標MAC地址全F,也就廣播嘛!這里面有一個問題,ARP廣播的源IP地址是多少?去特么的,ipv4當中的arp是二層協議,在二層的概念里面哪有IP地址,這個問題就是一個坑,在ipv4當中,arp報文的源地址那一列只有源MAC,沒有源IP,而目的地址那一列,只有一個廣播地址。

在IPV6當中,通過NS和NA報文替代arp,而NS和NA報文是三層報文,在三層報文當中是有源IP地址的,那在地址沖突檢測的時候源地址添加多少呢?如果就添加將要使用的地址不太正常,因為地址還沒有經過沖突檢測怎么就能封裝到報文當中做源IP地址使用呢?如果一定要封裝一個,那封裝什么好呢?明明當前沒有地址,正是因為沒有地址,所以我要請求一個地址,但是請求地址的時候卻讓我添寫一個源地址,好像陷入到一個死循環當中了,在IPV6當中專門規划了一個地址用來應對這種尷尬的局面,那就是冒號冒號,如果沒有IP地址的話,源地址上就添寫::,源MAC就是自己接口的MAC地址,這一點和arp一樣,那目標IP和目標MAC添加什么呢?目標IP是我們要使用的IP地址嗎?不是的,我們認為目標IP是我們要使用的IP地址,其實不是這樣的,這個地方也是一個坑,目標IP不是我們要使用的IP地址,我們要使用的IP地址其實被封裝到報文當中的內容里面去了,我們來看看真實的情況:

看到了吧,目標IP是接口已經加入到的組播地址,也就是將要使用的IP地址自動加入的組播地址,既然目標IP是組播地址,那這個報文也是組播報文,目標MAC也是組播,注意在ENSP當中,PC是沒有地址沖突檢測的功能的,只有路由器才有。

如上圖所示,當一個設備配置了IPV6的靜態地址之后,當它啟動之后,會發送兩個NS報文,都是用於地址沖突檢測的,一個是我們上述講過的,還有一個就是鏈路本地地址,這個地址的NS與上述有點不一樣,源IP還是::,源MAC也是自己的,目標IP就是鏈路本地地址加入的組播地址,這一點與上述相似,但目標IP就變了,如下所示,反正也是具體地址加入到的組播地址。


就是目標MAC有些奇怪,但都是33開頭的,反正這樣的地址都是組播MAC地址。

面對沖突

回復報文是通過NA報文進行回復的。
NA真的是很真的,源IP是真的IP,目標IP是固定的ff02::1,ff02::1這樣的地址就相當於IPV4的廣播,所有的節點都會收到,兩層意思,一層意思是告知對方這個地址自己已經用了,另一層意思是告訴所有節點,自己IP是這個。

在路由器上如果沖突了,接口的IP會卡在duplicate這個狀態,如下所示:

NA報文沖突報文有一個特點,FLAG位當中的S位是0的。

規律


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM