互联网控制消息协议
维基百科,自由的百科全书
| 互联网控制消息协议正在校对翻译。 歡迎您積極參與校對與修訂,原文在ICMP。 |
| 網路協議 | |
| 應用層 | |
|---|---|
| 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) · 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的主要部分。它与传输协议,如TCP和UDP显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。
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 |
[编辑] 参考
- ^ 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日查阅.
[编辑] 外部链接
- RFC 792, Internet Control Message Protocol
- ICMP Sequence Diagram
- RFC 1122, Requirements for Internet Hosts -- Communication Layers
- RFC 1716, Towards Requirements for IP Router
- Filtering ICMP on firewalls
- IANA