互联网控制消息协议

维基百科,自由的百科全书

跳转到: 导航, 搜索
網路協議
應用層
DHCP · DNS · FTP · Gopher · HTTP · IMAP4 · IRC · NNTP · XMPP · POP3 · SIP · SMTP · SNMP · SSH · TELNET · RPC · RTCP · RTP ·RTSP · SDP · SOAP · GTP · STUN · NTP · SSDP · 更多
传输层
TCP · UDP · TLS · DCCP · SCTP · RSVP · PPTP · 更多
网络层
IP (IPv4 · IPv6) ·

ICMP · ICMPv6 · IGMP · RIP ·

OSPF · BGP · IS-IS · IPsec · 更多
数据链路层
802.11 · 802.16 · Wi-Fi · WiMAX · ARP · RARP · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN · 更多
物理层
以太网 · 调制解调器 · PLC(Power Line Communication) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线 · 更多
本模板:查看  討論  編輯  歷史

互联网控制消息协议Internet Control Message Protocol 或简写 ICMP)的目的是用于在 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管理者可以对所发生的问题作出诊断,然后采取适当的措施去解决它。

ICMP [1] 依靠IP来完成它的任务,它是IP的主要部分。它与传输协议,如TCPUDP显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了pingtraceroute这两个特别的例子。

IPv4的ICMP也叫ICMPv4。IPv6的也有一个相似的协议,叫ICMPv6。

目录

[编辑] 技术细节

ICMP消息是在IP层,通常是从一个普通的产生了ICMP响应的IP数据报中生成的。IP把适当的ICMP消息用一个新的檔頭(header)封装起来(以把ICMP消息送回原来的发送者),然后把产生的数据报用常规的方式传送回去。

例如,每台转发IP数据报的机器(例如途中的路由器)都要把IP报头中的TTL(time to live)减1,如果TTL减为了0,一个ICMP超时消息就会被发送到数据报的源发送者。

每个ICMP消息都是直接封装在一个IP数据报中的,因此,和UDP一样,ICMP是不可靠的

虽然ICMP是包含在IP数据报中的,但是对ICMP消息通常会特殊处理,会和一般IP数据报的处理不同,而不是作为IP的一个子协议来处理。在很多时候,需要去查看ICMP消息的内容,然后发送适当的错误消息到那个原来产生IP数据包的程序,即那个被提示一个ICMP消息的程序。

很多常用的工具是基于ICMP消息的。traceroute是通过发送包含有特殊的TTL的包,然后查找ICMP超时消息和目标不可达消息来实现的。和traceroute相关的ping则是用ICMP的"Echo request"和"Echo reply"消息来实现的。

[编辑] ICMP部分的结构

[编辑] 报头

ICMP报头从IP报头的第160位开始(除非使用了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报头和数据部分计算得来的,用于检查错误的数据,with value 0 for this field.
  • ID - 这个字段包含了ID值,在ECHO REPLY类型的消息中要返回这个字段。
  • Sequence - 这个字段包含一个序号,同样要在ECHO REPLY类型的消息中要返回这个字段。

[编辑] 填充数据

填充的数据紧接在ICMP报头的后面(以8位为一组):

  • Linux的 "ping"工具填充的ICMP除了8个8位元组的报头以外,还另外填充数据使得总大小为64字节。
  • Windows 的"ping.exe" 填充的ICMP除了8个8位元组的报头以外,还另外填充数据使得总大小为40字节

[编辑] 可能的消息列表 (不是全部)

Type Code Description
0 - Echo Reply 0 Echo reply (used to ping)
1 and 2 Reserved
3 - 目的地不可到達 0 Destination network unreachable
1 Destination host unreachable
2 Destination protocol unreachable
3 Destination port unreachable
4 Fragmentation required, and DF flag set
5 Source route failed
6 Destination network unknown
7 Destination host unknown
8 Source host isolated
9 Network administratively prohibited
10 Host administratively prohibited
11 Network unreachable for TOS
12 Host unreachable for TOS
13 Communication administratively prohibited
4 - Source Quench 0 Source quench (congestion control)
5 - Redirect Message 0 Redirect Datagram for the Network
1 Redirect Datagram for the Host
2 Redirect Datagram for the TOS & network
3 Redirect Datagram for the TOS & host
6 Alternate Host Address
7 Reserved
8 - Echo Request 0 Echo request
9 - Router Advertisement 0 Router Advertisement
10 - Router Solicitation 0 Router discovery/selection/solicitation
11 - Time Exceeded 0 TTL expired in transit
1 Fragment reassembly time exceeded
12 - Parameter Problem: Bad IP header 0 Pointer indicates the error
1 Missing a required option
2 Bad length
13 - Timestamp 0 Timestamp
14 - Timestamp Reply 0 Timestamp reply
15 - Information Request 0 Information Request
16 - Information Reply 0 Information Reply
17 - Address Mask Request 0 Address Mask Request
18 - Address Mask Reply 0 Address Mask Reply
19 Reserved for security
20 through 29 Reserved for robustness experiment
30 - Traceroute 0 Information Request
31 Datagram Conversion Error
32 Mobile Host Redirect
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 through 255 Reserved

[编辑] 参考

  1. ^ RFC 792 INTERNET CONTROL MESSAGE PROTOCOL; DARPA INTERNET PROGRAM; PROTOCOL SPECIFICATION; Introduction,J. Postel,Internet RFC/STD/FYI/BCP Archives,1981年9月1日.於2008年5月16日查阅. 

[编辑] 外部链接