热门问题
时间线
聊天
视角

互聯網控制消息協議第六版

互联网协议族的核心协议之一。主要用于IPv6网络,以指示网络操作中的错误或指示消息 来自维基百科,自由的百科全书

Remove ads

互聯網控制消息協議第六版(英語:Internet Control Message Protocol Version 6ICMP for IPv6,縮寫:ICMPv6)是互聯網控制消息協議ICMP)在IPv6協議下的新版本。它在 RFC 4443 中被定義,其協議號(IPv6的Next Header域)為58。

ICMPv6協議定義在OSI模型中的網絡層Internet Layer),用於報告IPv6節點數據包處理過程中的錯誤消息和完成一些網絡診斷功能(如pingtraceroute等)。它是IPv6體系總體的的一個組成部分,其基本的協議[1]必須被所有IPv6實現和IPv6節點所完整支持。

除了ICMPv4原有的功能,ICMPv6還承擔了IPv4其他協議所實現的功能或IPv6所需的新功能,例如鄰居發現協議(同時取代了ARP/RARPSEND作為其安全擴展)、多播管理(取代了IGMP)。

Remove ads

數據包格式

IANA(因特網地址授權委員會)定義ICMPv6的協議號為58。

其消息分為兩類,錯誤消息和信息消息。ICMPv6通過IPv6數據包傳送,並且IPv6的擴展頭需要被設置。

下文描述了ICMPv6使用的控制消息集的格式。

格式

ICMPv6包有類型(Type),代碼(Code),校驗和(Checksum)和消息體(Message Body)等幾個字段。類型域為8位,用來表示消息的類型,如果最高有效位是0(即值的範圍是0-127),則表示一個錯誤消息;如果是1,則該ICMPv6包是一個信息消息。代碼域同樣為8位,其內容取決於消息類型,用來區分某一類型的多條消息。校驗和用來檢測ICMP消息和IPv6包的錯誤。消息體的內容取決於消息類型。

更多信息 位偏移, 0–7 ...

消息類型

更多信息 類型, 代表的意義 ...

消息的校驗和

ICMPv6 包的校驗和是一個 16 位的二進制補碼,計算消息類型域開始的整個 ICMPv6 消息以及 IPv6 頭的偽頭標(pseudo-header)。計算校驗和時,校驗和預設為 0。偽頭標中的下一個頭標(Next Header)值為 58。(注意:ICMPv6 校驗和中的偽頭標的內容與 IPv4 中不同,見 IPv6)。

ICMPv6消息傳送

ICMPv6通過IPv6數據包傳送,當節點發送或轉發ICMPv6消息時,必須確定消息的IPv6源地址和目的地址。當節點有多個單播地址,則要注意源地址的選擇。

消息源地址的確定

如果節點有多個單播地址,則通過下面的規則確定源地址。

  1. 如果消息是對發送到其中一個單播(unicast)地址消息的回應,則使用該地址作為源地址。
  2. 如果消息是對發送到其他地址消息的回應,如:
    • 多播(multcast)組地址
    • 該節點實現的任播(anycast)地址
    • 其他節點的單播地址

則源地址必須為該節點所屬的一個多播地址,且源地址的選擇應該與從該節點發出併到達同一目的地址的其他數據包使用相同的規則,即與其他IPv6協議的數據包使用相同的路由表。如果有多個路由可以到達ICMPv6包的目的地址,則可以任選其一。

傳送和處理規則

當 ICMPv6節點收到數據包時,它應按照消息的類型採取動作。

  1. 未知的ICMPv6錯誤消息交由上層協議處理。
  2. 未知的ICMPv6消息信息丟棄。
  3. 所有的錯誤消息必須足夠長但不超過IPv6最小的MTU
  4. 禁止回應以下的消息或數據包:
    1. ICMPv6錯誤消息
    2. ICMPv6重定向消息[3]
    3. 發送到IPv6多播地址的數據包。(有兩種例外情況。[4]
    4. 發送到數據鏈路層廣播地址的數據包。(例外情況同上[4]
    5. 源地址不確定的數據包。
  5. 必須限制ICMPv6錯誤消息的產生速率。

為避免網絡過負載,ICMPv6協議需要限制發送至同一地址的錯誤消息的數目。例如,如果一個節點持續轉發錯誤的包,則ICMP會通知第一個錯誤包,然後根據一個固定的最小周期或者最大的網絡負載,周期性提醒。禁止以ICMP錯誤消息回應錯誤消息包。

參見

參考

延伸閱讀

腳註

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads