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的时候发出的多个数据包。

以上总结如下图:

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

相关推荐
酉鬼女又兒1 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
我是一颗柠檬1 天前
【计算机网络全面教学】网络设备与故障排查,从集线器到Wireshark抓包实战Day7(2026年)
网络·计算机网络·wireshark
梁辰兴1 天前
计算机网络基础:报文鉴别
网络·计算机网络·计算机·计算机网络基础·梁辰兴·报文鉴别
JAVA面经实录9172 天前
操作系统面试题
java·服务器·数据库·计算机网络·面试
JAVA面经实录9172 天前
操作系统(面试全覆盖)
java·计算机网络·面试
JAVA面经实录9172 天前
高频算法面试题
java·计算机网络·算法·面试
@insist1232 天前
系统架构设计师-计算机网络基础体系全梳理
计算机网络·系统架构·软考·系统架构设计师·软件水平考试
Yvonne爱编码2 天前
JAVA EE初阶---DAY 2 计算机网络
java·开发语言·计算机网络·算法·java-ee·php
梁辰兴2 天前
计算机网络基础:对称加密密码体制
网络·计算机网络·计算机·对称加密·计算机网络基础·梁辰兴
aramae2 天前
《计算机网络(第5版)》第二章 物理层
服务器·网络·后端·计算机网络