複製鏈接
請複製以下鏈接發送給好友

互聯網控制消息協議

鎖定
互聯網控制消息協議(英語:Internet Control Message Protocol,縮寫:ICMP)是互聯網協議族的核心協議之一。它用於TCP/IP網絡中發送控制消息,提供可能發生在通信環境中的各種問題反饋,通過這些信息,使管理者可以對所發生的問題作出診斷,然後採取適當的措施解決。
ICMP依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議(如TCPUDP)顯著不同:它一般不用於在兩點間傳輸數據。它通常不由網絡程序直接使用,除了pingtraceroute這兩個特別的例子。 IPv4中的ICMP被稱作ICMPv4,IPv6中的ICMP則被稱作ICMPv6
中文名
互聯網控制消息協議
外文名
InternetControlMessageProtocol
縮    寫
ICMP
領    域
互聯網
學    科
計算機
屬    性
互聯網協議族的核心協議

互聯網控制消息協議技術細節

ICMP是在RFC 792中定義的互聯網協議族之一。通常用於返回的錯誤信息或是分析路由。ICMP錯誤消息總是包括了源數據並返回給發送者。 ICMP錯誤消息的例子之一是TTL值過期。每個路由器在轉發數據報的時候都會把IP包頭中的TTL值減1。如果TTL值為0,“TTL在傳輸中過期”的消息將會回報給源地址。 每個ICMP消息都是直接封裝在一個IP數據包中的,因此,和UDP一樣,ICMP是不可靠的。 [1] 
雖然ICMP是包含在IP數據包中的,但是對ICMP消息通常會特殊處理,會和一般IP數據包的處理不同,而不是作為IP的一個子協議來處理。在很多時候,需要去查看ICMP消息的內容,然後發送適當的錯誤消息到那個原來產生IP數據包的程序,即那個導致ICMP消息被髮送的IP數據包。
很多常用的工具是基於ICMP消息的。traceroute是通過發送包含有特殊的TTL的包,然後接收ICMP超時消息和目標不可達消息來實現的。ping則是用ICMP的"Echo request"(類別代碼:8)和"Echo reply"(類別代碼:0)消息來實現的。

互聯網控制消息協議ICMP報文結構

互聯網控制消息協議報頭

ICMP報頭從IP報頭的第160位開始(IP首部20字節)(除非使用了IP報頭的可選部分)。 [2] 
Bits
160-167
168-175
176-183
184-191
160
Type
Code
校驗碼(checksum)
192
ID
序號(sequence)
  • Type- ICMP的類型,標識生成的錯誤報文;
  • Code- 進一步劃分ICMP的類型,該字段用來查找產生錯誤的原因.;例如,ICMP的目標不可達類型可以把這個位設為1至15等來表示不同的意思。
  • Checksum- 校驗碼部分,這個字段包含有從ICMP報頭和數據部分計算得來的,用於檢查錯誤的數據,其中此校驗碼字段的值視為0。
  • ID- 這個字段包含了ID值,在Echo Reply類型的消息中要返回這個字段。
  • Sequence- 這個字段包含一個序號,同樣要在Echo Reply類型的消息中要返回這個字段。

互聯網控制消息協議填充數據

填充的數據緊接在ICMP報頭的後面(以8位為一組):
  • Linux的"ping"工具填充的ICMP除了8個8位組的報頭以外,默認情況下還另外填充數據使得總大小為64字節。
  • Windows的"ping.exe"填充的ICMP除了8個8位組的報頭以外,默認情況下還另外填充數據使得總大小為40字節。

互聯網控制消息協議報文類型

類型
代碼
狀態
描述
查詢
差錯
0 -Echo Reply
0

echo響應 (被程序ping使用)

1 and 2

未分配
保留

3 - 目的不可達
0

目標網絡不可達

1

目標主機不可達

2

目標協議不可達

3

目標端口不可達

4

要求分段並設置DF flag標誌

5

源路由失敗

6

未知的目標網絡

7

未知的目標主機

8

源主機隔離(作廢不用)

9

禁止訪問的網絡

10

禁止訪問的主機

11

對特定的TOS 網絡不可達

12

對特定的TOS 主機不可達

13

由於過濾 網絡流量被禁止

14

主機越權

15

優先權終止生效

4 - 源端關閉
0
棄用
源端關閉(擁塞控制)

5 - 重定向
0

重定向網絡

1

重定向主機

2

基於TOS 的網絡重定向

3

基於TOS 的主機重定向

6

棄用
備用主機地址


7

未分配
保留


8 -請求回顯
0

Echo請求

9 - 路由器通告
0

路由通告

10 - 路由器請求
0

路由器的發現/選擇/請求

11 - ICMP 超時
0

TTL 超時

1

分片重組超時

12 - 參數問題:錯誤IP頭部
0

IP 報首部參數錯誤

1

丟失必要選項

2

不支持的長度


13 - 時間戳請求
0

時間戳請求

14 - 時間戳應答
0

時間戳應答

15 - 信息請求
0
棄用
信息請求

16 - 信息應答
0
棄用
信息應答

17 - 地址掩碼請求
0
棄用
地址掩碼請求

18 - 地址掩碼應答
0
棄用
地址掩碼應答

19

保留
因安全原因保留


20 至 29

保留
Reservedfor robustness experiment


30 - Traceroute
0
棄用
信息請求


31

棄用
數據報轉換出錯


32

棄用
手機網絡重定向


33

棄用
Where-Are-You(originally meant forIPv6


34

棄用
Here-I-Am(originally meant for IPv6)


35

棄用
Mobile Registration Request


36

棄用
Mobile Registration Reply


37

棄用
Domain Name Request


38

棄用
Domain Name Reply


39

棄用
SKIP Algorithm Discovery Protocol,Simple Key-Management for Internet Protocol


40


Photuris, Security failures


41

實驗性的
ICMP for experimental mobility protocols such asSeamoby[RFC4065]


42 到 255

保留
保留


235

實驗性的
RFC3692(RFC 4727)


254

實驗性的
RFC3692(RFC 4727)


255

保留
保留


參考資料
  • 1.    RFC 792 INTERNET CONTROL MESSAGE PROTOCOL; DARPA INTERNET PROGRAM; PROTOCOL SPECIFICATION; Introduction. J. Postel (Internet RFC/STD/FYI/BCP Archives). 1981-09-01
  • 2.    SPECIFICATION P. INTERNET CONTROL MESSAGE PROTOCOL[J]. ISI, 1981.