ICMP协议

基本概念

基本定位

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

核心功能

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

关键细节

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

总结

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

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 字节,方便源端定位是哪个报文出了问题
相关推荐
QYR-分析2 小时前
注塑机机械手自动化装备行业发展研判:存量升级催生增量红利,2032 年市场规模逼近 9 亿美元
运维·自动化
我命由我123452 小时前
匈牙利命名法
java·服务器·后端·学习·java-ee·kotlin·学习方法
小田的博客2 小时前
SAP MM 供应商银行主数据更新报错!message R1228!
android·java·服务器
牢姐与蒯2 小时前
Linux基本指令及知识点(二)
linux·运维·服务器
ᥬ 小月亮2 小时前
SonarQube使用教程(Docker安装)
运维·docker·容器
2601_949499942 小时前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
去伪存真20253 小时前
数字样机、态势推演与3D汇报场景下的平台选型对比
运维·服务器
自动化测试行业观察3 小时前
从“自动化”到“智能化”:TestMan AI测试平台引领软件测试范式转移
运维·自动化测试·人工智能·测试工具·自动化·app测试·移动应用测试
云边云科技_云网融合3 小时前
连锁门店 POS、监控、IoT 设备网络不稳定怎么解决?
网络·物联网
xiaoxiangsiyan3 小时前
运维之前端反调试学习
运维·前端·学习·状态模式