ICMP是IP层协议。
ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。一些ICMP报文把差错报文返回给用户进程。
ICMP报文是在IP数据报内部被传输的,如图6 - 1所示
ICMP报文
可以看出首部是8个字节
所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同
类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。
检验和字段覆盖整个ICMP报文。使用的算法与IP首部检验和算法相同。ICMP的检验和是必需的。
ICMP报文的种类
分为两类:ICMP差错报告报文和ICMP询问报文
具体类型分类
如果最后一列标明是“内核”,那么ICMP就由内核来处理。如果最后一列指明是“用户进程”,那么报文就被传送到所有在内核中登记的用户进程,以读取收到的ICMP报文。如果不存在任何这样的用户进程,那么报文就悄悄地被丢弃(这些用户进程还会收到所有其他类型的ICMP报文的拷贝,虽然它们应该由内核来处理,当然用户进程只有在内核处理以后才能收到这些报文)。有一些报文完全被忽略。最后,如果最后一列标明的是引号内的一串字符,那么它就是对应的Unix差错。
其中
类型8,代码0:表示回显请求(ping请求)。
类型0,代码0:表示回显应答(ping应答)
类型11,代码0:超时