轉(zhuǎn)載請(qǐng)注明以下內(nèi)容:
來(lái)源:公眾號(hào)【網(wǎng)絡(luò)技術(shù)干貨圈】
作者:圈圈
ID:wljsghq
IPV6基礎(chǔ)之鄰居發(fā)現(xiàn)
寫(xiě)這篇文章的啟發(fā)是在群里,看到一個(gè)小兄弟說(shuō)有嘗做一道IPV6的基礎(chǔ)題,看到該消息想著自己也沒(méi)啥事,就做一下,弄個(gè)飯錢也還行,然后就開(kāi)始了。
拓?fù)鋱D為題目的拓?fù)?/p>
拓?fù)鋱D以上圖為例子:
接下來(lái)就分析一下ipv6報(bào)文是怎么進(jìn)行通信的
在IPV4中,當(dāng)主機(jī)需要和目標(biāo)主機(jī)通信時(shí),必須先通過(guò)ARP協(xié)議獲得目的主機(jī)的鏈路層地址。在IPV6中,同樣需要從IP地址解析到鏈路層地址的功能。鄰居發(fā)現(xiàn)協(xié)議實(shí)現(xiàn)了這個(gè)功能。
ARP報(bào)文是直接封裝在以太網(wǎng)報(bào)文中,以太網(wǎng)協(xié)議類型為0x0806,普遍觀點(diǎn)認(rèn)為ARP定位為2.5層的協(xié)議。ND本身基于ICMPV6實(shí)現(xiàn),以太網(wǎng)協(xié)議類型為0x86DD,即IPV6報(bào)文,IPV6下一個(gè)報(bào)頭字段值為58,表示ICMPV6報(bào)文,由于ND協(xié)議使用的所有報(bào)文均封裝在ICMPV6報(bào)文中,一般來(lái)說(shuō),ND被看作第3層的協(xié)議。在第三層完成地址解析,主要帶來(lái)以下幾個(gè)好處:
(1)地址解析在三層完成,不同的二層介質(zhì)可以采用相同的地址解析協(xié)議。
(2)可以使用三層的安全機(jī)制避免地址解析攻擊
(3)使用組播方式發(fā)送請(qǐng)求報(bào)文,減少了二層網(wǎng)絡(luò)的性能壓力。
通過(guò)一個(gè)圖展示請(qǐng)求跟通告的流程
IPV6鄰居請(qǐng)求
以上圖為例,當(dāng)PC2訪問(wèn)PC1時(shí),在PC1接口上抓包,看到的鄰居發(fā)現(xiàn)報(bào)文是什么樣的?
鄰居請(qǐng)求
IPv6節(jié)點(diǎn)通過(guò)鄰居請(qǐng)求NS(Neighbor Solicitation)消息可以得到鄰居的鏈路層地址,檢查鄰居是否可達(dá),也可以進(jìn)行重復(fù)地址檢測(cè)。
type值位135為NS報(bào)文
請(qǐng)求的目標(biāo)的IP地址
請(qǐng)求目標(biāo)IP地址是什么東西?
從上圖來(lái)來(lái)講,就是我路由器要去訪問(wèn)PC1,那么我知道PC1的的IP地址,但是我不知道他的MAC地址,我要去根據(jù)IP地址找到他的MAC地址。
在報(bào)文中,這個(gè)請(qǐng)求的目標(biāo)IP地址是放在Target Address字段里面的,它必須不是多播地址。
ICMPV6 Option字段
Source link-layer address源鏈路層地址:發(fā)送者的鏈路層地址,如果知道。如果Source Address是未指定地址,必須不包括在內(nèi)。否則,有地址的鏈路層上應(yīng)當(dāng)包括源鏈路層地址。
被請(qǐng)求組播地址的組成
首先我們看到報(bào)文,從三層開(kāi)始分析
發(fā)起這個(gè)報(bào)文的源地址是一個(gè)鏈路本地地址,而這個(gè)地址剛好是R路由器和PC1所連接的接口地址,這說(shuō)明了在路由器上不存在著PC1的MAC地址,無(wú)法進(jìn)行普通報(bào)文的二層封裝,需要獲取到MAC地址以此來(lái)封裝目的MAC。
然后我們看三層報(bào)文中的目的地址是一個(gè)不認(rèn)識(shí)的地址,那么這個(gè)地址是從什么地方而來(lái)的呢?這又是干什么的?
在圖中我們把這個(gè)地址標(biāo)注為被請(qǐng)求節(jié)點(diǎn)組播地址,那么這個(gè)被請(qǐng)求節(jié)點(diǎn)組播地址是用來(lái)干什么的?
我們現(xiàn)在就對(duì)這個(gè)被請(qǐng)求節(jié)點(diǎn)組播地址來(lái)分析一下看它的地址,把這個(gè)地址分為三部分來(lái)看
ff02:ff3a:a9d1
首先f(wàn)f02::1是一個(gè)組播地址,簡(jiǎn)單理解組播地址就是同一個(gè)組的地址都能接受到該報(bào)文。
然后在看ff02:ff
先看前面這104位地址,這104位地址的組成是在組播地址后面加了兩個(gè)ff,這就是在RFC中規(guī)定的被請(qǐng)求節(jié)點(diǎn)組播地址的前綴
然后我們看后面24位地址
3a:a9d1這串?dāng)?shù)字在上面的圖中看著是不是有點(diǎn)眼熟呢?
觀察一下,請(qǐng)求的單播地址,也就是PC1的地址最后面的24位數(shù)字不就是3a:a9d1,這樣一看,原來(lái)他們之間還是有關(guān)聯(lián)的
在R路由器發(fā)起這個(gè)報(bào)文的時(shí)候,目的地址其實(shí)就是PC1。
被請(qǐng)求節(jié)點(diǎn)組播MAC的組成
以太網(wǎng)傳輸IP單播報(bào)文的時(shí)候,鏈路層封裝的目的MAC地址使用的是接收者的MAC地址。但是在傳輸組播數(shù)據(jù)時(shí),其目的地不再是一個(gè)具體的接收者,而是一個(gè)成員不確定的組,因此在數(shù)據(jù)鏈路層使用的是組播MAC地址。在802.3標(biāo)準(zhǔn)中,MAC地址的高字節(jié)最低bit位是組播地址標(biāo)識(shí)位,該bit為1,表示該地址為組播MAC地址。廣播MAC地址可以看作是組播的特殊形式:0xFFFF-FFFF-FFFF。
IANA規(guī)定,IPv6組播MAC地址的高16位為0x3333,低32位為IPv6組播地址的低32位。
安裝IANA規(guī)定我們來(lái)解析一下這個(gè)被請(qǐng)求節(jié)點(diǎn)組播MAC是否符合規(guī)定
我們就先看高16位
33:33 符合IANA規(guī)定的高16位對(duì)吧
我們?cè)诳春竺娴?2位
IPV6組播地址:ff02:ff3a:a9d1
組播MAC地址低位32位:ffa9:d1
完成符合IANA規(guī)定的組播MAC
IPV6鄰居通告
鄰居通告
ICMPv6鄰居通告NA(Neighbor Advertisement)消息是IPv6節(jié)點(diǎn)對(duì)ICMPv6鄰居請(qǐng)求NS(Neighbor Solicitation)消息的響應(yīng),同時(shí)IPv6節(jié)點(diǎn)在鏈路層變化時(shí)也可以主動(dòng)發(fā)送NA消息。
對(duì)于請(qǐng)求的通告
從圖中我們看Target Address字段,他是自身的IPV6地址,這是在給路由器回復(fù)確認(rèn),你請(qǐng)求的地址給你回復(fù)了。
對(duì)于請(qǐng)求的通告,是在NS消息(該消息催促這個(gè)通告)中的Target Address字段。對(duì)于非請(qǐng)求通告,是其鏈路層地址已經(jīng)改變的地址。Target Address必須不是多播地址。
ICMPV6 Options字段
Target link-layer address: 目標(biāo)的鏈路層地址,即,通告發(fā)送者。當(dāng)響應(yīng)多播請(qǐng)求時(shí),在有地址的鏈路層上必須包括此選項(xiàng)。當(dāng)響應(yīng)單播Neighbor Solicitation時(shí)應(yīng)當(dāng)包括此選項(xiàng),響應(yīng)自身的MAC地址給路由器。
IPV6鄰居表
在IPV4中我們可以通過(guò)ARP表項(xiàng)查看IP地址對(duì)應(yīng)的MAC地址和接口,那么在IPV6中我們是不是也有類似ARP表項(xiàng)的一種表呢?
沒(méi)錯(cuò),在IPV6中我們可以通過(guò)鄰居表查看到對(duì)應(yīng)的信息
通過(guò)以下命令可以查看鄰居表
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
回顯字段解釋
項(xiàng)目 | 描述 |
---|---|
IPv6 Address | 鄰居的IPv6地址。 |
Link-layer | 鄰居的鏈路層地址(鄰居的MAC地址)。 |
State | 鄰居項(xiàng)的狀態(tài),有以下5種狀態(tài): INCMP:鄰居不可達(dá)。正在進(jìn)行地址解析,鄰居的鏈路層地址未探測(cè)到,如果解析成功,則進(jìn)入REACH狀態(tài)。 REACH:鄰居可達(dá)。表示在規(guī)定時(shí)間(鄰居可達(dá)時(shí)間,缺省情況下是30秒)內(nèi)鄰居可達(dá)。如果超過(guò)規(guī)定時(shí)間,該表項(xiàng)沒(méi)有被使用,則表項(xiàng)進(jìn)入STALE狀態(tài)。 STALE:鄰居是否可達(dá)未知。表明該表項(xiàng)在規(guī)定時(shí)間(鄰居可達(dá)時(shí)間,缺省情況下是30秒)內(nèi)沒(méi)有被使用。此時(shí)除非有發(fā)送到鄰居的報(bào)文,否則不對(duì)鄰居是否可達(dá)進(jìn)行探測(cè)。 DELAY:鄰居是否可達(dá)未知。已向鄰居發(fā)送報(bào)文,如果在指定時(shí)間內(nèi)沒(méi)有收到響應(yīng),則進(jìn)入PROBE狀態(tài)。 PROBE:鄰居是否可達(dá)未知。已向鄰居發(fā)送鄰居請(qǐng)求報(bào)文,探測(cè)鄰居是否可達(dá)。在規(guī)定時(shí)間內(nèi)收到回復(fù),則進(jìn)入REACH狀態(tài);沒(méi)有收到回復(fù),則進(jìn)入INCMP狀態(tài)。 |
Interface | 鄰居項(xiàng)所屬的接口名稱。 |
Age | 鄰居項(xiàng)的建立時(shí)間,分為靜態(tài)和動(dòng)態(tài)兩種情況: 靜態(tài)項(xiàng)顯示“–”。 動(dòng)態(tài)項(xiàng)顯示上次可達(dá)以來(lái)經(jīng)過(guò)的時(shí)間(單位是分鐘),如果始終不可達(dá)則顯示“#”(只適用于動(dòng)態(tài)項(xiàng))。 |
VLAN | 鄰居所屬的VLAN編號(hào)。 |
VPN name | 鄰居所屬的VPN實(shí)例名稱。 |
CEVLAN | 內(nèi)層VLAN編號(hào)。 |
Is Router | 鄰居發(fā)送的NA報(bào)文中是否攜帶R標(biāo)記: 當(dāng)NA報(bào)文中攜帶R標(biāo)記時(shí),則顯示“TRUE”。此時(shí)鄰居是路由設(shè)備。 當(dāng)NA報(bào)文中沒(méi)有攜帶R標(biāo)記時(shí),則顯示“FALSE”。此時(shí)鄰居可能是PC或者是發(fā)送的NA報(bào)文中沒(méi)有攜帶R標(biāo)記的路由設(shè)備。 |
Secure FLAG | 該鄰居表項(xiàng)是否安全,分為安全和非安全兩種情況: 如果是靜態(tài)鄰居表項(xiàng)或鄰居使能了鄰居安全功能則顯示“SECURE”。 如果鄰居沒(méi)有使能安全功能,并且是動(dòng)態(tài)鄰居表項(xiàng)則顯示“UN-SECURE”。 |
Total | 所有的鄰居表項(xiàng)數(shù)目。 |
Dynamic | 動(dòng)態(tài)鄰居表項(xiàng)數(shù)目。 |
Static | 靜態(tài)鄰居表項(xiàng)數(shù)目。 |
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5439瀏覽量
171985 -
通信
+關(guān)注
關(guān)注
18文章
6042瀏覽量
136138 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7580瀏覽量
88933 -
IPv6
+關(guān)注
關(guān)注
6文章
690瀏覽量
59439
原文標(biāo)題:【路由交換】IPV6基礎(chǔ)之鄰居發(fā)現(xiàn)
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論