ICMP 协议

什么是 ICMP 协议?

因特网控制报文协议 ICMP(Internet Control Message Protocol)是一个差错报告机制,是 TCP/IP 协议簇中的一个重要子协议,通常被 IP 层或更高层协议(TCP 或 UDP)使用,属于网络层协议,主要用于在 IP 主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等,比如常用的 Ping 工具就是基于 ICMP 协议。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

ICMP 头部

  • ICMP 头部包含如下五个字段:
type ICMP struct {
	Type           uint8
	Code           uint8
	Checksum       uint16
	Identifier     uint16
	SequenceNumber uint16
}

其中:

Type 字段表示 ICMP 消息的类型;

Code 字段表示 ICMP 消息类型细分的子类型;

Checksum 字段表示 ICMP 报文的校验和,Checksum 是一种防止数据包在传输过程中被篡改的算法。

Identifier(标识符) 字段用于区分不同的 ICMP 进程。

SequenceNumber(序列号) 用于判断 ICMP 报文是否发生乱序或丢包。这个值会随着发送 ICMP 报文的数量而增加,接收方在收到 ICMP 报文后,会将相同的序列号发送给请求方。

不同的 Type 和 Code 值表示不同的 ICMP 报文类型,对应了数据包处理过程中可能出现的不同错误情况,不同类型的 ICMP 报文又分为差错报文和查询报文两种,下表解释了所有的 ICMP 报文类型:


posted @   Désiré  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示