本页使用了标题或全文手工转换

互联网控制消息协议

维基百科,自由的百科全书
跳转至: 导航搜索

網際網路控制訊息協定英文Internet Control Message ProtocolICMP)是互联网协议族的核心协议之一。它用于TCP/IP網絡中發送控制消息,提供可能發生在通信環境中的各種問題反饋,通過這些信息,令管理者可以對所發生的問題作出診斷,然後採取適當的措施解決。

ICMP [1]依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議,如TCPUDP顯著不同:它一般不用於在兩點間傳輸數據。它通常不由網絡程序直接使用,除了pingtraceroute這兩個特別的例子。 IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6

技術細節[编辑]

ICMP是在RFC 792中定义的互联网协议族之一。通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据报的时候都会把IP包头中的TTL值减1。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每個ICMP消息都是直接封裝在一個IP數據包中的,因此,和UDP一樣,ICMP是不可靠的。

雖然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報頭的可選部分)。

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 保留 Reserved for robustness experiment
30 - Traceroute 0 弃用 信息请求
31 弃用 数据报转换出错
32 弃用 手机网络重定向
33 弃用 Where-Are-You(originally meant for IPv6
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 as Seamoby [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 [2008-05-16]. 

外部連結[编辑]