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

評論