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协议实现的。
功能:
打印出可执行程序主机,一直到目标主机之前经历多少路由器。

1336

被折叠的 条评论
为什么被折叠?



