ICMP(Internet Control Message Protocol)是互联网消息控制协议,用于错误报告和诊断网络层问题。
1、网络层工作的组成
- 1. IP
- 创建数据报
- 一跳一跳传递它到另一端
- 2. 路由表
- 填充转发表的算法
- 3. ICMP
- 在终端和路由之间交流网络层的信息
- 报告错误情况
- 帮助诊断问题
2、ICMP工作于网络层之上
3、ICMP服务模型
特性 | 表现 |
---|---|
报告消息 | 独立的报告错误的消息 |
不可靠 | 简单的数据报服务——不会重发 |
ICMP消息的组成:数据部分,包括接收到的IP数据包头和数据部分的前8个字节,加上消息类型TYPE和编码CODE。最后加上IP数据包头组成数据包。
4、部分ICMP消息类型
3 0:路由器不知道应该将数据包转发给哪个路由器
3 1:最后一个路由器找不到目的主机
3 3:目的端口无法识别
5、Ping和Traceroute
Ping通过发送类型为8的ICMP消息,来得到一个类型为0的ICMP消息。
Traceroute通过发送IP数据包,从TTL为1开始逐渐增加,路由器会返回类型为11的ICMP消息给发送端,直到目的主机接收到,由于IP数据包一开始设定了一个接收端无法识别的端口,所以目的主机会返回一个类型为类型为3,编码为3的ICMP消息,此时,发送端就知道了往返一次需要的时间。
6、总结
ICMP向终端主机和路由器提供有关网络层的信息。
它工作于网络层之上所以严格来说它是一种运输层协议。
常用的工具“ping”和“traceroute“都依赖ICMP。