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

以上总结如下图:

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

相关推荐
云运维笔记7 小时前
计算机网络基础:从通信概念到网络设备
计算机网络
啊阿狸不会拉杆10 小时前
《计算机网络-自顶向下方法》7.1 概述 读书笔记
计算机网络
啊阿狸不会拉杆10 小时前
《计算机网络-自顶向下方法》6.4 交换局域网 读书笔记
开发语言·计算机网络·php
啊阿狸不会拉杆11 小时前
《计算机网络-自顶向下方法》6.5 链路虚拟化:网络作为链路层 读书笔记
网络·计算机网络·php
疯狂打码的少年11 小时前
【计算机网络】OSI/RM七层模型(层次结构、各层功能速览)
开发语言·笔记·计算机网络·php
啊阿狸不会拉杆11 小时前
《计算机网络-自顶向下方法》6.7 回顾:Web页面请求的历程 读书笔记
前端·计算机网络
啊阿狸不会拉杆13 小时前
《计算机网络-自顶向下方法》7.2 无线链路和网络特征 读书笔记
网络·计算机网络
2501_9159214313 小时前
抓包工具对比:Charles、TraceEagle、Wireshark、Fiddler 与 Proxyman
网络协议·计算机网络·网络安全·ios·adb·https·udp
一条泥憨鱼15 小时前
【从0开始学习计算机网络】| 邮件协议入门:SMTP、POP3、IMAP
linux·运维·计算机网络·github
落羽的落羽1 天前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法