当前位置: 首页 > news >正文

什么是ICMP报文?有什么用?

一、ICMP报文基础概念

ICMP(Internet Control Message Protocol,互联网控制报文协议)​是TCP/IP协议族的核心协议之一,主要用于在IP主机和路由器之间传递控制消息。这些消息虽然不传输用户数据,但对网络诊断、错误报告和路由控制至关重要。

关键特性​:

  • 工作在网络层(OSI第三层)
  • 作为IP协议的附属协议(IPv4中协议号1,IPv6中Next Header值58)
  • 不提供可靠传输机制(不保证报文到达)

二、ICMP报文的核心作用

功能类别具体用途
网络诊断Ping测试、路径追踪(traceroute)
错误报告目标不可达、超时、参数错误等通知
路由控制重定向最佳路由、MTU发现
邻居发现IPv6中的地址解析、路由器发现(NDP协议)
网络管理时间戳请求、路由器通告等(部分功能已逐渐被替代)

三、常见ICMP报文类型示例

1. 网络诊断类

类型名称用途典型工具
Type=0Echo Replyping响应ping
Type=8Echo Requestping请求ping
Type=11Time ExceededTTL超时(traceroute核心机制)traceroute

2. 错误报告类

类型名称触发场景
Type=3Destination Unreachable目标主机/端口不可达
Type=5Redirect发现更优路由时通知发送方
Type=12Parameter ProblemIP头部字段错误

3. 路由控制类

类型名称功能
Type=9Router Advertisement路由器定期通告网络信息
Type=10Router Solicitation主机主动请求路由器信息
Type=4Source Quench请求降低发送速率(已弃用)

4. 补充说明

常用ICMPv6类型示例
类型名称用途
Type=133Router Solicitation主机请求路由器通告
Type=134Router Advertisement路由器通告网络配置
Type=135Neighbor Solicitation地址解析/重复地址检测
Type=136Neighbor Advertisement响应NS报文

四、ICMP报文基础结构

ICMP报文是封装在IP数据包中的控制消息,其基本格式如下:

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                            +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明​:

​Type​:8位,标识报文类型(如0=Echo Reply,3=Destination Unreachable)
​Code​:8位,子类型(含义取决于Type值)
​Checksum​:16位,校验和(覆盖整个ICMP报文)
​Message Body​:可变长度,具体内容因类型而异

协议设计哲学​
ICMP本质上是一个"网络层的管理协议",它通过简单的报文交互实现了复杂的网络诊断和错误报告功能,是TCP/IP协议族中"轻量级控制"的典范设计。

http://www.dtcms.com/a/299502.html

相关文章:

  • 以实时语音转文字项目为例,介绍一下如何手动部署python应用到Linux服务器(附脚本)
  • 根据ip获取地址库
  • 【Git】Git下载全攻略:从入门到精通
  • 如何在 Git 中控制某些文件不被提交?
  • 图解网络-小林coding笔记(持续更新)
  • 【2025最新】浏览器插件开发选型建议:WXT、Plasmo、原生TS/JS
  • 融合为体,AI为用:数据库在智能时代的破局之道
  • Maven之依赖管理
  • 《Java 程序设计》第 6 章 - 字符串
  • 智慧城市多目标追踪精度↑32%:陌讯动态融合算法实战解析
  • 【Canvas与旗帜】条纹版大明三辰旗
  • 神经网络中的反向传播原理:驱动智能的核心引擎
  • k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库
  • 电子电气架构 --- 高阶智能驾驶对E/E架构的新要求
  • Java操作Excel文档
  • Spring的深入浅出(6)--使用AOP的思想改造转账案例
  • 人形机器人指南(八)操作
  • 手动开发一个串口调试工具(二):Qt 串口类基本认识与使用
  • 基于 ThinkPHP 开发的垂直化网址导航
  • Linux进程地址空间:深入探索其结构与机制
  • 元宇宙新基建:重塑数字市场的“超大陆”边界
  • 【Android】内容提供器
  • 7️⃣ 递归函数
  • 【AcWing 835题解】滑动窗口
  • 数据结构 双向链表
  • greenhills编译出错问题
  • C++学习之深入学习模板(进阶)
  • SAPUI5 树形表格TreeTable示例
  • Spring AI(14)——文本分块优化
  • java之23种设计模式