ICMP 是个啥?

提起TCP/IP,好像大家都能说上几句。从OSI七层模型到TCP三次握手,如果不知道这些面试都不好意跟人打招呼,甚至最近几天老张在开发者头条看到有人在争论TCP到底会不会走向灭亡。

但是,如果问到ICMP是啥又有多少人知道呢?今天老张带大家一分钟了解重要但是被忽略的ICMP协议。

ICMP是啥?

ICMP,全称为Internet Control Message Protocol,即为因特网控制报文协议。

ICMP解决了啥?

IP协议本身即没有为终端系统提供直接的方式来发现那些发往目的地址失败的IP数据包,也没有提供直接的方式来获取诊断信息。而ICMP就是为了解决IP协议的不足引入的网络协议。

ICMP属于TCP/IP四层模型的哪一层?

ICMP既不是网络层协议,也不是传输层协议,但是通常ICMP被认为是IP层的一部分。

ICMP长啥样?

以ICMP分为ICMPv4和ICMPv6版本,分别对应IPv4协议和IPv6协议。以简单的ICMPv4为例,一条ICMPv4消息分为IPv4头部(20~60字节)、ICMP头部(又分为1字节的类型位、1字节的代码位、2字节的校验和)以及ICMP数据,其中IPv4头部中的协议位数值为1。

一条ICMPv4消息结构

ICMPv4保留了42个不同的类型值,用于含义明确的报文,但是大概只有8个是经常用到的。

ICMP有啥应用?

最简单而且常见的应用就是traceroute和ping命令,可以用来确认网络主机的状态。

后面老张会写两篇文章介绍traceroute和ping分别干了啥,感兴趣的小伙伴可以点击一波订阅。

在看点这里