一文搞懂什么是ICMP协议

网络上的报文并不总是能顺利地传送并被接收,有时可能由于网关MTU太小而报文不允许分片造成报文不能被网关转发,有时可能由于TTL值减小到0而不能继续发送或接收,也有可能由于报文头参数有问题而不能被接收者接收,这些问题,并不能简单地丢弃处理。如果你丢弃了又不告诉源主机,源主机会认为它发送成功了,这样会造成通信双方信息不同步,进而造成更大的故障。所以,在丢弃报文的同时,还必须告知源主机丢弃的原因,就是通过ICMP报文携带相关信息

ICMP

ICMP

Internet Control Message Protocol,它位于网络层,是IP层的一个组成部分,主要用来传递差错报文以及其他需要注意的信息

icmp协议是网络层上的一个组成部分,所以icmp报文具有ip层首部,这里我并没有把icmp写成icmpHeader+icmpPayload,因为icmp报文的类型有很多,造成了icmp报文结构并不完全相同

差别在哪?我们先看一下icmp报文通用格式

所有类型的icmp报文都有1字节的Type、1字节的Code和2字节的Checksum,然后根据Type和Code值不同,决定了Message Body的不同

  • Type

报文类型,用来表示报文

  • Code

代码,提供报文类型的进一步信息

  • Checksum

校验和,icmp校验和仅覆盖icmp报文

  • Message Body

字段的长度和内容,取决于消息的类型和代码

ICMP报文类型

ICMP Echo Request/Response

用于检测IP网络连通性的Ping/Tracert,就是我们在cmd窗口中ping的操作

ICMP目的不可达消息

IP是一个尽力而为的交付机制,不会轻易丢弃数据报。当路由设备无法转发或者交付IP数据报时,会向源站发送一个目的站不可达的报文,然后丢弃该数据报

这就是我们在序言里提及的由于路由设备的MTU太小而需要分片,然而IP报文DF标志位不允许,造成无法转发,此时路由会丢弃报文并同时向源主机发送一条ICMP目的不可达消息

ICMP重定向消息

ICMP重定向消息是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台主机或网络设备使用非优化路由的时候,它会向该主机或网络设备发送一个ICMP重定向报文,请求主机或网络设备改变路由。路由器也会把初始数据报向它的目的地转发

ICMP超时消息

当收到TTL为0的报文时,网络设备/主机会丢弃该报文,并返回一个ICMP超时报文

ICMP参数问题消息

如果发现接收的数据包存在报文头参数有问题,无法完成数据包解析时,网络/主机会将数据包丢弃,并可能会返回一个ICMP参数问题消息给源端

当报文的IP头部,或者TCP头部,或者UDP头部里发生参数错误,接收者无法完成数据包解析工作,就会把数据包丢弃,并返回一个icmp参数问题消息

ICMP源端被关闭消息

用于表示对方或中途的服务器繁忙无法回应。如果网络设备没有足够的缓存空间存储到某个目的主机的报文时,这些报文会被该设备丢弃。此时,网络设备发送ICMP源端被关闭消息给该目的主机。如果到达某一个主机的数据包过快,来不及被主机处理,则该主机也可以发送ICMP源端被关闭消息,以便降低数据包速率

最后,以上讲的都是ICMPv4协议,基于IPv4协议的icmp报文,ICMPv6有自己的定义和格式


CAN(Controller Area Network,控制器局域网)总线协议一种广泛应用于工业自动化、汽车电子等领域的串行通讯协议。其帧格式如下: <img src="https://img-blog.csdnimg.cn/20200925125252655.png" width="400"> CAN总线协议的帧分为标准帧和扩展帧两种,其中标准帧包含11位标识符,扩展帧包含29位标识符。在CAN总线上,所有节点都可以同时发送和接收数据,因此需要在帧中包含发送方和接收方的信息。 帧格式的具体解释如下: 1. 帧起始符(SOF):一个固定的位模式,表示帧的起始。 2. 报文控制(CTRL):包含几个控制位,如IDE、RTR等。其中IDE表示标识符的类型,0表示标准帧,1表示扩展帧;RTR表示远程请求帧,0表示数据帧,1表示远程请求帧。 3. 标识符(ID):11位或29位的标识符,用于区分不同的CAN消息。 4. 控制域(CTL):包含几个控制位,如DLC、EDL等。其中DLC表示数据长度,即数据域的字节数;EDL表示数据长度是否扩展,0表示标准数据帧,1表示扩展数据帧。 5. 数据域(DATA):0~8字节的数据。 6. CRC:用于校验数据是否正确。 7. 确认位(ACK):由接收方发送的确认信息,表示数据是否正确接收。 8. 结束符(EOF):一个固定的位模式,表示帧的结束。 以上就是CAN总线协议的帧格式。在实际应用中,节点之间通过CAN总线进行数据交换,通过解析帧中的各个字段,可以判断消息的发送方、接收方、数据内容等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值