互联网控制消息协议
| 本条目的內容翻译自其他語言維基百科,需要校对翻译。 如果您熟知條目內容及來源語言,並且中文流暢,歡迎您積極參與校對與修訂,原文在ICMP。 |
| 网络协议 | |
|---|---|
| 应用层 | |
| DHCP (DHCP · DHCPv6) · 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/SSL · DCCP · SCTP RSVP · PPTP · 更多 |
|
| 网络层 | |
|
IP (IPv4 · IPv6) · ICMP · ICMPv6 · IGMP · IS-IS · IPsec · BGP · RIP · OSPF ·ARP · RARP · 更多 |
|
| 数据链路层 | |
|
Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) · ATM · DTM · 令牌环 · 乙太網路 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN ·STP · 更多 |
|
| 物理层 | |
| 以太网 · 调制解调器 · 电力线通信(PLC) · 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是在RFC 792中定义的互联网协议族之一。通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据报的时候都会把ip包头中的TTL值减一。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每個ICMP消息都是直接封裝在一個IP數據包中的,因此,和UDP一樣,ICMP是不可靠的。
雖然ICMP是包含在IP數據包中的,但是對ICMP消息通常會特殊處理,會和一般IP數據包的處理不同,而不是作為IP的一個子協議來處理。在很多時候,需要去查看ICMP消息的內容,然後發送適當的錯誤消息到那個原來產生IP數據包的程序,即那個導致ICMP訊息被傳送的IP數據包。
很多常用的工具是基於ICMP消息的。traceroute是通過發送包含有特殊的TTL的包,然後接收ICMP超時消息和目標不可達消息來實現的。 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報頭和數據部分計算得來的,用於檢查錯誤的數據,其中此校验码字段的值視為0。
- 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响应 (被程序ping使用) |
| 1 and 2 | 保留 | |
| 3 - 目的地不可到達 | 0 | 目标网络不可达 |
| 1 | 目标主机不可达 | |
| 2 | 目标协议不可达 | |
| 3 | 目标端口不可达 | |
| 4 | 要求分段并设置DF flag标志 | |
| 5 | 源路由失败 | |
| 6 | 未知的目标网络 | |
| 7 | 未知的目标主机 | |
| 8 | 源主机隔离 | |
| 9 | 禁止访问的网络 | |
| 10 | 禁止访问的主机 | |
| 11 | Network unreachable for TOS | |
| 12 | Host unreachable for TOS | |
| 13 | 网络流量被禁止 | |
| 4 - Source Quench | 0 | Source quench (congestion control) |
| 5 - Redirect Message | 0 | 重定向网络 |
| 1 | 重定向主机 | |
| 2 | Redirect Datagram for the TOS & network | |
| 3 | Redirect Datagram for the TOS & host | |
| 6 | Alternate Host Address | |
| 7 | 保留 | |
| 8 - Echo Request | 0 | Echo请求 |
| 9 - Router Advertisement | 0 | 路由建议 |
| 10 - Router Solicitation | 0 | Router discovery/selection/solicitation |
| 11 - Time Exceeded | 0 | TTL在传输中过期 |
| 1 | Fragment reassembly time exceeded | |
| 12 - 错误的IP头 | 0 | Pointer indicates the error |
| 1 | 丢失选项 | |
| 2 | 不支持的长度 | |
| 13 - Timestamp | 0 | 时间戳 |
| 14 - Timestamp Reply | 0 | 时间戳响应 |
| 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 | 因安全原因保留 | |
| 20 through 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 through 255 | 保留 |
參考 [编辑]
- ^ 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].
外部鏈接 [编辑]
- 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