ICMP 协议的简单描述
- ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
- ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。
- ICMP报文是在IP数据报内被传输的。在实际传输中的数据包结构:20字节IP首部 + 8字节ICMP首部+ 1472字节<数据大小>38字节。
- ICMP报文格式:IP首部(20字节)+8位类型+8位代码+16位校验和+(不同的类型和代码,格式也有所不同)。
ICMP数据报格式
类型(type):ICMP 消息给予RFC 规范的类型域分类
代码(Code):ICMP 消息给予RFC 规范的子类型
校验和(Checksum):用来保证ICMP 头和数据在抵达目的地址时的完整性
可变域(Variable):依赖于类型和代码域的部分
ICMP 请求报文类型
ICMP 响应报文类型
ICMP 协议提供的诊断报文类型
相关案例
案例一:基本数据格式分析
案例二:Linux 下ICMP 抓包分析
案例三:TTL相关说明
通过对以上信息的详细介绍,可以看到该包的类型为11,代码为0。这表示该数据包是一个请求超时的数据包。在以上信息中,用户可能发现这个数据包的TTL 值为1,也就意味着这个数据包会在它遇到的第一个路由器处被丢掉。这就是因为主机192.168.0.107与4.2.2.1通信,之间会经过好多个路由器(至少会有一个),所以这个数据包将不会到达目的地址。由此,就可以判断出该网络的连接情况,并简单的画出网络结构。