Internet控制报文协议(Intemet Control Message Protocol, ICMP)是IP协议的一种补充,它与IP协议结合使用,以便提供与IP协议层配置和IP数据包处理相关的诊断和控制信息(IP协议本身并没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包,也没有提供直接的方式来获取诊断信息。)
ICMP通常被认为是IP层的一部分,它需要在所有IP实现中存在。它使用IP协议进行传输。因此,确切地说,它既不是一个网络层协议,也不是一个传输层协议,而是位于两者之间。(这一点和大多数优快云博主的不太一样,但我看TCP/IP协议上是这样写的,我决定按照书上的来)
文章目录
1. ICMP报文是在IP数据报内被封装传输的。
ICMP报文是在IP数据报内被封装传输的。
1.1 先回顾一下IPv4头部结构和IPv6头部结构,方便演示如何封装ICMP报文
IPv4头部结构和IPv6头部结构的具体分析,可以看我的文章:《IPv4和IPv6的数据报结构头部详解》,网址:https://blog.youkuaiyun.com/qq_45877524/article/details/105003498
这里只标注与该文章相关的内容。(我直接拿了旧的图片)
在IPv4中,协议(Protocol)字段值为1表示该报文携带了ICMPv4。 在IPv6中,ICMPv6报文可能开始于0个或者多个扩展头部之后。位于ICMPv6头部之前的最后一个扩展头部包含了一个值为58的下一个头部(Next Header)字段。
1.2 如何封装
- 类型:占8位,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文