ICMP协议

基本概念

基本定位

  • 所属层级 :网络层协议(虽然基于 IP 封装,但功能是辅助 IP 层,而非传输层)
  • 诞生背景 :IP 协议本身是不可靠、无连接的,丢包时无法通知上层原因,ICMP 就是为了弥补这个缺陷而设计的。

核心功能

  • 确认可达性 :验证 IP 报文是否成功送达目标地址 (比如 ping 命令就是基于 ICMP 的 Echo 请求/应答)。
  • 差错通知 :当 IP 报文被丢弃时,向源主机发送差错报文,告知丢包原因(比如目标不可达、超时、需要分片但 DF=1 等)。
  • 辅助 IP 层 :为 IP 协议提供控制、诊断、差错报告能力,不参与数据传输。

关键细节

  • 依赖关系 :ICMP 报文封装在 IP 数据报中传输,所以它是基于 IP 协议工作的。
  • 层级归属 :因为它是为 IP 层服务的控制协议,而非为应用层提供端到端传输,所以归类为网络层,而非传输层。

总结

ICMP 是 IPv4 网络层的控制与诊断协议 ,核心作用是报告 IP 传输的可达性与丢包原因 (ICMP允许距离事故发生地最近的主机返回应答),弥补了 IP 协议不可靠的缺陷,是 ping、traceroute 等网络诊断工具的底层基础。

ICMP报文格式

ICMP 报文封装在 IP 数据报 中,整体分为 首部(固定 8 字节) 和 数据部分。

报文整体结构

字段 长度(字节) 说明
类型(Type) 1 定义报文功能(如 Echo 请求、目标不可达等)
代码(Code) 1 同一类型下的细分原因(如目标不可达分网络不可达/主机不可达)
校验和(Checksum) 2 对整个 ICMP 报文做差错校验
内容(可变) 4 随类型不同而变化(如 Echo 报文里是标识符+序列号)
数据部分 可变 差错报文会携带出错 IP 数据报的首部 + 前 8 字节数据

关键字段详解
(1)类型(Type)

常见类型值:

  • 0:Echo 应答(ping 响应)
  • 8:Echo 请求(ping 探测)
  • 3:目标不可达
  • 11:超时(TTL 耗尽)
  • 5:重定向

(2)代码(Code)

对类型的进一步细分,例如:

  • 类型 3(目标不可达):
    • 0:网络不可达
    • 1:主机不可达
    • 2:协议不可达
    • 3:端口不可达
    • 4:需要分片但 DF=1

(3)校验和(Checksum)

  • 覆盖整个 ICMP 报文(首部 + 数据)
  • 用于检测传输过程中的比特错误

两种典型报文格式

(1)Echo 请求/应答(ping 用)

  • 类型:请求为 8,应答为 0
  • 代码:固定为 0
  • 数据:通常填充任意字节(如 ASCII 字符)

(2)目标不可达/超时等差错报文

  • 数据部分:携带触发差错的原始 IP 数据报首部 + 前 8 字节,方便源端定位是哪个报文出了问题
相关推荐
爱吃香菜的初学者4 小时前
十四.Linux——消息队列
linux·运维·开发语言
姜鱼问生11 小时前
Nginx 缓存命中率监控:从 X-Cache-Status 到实时统计
运维·nginx·缓存
Apipi*11 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
不像程序员的程序媛11 小时前
检测网络的命令mtr详解
网络
天启HTTP12 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_12 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时13 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
hz5678914 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC14 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育14 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php