跳到主要内容

RFC 792 - 互联网控制消息协议 (Internet Control Message Protocol)

  • 状态: Internet Standard
  • 发布日期: September 1981
  • Stream: Legacy
  • 废弃了: RFC777
  • 勘误: 无勘误

摘要

本文档定义了互联网控制消息协议 (Internet Control Message Protocol, ICMP), 它是互联网协议 (IP) 不可分割的组成部分。ICMP 由 IP 节点用于报告数据报处理中的错误以及交换控制信息。它提供了基本的网络诊断功能, 包括错误报告、连通性测试和网络管理功能。


目录


快速参考: ICMP 消息类型

类型名称描述
0Echo Reply (回显应答)对回显请求的响应 (ping)
3Destination Unreachable (目的地不可达)无法到达目的地
4Source Quench (源抑制)拥塞控制消息 (已废弃)
5Redirect (重定向)路由重定向指令
8Echo Request (回显请求)Ping 请求
11Time Exceeded (超时)TTL 过期或分片超时
12Parameter Problem (参数问题)IP 头部字段无效
13Timestamp Request (时间戳请求)请求时间戳
14Timestamp Reply (时间戳应答)携带时间戳的应答
15Information Request (信息请求)请求网络信息 (已废弃)
16Information 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 消息, 这可能影响网络故障排查和诊断工具的使用。