轉載請注明以下內容:
來源:公眾號【網絡技術干貨圈】
作者:圈圈
ID:wljsghq
IPV6基礎之鄰居發現
寫這篇文章的啟發是在群里,看到一個小兄弟說有嘗做一道IPV6的基礎題,看到該消息想著自己也沒啥事,就做一下,弄個飯錢也還行,然后就開始了。
拓撲圖為題目的拓撲
拓撲圖以上圖為例子:
接下來就分析一下ipv6報文是怎么進行通信的
在IPV4中,當主機需要和目標主機通信時,必須先通過ARP協議獲得目的主機的鏈路層地址。在IPV6中,同樣需要從IP地址解析到鏈路層地址的功能。鄰居發現協議實現了這個功能。
ARP報文是直接封裝在以太網報文中,以太網協議類型為0x0806,普遍觀點認為ARP定位為2.5層的協議。ND本身基于ICMPV6實現,以太網協議類型為0x86DD,即IPV6報文,IPV6下一個報頭字段值為58,表示ICMPV6報文,由于ND協議使用的所有報文均封裝在ICMPV6報文中,一般來說,ND被看作第3層的協議。在第三層完成地址解析,主要帶來以下幾個好處:
(1)地址解析在三層完成,不同的二層介質可以采用相同的地址解析協議。
(2)可以使用三層的安全機制避免地址解析攻擊
(3)使用組播方式發送請求報文,減少了二層網絡的性能壓力。
通過一個圖展示請求跟通告的流程
IPV6鄰居請求
以上圖為例,當PC2訪問PC1時,在PC1接口上抓包,看到的鄰居發現報文是什么樣的?
鄰居請求
IPv6節點通過鄰居請求NS(Neighbor Solicitation)消息可以得到鄰居的鏈路層地址,檢查鄰居是否可達,也可以進行重復地址檢測。
type值位135為NS報文
請求的目標的IP地址
請求目標IP地址是什么東西?
從上圖來來講,就是我路由器要去訪問PC1,那么我知道PC1的的IP地址,但是我不知道他的MAC地址,我要去根據IP地址找到他的MAC地址。
在報文中,這個請求的目標IP地址是放在Target Address字段里面的,它必須不是多播地址。
ICMPV6 Option字段
Source link-layer address源鏈路層地址:發送者的鏈路層地址,如果知道。如果Source Address是未指定地址,必須不包括在內。否則,有地址的鏈路層上應當包括源鏈路層地址。
被請求組播地址的組成
首先我們看到報文,從三層開始分析
發起這個報文的源地址是一個鏈路本地地址,而這個地址剛好是R路由器和PC1所連接的接口地址,這說明了在路由器上不存在著PC1的MAC地址,無法進行普通報文的二層封裝,需要獲取到MAC地址以此來封裝目的MAC。
然后我們看三層報文中的目的地址是一個不認識的地址,那么這個地址是從什么地方而來的呢?這又是干什么的?
在圖中我們把這個地址標注為被請求節點組播地址,那么這個被請求節點組播地址是用來干什么的?
我們現在就對這個被請求節點組播地址來分析一下看它的地址,把這個地址分為三部分來看
ff02:ff3a:a9d1
首先ff02::1是一個組播地址,簡單理解組播地址就是同一個組的地址都能接受到該報文。
然后在看ff02:ff
先看前面這104位地址,這104位地址的組成是在組播地址后面加了兩個ff,這就是在RFC中規定的被請求節點組播地址的前綴
然后我們看后面24位地址
3a:a9d1這串數字在上面的圖中看著是不是有點眼熟呢?
觀察一下,請求的單播地址,也就是PC1的地址最后面的24位數字不就是3a:a9d1,這樣一看,原來他們之間還是有關聯的
在R路由器發起這個報文的時候,目的地址其實就是PC1。
被請求節點組播MAC的組成
以太網傳輸IP單播報文的時候,鏈路層封裝的目的MAC地址使用的是接收者的MAC地址。但是在傳輸組播數據時,其目的地不再是一個具體的接收者,而是一個成員不確定的組,因此在數據鏈路層使用的是組播MAC地址。在802.3標準中,MAC地址的高字節最低bit位是組播地址標識位,該bit為1,表示該地址為組播MAC地址。廣播MAC地址可以看作是組播的特殊形式:0xFFFF-FFFF-FFFF。
IANA規定,IPv6組播MAC地址的高16位為0x3333,低32位為IPv6組播地址的低32位。
安裝IANA規定我們來解析一下這個被請求節點組播MAC是否符合規定
我們就先看高16位
33:33 符合IANA規定的高16位對吧
我們在看后面的32位
IPV6組播地址:ff02:ff3a:a9d1
組播MAC地址低位32位:ffa9:d1
完成符合IANA規定的組播MAC
IPV6鄰居通告
鄰居通告
ICMPv6鄰居通告NA(Neighbor Advertisement)消息是IPv6節點對ICMPv6鄰居請求NS(Neighbor Solicitation)消息的響應,同時IPv6節點在鏈路層變化時也可以主動發送NA消息。
對于請求的通告
從圖中我們看Target Address字段,他是自身的IPV6地址,這是在給路由器回復確認,你請求的地址給你回復了。
對于請求的通告,是在NS消息(該消息催促這個通告)中的Target Address字段。對于非請求通告,是其鏈路層地址已經改變的地址。Target Address必須不是多播地址。
ICMPV6 Options字段
Target link-layer address: 目標的鏈路層地址,即,通告發送者。當響應多播請求時,在有地址的鏈路層上必須包括此選項。當響應單播Neighbor Solicitation時應當包括此選項,響應自身的MAC地址給路由器。
IPV6鄰居表
在IPV4中我們可以通過ARP表項查看IP地址對應的MAC地址和接口,那么在IPV6中我們是不是也有類似ARP表項的一種表呢?
沒錯,在IPV6中我們可以通過鄰居表查看到對應的信息
通過以下命令可以查看鄰居表
displayipv6neighbors #查看鄰居表以及鄰居表回顯信息displayipv6neighbors ----------------------------------------------------------------------------- IPv6Address:20014005211FE3A:A9D1 Link-layer:5489-9821-4f6dState:REACH Interface:GE0/0/0Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE IPv6Address:20014005:9 Link-layer:5489-9807-7f7cState:REACH Interface:GE0/0/1Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE IPv6Address:20014005:10 Link-layer:5489-985b-37dbState:REACH Interface:GE0/0/1Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE ----------------------------------------------------------------------------- Total:3Dynamic:3Static:0
回顯字段解釋
項目 | 描述 |
---|---|
IPv6 Address | 鄰居的IPv6地址。 |
Link-layer | 鄰居的鏈路層地址(鄰居的MAC地址)。 |
State | 鄰居項的狀態,有以下5種狀態: INCMP:鄰居不可達。正在進行地址解析,鄰居的鏈路層地址未探測到,如果解析成功,則進入REACH狀態。 REACH:鄰居可達。表示在規定時間(鄰居可達時間,缺省情況下是30秒)內鄰居可達。如果超過規定時間,該表項沒有被使用,則表項進入STALE狀態。 STALE:鄰居是否可達未知。表明該表項在規定時間(鄰居可達時間,缺省情況下是30秒)內沒有被使用。此時除非有發送到鄰居的報文,否則不對鄰居是否可達進行探測。 DELAY:鄰居是否可達未知。已向鄰居發送報文,如果在指定時間內沒有收到響應,則進入PROBE狀態。 PROBE:鄰居是否可達未知。已向鄰居發送鄰居請求報文,探測鄰居是否可達。在規定時間內收到回復,則進入REACH狀態;沒有收到回復,則進入INCMP狀態。 |
Interface | 鄰居項所屬的接口名稱。 |
Age | 鄰居項的建立時間,分為靜態和動態兩種情況: 靜態項顯示“–”。 動態項顯示上次可達以來經過的時間(單位是分鐘),如果始終不可達則顯示“#”(只適用于動態項)。 |
VLAN | 鄰居所屬的VLAN編號。 |
VPN name | 鄰居所屬的VPN實例名稱。 |
CEVLAN | 內層VLAN編號。 |
Is Router | 鄰居發送的NA報文中是否攜帶R標記: 當NA報文中攜帶R標記時,則顯示“TRUE”。此時鄰居是路由設備。 當NA報文中沒有攜帶R標記時,則顯示“FALSE”。此時鄰居可能是PC或者是發送的NA報文中沒有攜帶R標記的路由設備。 |
Secure FLAG | 該鄰居表項是否安全,分為安全和非安全兩種情況: 如果是靜態鄰居表項或鄰居使能了鄰居安全功能則顯示“SECURE”。 如果鄰居沒有使能安全功能,并且是動態鄰居表項則顯示“UN-SECURE”。 |
Total | 所有的鄰居表項數目。 |
Dynamic | 動態鄰居表項數目。 |
Static | 靜態鄰居表項數目。 |
-
以太網
+關注
關注
40文章
5532瀏覽量
173860 -
通信
+關注
關注
18文章
6137瀏覽量
137083 -
網絡
+關注
關注
14文章
7690瀏覽量
90030 -
IPv6
+關注
關注
6文章
702瀏覽量
60391
原文標題:【路由交換】IPV6基礎之鄰居發現
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
IPv6進階:VRRP6實驗配置
IPv6地址是什么,IPv6的意思
基于IPv6的Winsock網絡編程
IPv6的特色應用
labview UDP通信實現IPV6
華為IPV6膠片
IPv6,IPv6的應用,IPv6的原理是什么?
IPv6結構,什么是IPv6結構
IPv6的地址,什么是IPv6的地址
淺談IPV6(介紹IPV6的特點和功能)
IPv6技術 華為3Com技術有限公司_部分1
IPv4與IPv6無狀態的雙向通信機制

評論