-
ICMPv6
鎖定
ICMPv6基本功能
互聯網控制信息協議是IP協議的一個重要組成部分。ICMPv6向源節點報告關於目的地址傳輸IPv6包的錯誤和信息,具有差錯報告、網絡診斷、鄰節點發現和多播實現等功能。在IPv6中,ICMPv6實現IPv4中ICMP、ARP和IGMP的功能。
IANA(因特網地址授權委員會)定義ICMPv6的協議號為58。
ND和NI協議也是基於ICMPv6。
- 協助解決故障。ICMP支持Echo功能,即在兩個主機間一個往返路徑上發送一個包。Ping是一種基於這種特性的通用網絡管理工具,它將傳輸一系列的包,測量平均往返次數並計算丟失百分比。
- 通告超時。如果一個IP包的TTL降低到零,路由器就會丟棄此包,這時會生成一個 ICMP 包通告這一事實。TraceRoute是一個工具,它通過發送小TTL值的包及監視ICMP超時通告可以顯示網絡路由。
ICMPv6報文
ICMPv6封裝
IPv6基本首部 | 擴展首部…… | ICMPv6報文首部 | ICMPv6報文體 |
ICMPv6格式
類型(1字節) | 代碼(1字節) | 校驗和(2字節) |
ICMP報文體(可變長) |
- 類型:標識ICMPv6報文類型,它的值根據報文的內容來確定。
- 代碼:用於確定ICMPv6進一步的信息,對同一類型的報文進行了更詳細的分類。
- 校驗和:用於檢測ICMPv6的報文是否正確傳送。
- 報文體:用於返回出錯的參數和記錄出錯報文的片段,幫助源節點判斷錯誤的原因或是其它參數。
ICMPv6報文源地址的測定
一個送出ICMPv6報文的節點在計算校驗和以前要在IPv6首部中決定源地址和目標IPv6地址。如果節點有多於一個的單目地址,它必須按以下的原則選定源地址:
- 如果報文是對發往該節點的某一單目地址進行響應的,那應答報文的源地址必須是這個單目地址。
- 如果報文是對發往該節點為組員的多播組或任意播組的報文進行響應的,那麼應答報文的源地址必須是一個屬於接收到多播或任意播包接口的單目地址。
- 如果報文是對發往一個並不屬於該節點地址的報文進行響應的,那麼源地址必須是屬於該節點且最有利於診斷錯誤的那個單目地址。比如,如果報文是對一個不能正常轉發包的行為進行響應的,源地址就是那個屬於轉發包失敗的接口的單目地址。
ICMPv6校驗和的計算
校驗和16bit,計算範圍包括兩部分。
- ICMPv6報文。
- IPv6偽首部(偽首部中下一首部字段的值為58)。
源地址(16字節) | |
目的地址(16字節) | |
有效載荷長度(4字節) | |
0(3字節) | 下一首部(=58,1字節) |
計算方法:
- 校驗和字段被設置為0。
- ICMPv6對校驗範圍內的數據以16bit為單位,做1的補碼的加法運算。
- 在ICMPv6首部校驗和字段中,置入此16bit的和。
ICMPv6報文處理規則
- 當接收到ICMPv6差錯報告報文時,如果無法識別具體的類型,必須將它交給上層協議模塊進行處理。
- 當接收到ICMPv6信息報文時,如果無法識別具體的類型,必須將它丟棄。
- 所有的ICMPv6差錯報告報文,都應該在IPv6所要求的最小MTU允許範圍內,儘可能多地包括引發該ICMPv6差錯報文的IPv6分組片段,以便給IPv6分組的源節點提供儘可能多的診斷信息。
- 在需要將ICMPv6報文上傳給其上層協議模塊處理的情況下,上層協議的具體類型,應該從封裝該ICMPv6報文的IPv6分組的下一首部字段中獲取。但是,如果該IPv6分組攜帶有很多擴展首部,則可能會導致有關上層協議類型的信息沒有被包含在ICMPv6報文中。這時,只能將該差錯報告報文在IP層處理完後丟棄掉。
- 不能產生ICMPv6差錯報告報文的發送情況:1、一個ICMPv6差錯報告報文。這主要是為了避免無休止地產生ICMPv6報文而引起網絡擁塞。2、一個發往多播地址的IPv6分組。但有兩個例外:當使用IPv6多播地址進行路徑MTU探測時,可以發送“報文過長”差錯報告報文;允許使用參數錯誤報文報告:存在不可識別的TLV可選項。3、鏈路層的多播報文。對這類報文也具有與上面第二類情況相同的例外。4、鏈路層的廣播報文。對這類報文也具有與上面第二類情況相同的例外。5、IPv6分組的源地址無法唯一確定一個單獨節點時,這種情況也不能夠引起ICMPv6差錯報告報文的發送。例如,IPv6不明確地址等。
ICMPv6相關協議
(1)組播收聽發現協議(MLD,Multicast Listener Discovery)
該協議完成子網內的組播成員管理。MLD協議定義了3條ICMPv6消息:
組播收聽查詢消息:組播路由器向子網內的組播收聽者發送此消息,以獲取組播收聽者的狀態。
組播收聽者報告消息:組播收聽者向組播路由器彙報當前狀態,包括離開某個組播組。
組播收聽者
(2)鄰居發現協議(Neighbor Discovery)
鄰居發現協議實現了IPv6種的地址解析協議(ARP)、ICMPv6路由器發現協議以及ICMPv6重定向消息的功能,用來管理同一鏈路上結點間的通信。
該協議定義五條ICMPv6消息:
路由器通告消息:該路由器以組播方式向所在鏈路發送,宣告其可用性及其相關的挽留過配置參數。該消息發送有兩種方式,一種是非請求、週期性的路由器通告;另一種是請求的路由器通告,即收到主機發出的路由器請求後作為應答發出。
路由器請求消息:該消息由主機向本地路由器發出,要求其立即發送路由器通告消息。
鄰居請求消息:結點發送鄰居請求消息來請求鄰居的鏈路層地址,以驗證它先前所獲得並保存在緩存中的鄰居鏈路層地址的可達性,或者驗證自己的地址在本地鏈路上是否唯一。
鄰居通告消息:結點在收到鄰居請求消息或鏈路層地址改變時,發送鄰居通告消息,向鄰結點通告自己的鏈路地址信息。
重定向消息:路由器發送重定向消息告訴主機重新定向它發送分組到目的結點的路徑。
- 參考資料
-
- 1. 針對因特網協議第六版(Ipv6)的 .領測國際.2007-06-23
- 2. 龔向陽等.寬帶通信網原理:北京郵電大學出版社,2006年
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:16次歷史版本
- 最近更新: 化龙十四