ICMP基础知识

一、ICMP是什么

ICMP( Internet Control Message Protocol)是互联网控制报文协议,其主要功能确认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因和改善网络设置等。

在IP通信中如果某个IP包因为某种原因未能达到目标地址,那么这个具体的原因将由ICMP负责通知。例如:

主机A向主机B发送了数据包,由于某种原因导致路由器2未能发现主机B的存在,这时,路由器2就会向主机A发送一个ICMP目标不可到达数据包,说明发往主机B的包未能成功。ICMP的这种通知消息会使用IP进行发送。

二、ICMP包头格式

ICMP报文是封装在IP包里面,它工作在网络层,是IP协议的助手。

ICMP包头的类型字段,大致分为两大类:

  • 查询报文类型:一种用于诊断的查询信息
  • 差错报文类型:一类是通知出错原因的错误消息

三、查询报文类型

回送消息是类型0和8,用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,ping命令就是利用这个消息实现的。

可以向对端主机发送回送请求的消息(类型8),也可以接收对端主机发回来的回送应答消息(类型0)。

相比原生的ICMP,这里多了两个字段:

  • 标识符:用以区分是哪个应用程序发ICMP包,比如用进程PID作为标识符;
  • 序号:序列号从0开始,每发送一次新的回送请求就会加1,可以用来确认网络包是否有丢失。

四、差错报文类型

  • 目标不可达消息---类型3
  • 原点抑制消息---类型4
  • 重定向消息---类型5
  • 超时消息---类型11

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息,并在这个消息中显示不可达的具体原因,原因记录在ICMP包头的代码字段。

五、ping------查询报文类型的使用

主机A执行ping主机B后,源主机首先构建一个ICMP回送请求消息数据包。ICMP数据包内包含两个字段,最重要的是两个:

  • 类型:对于回送请求消息而言该字段为8;
  • 序号:主要用去区别连续ping的时候发出的多个数据包。

以上总结如下图:

如果跨网段的话,还会涉及网关的转发、路由器的转发等等。

相关推荐
say_fall15 小时前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信
流浪00116 小时前
计算机网络篇21:网络层——网段划分与子网掩码,从分类地址到 CIDR 与可用主机数
计算机网络·子网划分·nat·子网掩码·cidr·网络层协议
咔_17 小时前
有IPv6地址,为什么外面还是连不进来?让同一台服务分别卡在四个位置
linux·计算机网络
流浪00117 小时前
计算机网络篇22:网络层——公网的三级地址划分与逐跳转发,从私网出口替换到 IP 分片组装
tcp/ip·计算机网络·路由器·公网搭建·报文分篇
Java成神之路-1 天前
TCP Socket 与 UDP Socket
tcp/ip·计算机网络·udp
流浪0013 天前
计算机网络篇20:网络层——IP 协议的定位与 IPv4 报头字段,从 20 字节首部到 TTL 防环
tcp/ip·计算机网络·ttl·网络层协议·ip报头
流浪0014 天前
计算机网络篇17:传输层——TCP 超时重传、三次握手与四次挥手,TIME_WAIT 为什么要等 2MSL
网络协议·tcp/ip·计算机网络·三次握手·四次挥手·超时重传
流浪0014 天前
计算机网络篇16:传输层——TCP 报头属性字段:16 位窗口大小撑起流量控制,六个标志位标识报文类型
网络协议·tcp/ip·计算机网络·urg紧急指针·tcp报头
一条泥憨鱼6 天前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
鹿鸣天涯6 天前
2026年下半年网络规划设计师论文
网络·计算机网络·网络规划设计师