RFC 792 - 互联网控制消息协议 (Internet Control Message Protocol)
- 状态: Internet Standard
- 发布日期: September 1981
- Stream: Legacy
- 废弃了: RFC777
- 勘误: 无勘误
摘要
本文档定义了互联网控制消息协议 (Internet Control Message Protocol, ICMP), 它是互联网协议 (IP) 不可分割的组成部分。ICMP 由 IP 节点用于报告数据报处理中的错误以及交换控制信息。它提供了基本的网络诊断功能, 包括错误报告、连通性测试和网络管理功能。
目录
快速参考: ICMP 消息类型
| 类型 | 名称 | 描述 |
|---|---|---|
| 0 | Echo Reply (回显应答) | 对回显请求的响应 (ping) |
| 3 | Destination Unreachable (目的地不可达) | 无法到达目的地 |
| 4 | Source Quench (源抑制) | 拥塞控制消息 (已废弃) |
| 5 | Redirect (重定向) | 路由重定向指令 |
| 8 | Echo Request (回显请求) | Ping 请求 |
| 11 | Time Exceeded (超时) | TTL 过期或分片超时 |
| 12 | Parameter Problem (参数问题) | IP 头部字段无效 |
| 13 | Timestamp Request (时间戳请求) | 请求时间戳 |
| 14 | Timestamp Reply (时间戳应答) | 携带时间戳的应答 |
| 15 | Information Request (信息请求) | 请求网络信息 (已废弃) |
| 16 | Information Reply (信息应答) | 携带网络信息的应答 (已废弃) |
ICMP 消息格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Body |
| (varies by type) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
关键字段
- Type (类型): 标识 ICMP 消息类型 (8 位)
- Code (代码): 为消息类型提供附加上下文 (8 位)
- Checksum (校验和): ICMP 消息的错误检测 (16 位)
- Message Body (消息体): 根据消息类型而变化
常见使用场景
网络诊断
Ping (回显请求/应答)
$ ping 8.8.8.8
ICMP Echo Request → 8.8.8.8
← ICMP Echo Reply (Type 0)
Traceroute (路由追踪)
$ traceroute google.com
Uses ICMP Time Exceeded (Type 11) messages
to discover network path
错误报告
目的地不可达
- 网络不可达
- 主机不可达
- 协议不可达
- 端口不可达
- 需要分片但设置了 DF 标志
超时
- 传输中 TTL 过期
- 分片重组超时
相关资源
- 官方文本: RFC 792 (TXT)
- 官方页面: RFC 792 DataTracker
- 标准: STD 5
- 相关协议:
- RFC 791 (IPv4)
- RFC 1122 (主机需求)
- RFC 4443 (ICMPv6)
- RFC 4884 (扩展 ICMP)
重要说明: ICMP 是 IP 网络的重要组成部分, 提供关键的诊断和错误报告功能。然而, 出于安全原因, 许多网络会过滤 ICMP 消息, 这可能影响网络故障排查和诊断工具的使用。