ICMPv6與鄰居發現協議

2021-12-30 00:17:24 字數 4080 閱讀 7257

icmpv6與鄰居發現協議

icmpv6包括差錯訊息和通知訊息兩類。

差錯訊息:1,目的地不可達;2,資料報過大;3,超時;4,引數錯誤。

通知訊息:1,會現請求;2,回顯應答;

1,多播偵聽查詢;2,多播偵聽報告;3,多播偵聽完成報告;

1,路由請求訊息,2,路由宣告訊息;3,鄰居請求訊息;4,鄰居宣告訊息;5,重定向訊息;

通用訊息格式:

型別(8bit)                            **(8bit)                    校驗和(16bit)

訊息正文

型別:差錯訊息(0-127)     通知訊息(128-255)

icmpv6差錯訊息的作用是告訴裝置其傳送的資料報無法被正確傳送的原因。

icmpv6通知訊息的作用是為各種測試、診斷和支撐功能提供必需的訊息。

差錯訊息:

1,目的地不可達

無去往目的地的路由 (路由表中無缺省路由,網路不可達)

與目的地通訊被管理性禁止 (訪問控制列表或其他包過濾策略)

超出了原位址範圍 (源位址是鏈路本地位址且目的位址是全域性單播位址)

位址不可達 (主機不可達)

埠不可達

源位址與入站/出站策略相牴觸

拒絕路由到目的地

2,資料報超大

ipv6只在源端(遠端可以是主機,或是路由器)執行分段操作,當ipv6路由器收到資料報大於出站介面的mtu時,就會丟棄該資料並向遠端傳送icmpv6資料報超大訊息。資料報超大訊息中包含了該鏈路的mtu值。

ipv4的mtu最小是68位元組。而ipv6要求所有鏈路的最小mtu是1280位元組。

路徑mtu發現程序:先傳送pmtu為1500,如果出現差錯,這根據出錯報文中的mtu值繼續傳送,知道目的地。得到mtu。

3,超時 : 1,條數減為0;2,重組超時。

4,引數錯誤

icmpv6通告訊息;

1,回顯請求和回顯應答;

2,多播的一些。

3,鄰居發現協議,這裡主要說這個。

使用鄰居發現協議的原因:

slaac(無狀態位址自動配置),自動確認網路字首、預設閘道器及氣體配置資訊。

確定自己將使用的鏈路本地位址或全域性單播位址是否被其他裝置所用(dad)

識別出目的ipv6位址後,確定網路上的裝置的二層鏈路位址(通常是乙太網,相當於位址解析)

當路由器或去往路由器的路徑出現故障後,主機主動尋找相應的替代裝置或路徑。

了解哪些鄰居可達以及哪些鄰居不可達(nud)

1, 路由請求訊息和路由宣告訊息:

路由宣告訊息是週期性傳送的,也可以作為路由請求訊息的相應訊息,它主要為主機提供編址資訊以及其他配置訊息,並且是slaac的重要組成部分。

使用的預設閘道器是路由通告報文的源位址,也是鏈路本地位址,路由宣告訊息可以作為路由請求訊息的應答報文,但是始終傳送給全部節點多播位址。

2,鄰居請求訊息和鄰居宣告訊息

另據請求和鄰居宣告訊息是以下三個重要程序的組成部分:

位址解析

dad  (duplicate address detection,重複位址檢測)

nud (neighbor unreachability detection 鄰居不可達性檢測)

鄰居宣告訊息既可以作為鄰居請求訊息的相應訊息,也可以根據需要自主傳送,以快速傳播新訊息。

在討論鄰居宣告訊息和鄰居請求訊息之前,先討論兩個重要的資料結構:鄰居快取表(neighbor cache ),和目的地快取表(destination cache);

主機需要為每個介面維護兩張表或快取表:

1,鄰居快取表

2,目的地快取表

鄰居快取表相當於ipv4中的arp快取表,鄰居快取表負責維護最近流量所送往鄰居的資訊列表,表項中包含了ipv6單播位址及其對應的二層鏈路位址。裝置通過接收到鄰居宣告訊息中的資訊來維護該快取表。

目的地快取表維護的是最近被傳送的目的地列表,包括其他鏈路或其他網路上的目的地,此時的表項是嚇一跳路由器的二層鏈路位址,目的地快取表可以是鄰居快取表的子集。

位址解析:類似與ipv4中的arp程序。

1, pc1向pc2發起ping命令。

2,pc1 根據pc2的ip位址檢查另據快取表以獲得相應的二層mac位址,如果沒有則3

3,pc1暫停傳送該包,而是向請求節點多播位址傳送一條鄰居請求訊息,鄰居請求訊息中的目標位址就是ping命令中的ipv6位址。

4,pc2收到鄰居請求訊息之後,向pc1傳送鄰居宣告訊息,在訊息中提供其鏈路層mac位址,鄰居宣告訊息是單播方式傳送給pc1的,

5,pc1接收到鄰居宣告訊息,更新其鄰居快取表

6,pc1有了其mac位址,就可以傳送幀給pc2了。

7,pc2以回顯應答訊息響應。

組播mac位址是33:33開頭,後面取ip位址的後32位。

有關請求節點多播位址的詳細資訊: 裝置會利用對映技術為每個單播位址自動建立乙個請求節點多播位址,清秋節點多播位址是通過將字首ff02:0:0:0:0:1:ff00::/104附加單播位址的最後24bit建立而成。

pc2的全域性單播位址

全域性路由字首        子網id                介面id    24bit

2001:0db8:aaaa   0001     0000 0000 00    00:0200

pc2的ipv6請求節點多播位址            (複製了上面的後24bit)

ff02 0000 0000 0000 0000 0001 ff 00 0200

請求節點多播位址對映為乙太網目的地mac位址     33-33 ff-00-02-00 (複製了請求多播位址的後32bit)

pc2的ipv6請求節點多播位址 ff02::1:ff00:200

pc2對映的請求及誒單乙太網位址:33-33-ff-00-02-00

雖然機率很小,但其他裝置的介面id仍然有可能擁有相同的24bit,不過這不會給處理資料報和檢查icmpv6目標位址帶來問題,因為在這個過程中,其他裝置能夠確定該目標位址與自己的單播位址不匹配,因而不會用鄰居宣告訊息進行響應。

在ipv4中看,arp以廣播方式傳送給mac為ff-ff-ff-ff-ff-ff,要傳送給所有裝置,ipv6的效率要高很多。

重複位址檢查:裝置利用dad機制來確定其希望使用的位址是否已經被其他裝置使用,rfc4861建議在將單播位址分配給介面之前,要對每個單薄位址(鏈路本地單播位址或全域性單播位址)都要執行dad程序,而不管採取何種位址配置方式(slaac,dhcpv6,或手動配置)。

1,  pc1 為其乙太網介面自動建立其鏈路本地單播位址,將字首fe80::/10附加到隨機生成的64bit介面id上。

2,  pc1傳送鄰居請求訊息以確定是否有其他裝置正在使用該鏈路本地位址。

源mac位址:pc1的mac位址

目的mac位址:33-33多播位址

ipv6包頭:

源ipv6位址:未指定 ::

目的ipv6位址,是於pc1 的鏈路本地位址相對應的請求多播位址

目標ipv6位址:pc1自己的鏈路本地位址。如果其他裝置正在使用改位址,那麼需要用鄰居宣告訊息進行響應。 

3,pc1設定乙個定時器,如果設定時間內沒有收到響應資訊,則可以使用該位址。

鄰居不可達性檢測:由於兩台ipv6裝置之間出現通訊故障的原因很多,如主機掉電或電纜故障,因此裝置要主動跟蹤資料報將要傳送的另據的可達性狀態。 

確認可達性的方式有兩種:

1,響應鄰居請求訊息的鄰居宣告訊息。

2,上層程序指示連線成功,如活動tcp連線中的確認資訊。

無狀態位址自動配置:

slaac(無狀態位址自動配置)是一種允許主機通過組合本地可用洗**與路由器宣告的資訊生成自己的單播位址的機制。自動配置程序包括通過slaac生成鏈路本地位址和全域性位址,還包括位址重複檢測的步驟,以用來驗證位址在鏈路上的唯一性。

slaac通過以下4個步驟完成配置:

第一步:建立鏈路本地單播:主機建立自己的鏈路本地位址,無需手動配置或借助dhcpv6伺服器。鏈路本地位址的字首是fe80::/10,附加到64bit的介面id即可。介面id通過eui-64格式或者隨機生成方式進行建立。

比如主機傳送資料給它的預設路由器a,a**資料給路由器b,並且發現路由器b和a在乙個網段內,則a就會向主機傳送乙個重定向訊息,主機收到重定向訊息後,資料報會直接傳送給路由器b。

IPV6及ICMPV6協議的功能與操作

ipv6特點 1 位址容量大大擴充套件,有原來32位,擴充套件到128 2 支援分層位址結構,有利於定址,有利於聚合 提高路由器效率 3 無須nat 4 擴充套件支援 ipv6單播 組播和任意播位址,5 位址配置比較簡單 有狀態位址配置,無狀態位址配置 6 簡化了報文格式 7 擴充套件報文頭部,選項...

演示 取證ICMPv6字首請求與字首公告訊息原理

演示 取證icmpv 6字首請求與字首公告訊息原理 前面描述了ipv6環境中關於字首公告的理論內容,現在開始取證ipv6位址字首公告的報文資料幀,以加強對理論的理解。演示目標 nipv6 位址字首位址是週期性進行公布。n取證分析路由器ipv6位址字首公告所使用的源位址和目標位址。n取證分析ipv6位...

IPV6鄰居發現協議學習筆記

一 基本概念 nd neighbor discovery 鄰居發現協議 nd協議是ipv6的乙個關鍵協議,它綜合了ipv4中的一些協議如arp icmp路由器發現和icmp重定向等,並對它們做了改進。二 基本功能 1.位址解析 已知目的節點的網路層位址,確定資料鏈路層位址的方法。nd中的位址解析功能...