1. 简介
ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议。
2. 功能
ICMP
主要的功能包括:
1)确认 IP 包是否成功送达目标地址
2)报告发送过程中 IP 包被废弃的原因
3)改善网络设置
在 IP
通信中如果某个 IP
包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。
ICMP 目标不可达消息
如上图例子,主机 A
向主机 B
发送了数据包,由于某种原因,途中的路由器 2
未能发现主机 B
的存在,这时,路由器 2
就会向主机 A
发送一个 ICMP
目标不可达数据包,说明发往主机 B
的包未能成功。
ICMP 的这种通知消息会使用 IP
进行发送 。
因此,从路由器 2
返回的 ICMP 包会按照往常的路由控制先经过路由器 1
再转发给主机 A
。收到该 ICMP 包的主机 A
则分解 ICMP 的首部和数据域以后得知具体发生问题的原因。
3. ICMP数据包
字段说明:
类型 | 说明 |
---|---|
类型 | 占一字节,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文 |
代码 | 占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型 |
校验和 | 这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错(其计算方法与在我们介绍IP报头中的校验和计算方法是一样的) |
抓包:
实验: 用110主机去ping107主机(ping命令是基于icmp,在网络层)
1)请求
包格式
2) 应答
包格式
4. ICMP类型
icmp大致分为两类报文:
1)通知出错原因
2)诊断查询
类型(十进制) | 内容 |
---|---|
0 | 回送应答 |
3 | 目标不可达 |
4 | 原点抑制 |
5 | 重定向或改变路由 |
8 | 回送请求 |
9 | 路由器公告 |
10 | 路由器请求 |
11 | 超时 |
17 | 地址子网请求 |
18 | 地址子网应答 |
5. traceroute
traceroute也是基于ICMP协议实现的。
功能:
打印出可执行程序主机,一直到目标主机之前经历多少路由器。