欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!
文章目录
- 前言
- 1 ICMP报文的封装
- 2 ICMP差错报告报文的类型
- 3 不应发送ICMP差错报告报文的情况
- 4 常用的ICMP询问报文类型
- 5 ICMP的应用
前言
网际控制报文协议(ICMP) 是Internet协议套件中的一个重要组成部分,工作在网络层(Layer 3)。它的主要功能是通过发送控制报文来报告网络状态或出现的差错,从而提高IP数据报的传输效率和稳定性。本章将详细讲解ICMP的作用、封装方式、报文类型、使用场景以及其在网络中的应用。
1 ICMP报文的封装
ICMP报文并不直接在网络上传输,而是作为IP数据报的一部分进行封装。
当一个设备(如路由器或主机)需要发送ICMP报文时,它将ICMP报文封装在一个IP数据报中通过网络进行传输。
因此,ICMP实际上是运行在IP协议之上的一种控制协议,它的报文格式包括ICMP报文头部和数据部分,后者通常包含了发生差错的原始IP数据报的一部分。
ICMP的作用:
-
提高IP数据报转发效率
-
发送差错报告和询问报文
2 ICMP差错报告报文的类型
ICMP支持多种差错报告类型,以下是一些常见的差错报告报文:
①终点不可达(Destination Unreachable)
当网络中某一节点无法将数据包传递到目标主机时,ICMP会发送目标不可达报文。此类报文可以由路由器或主机生成,可能的原因包括目标主机不存在、路由不可达等。
②源点抑制(Source Quench)
当网络设备(如路由器)由于网络拥塞无法及时处理接收到的数据包时,会通过ICMP发送源点抑制报文,要求源主机减少数据包的发送速率。这种机制帮助缓解网络拥塞,优化流量控制。
③时间超过(Time Exceeded)
ICMP的时间超时报文在数据包的生存时间(TTL)达到零时被发送。当IP数据报在网络中转发时,每经过一个路由器,TTL值会减1。如果TTL值减至0,数据包就会被丢弃,并由发送方收到ICMP的时间超时报文。该报文有助于诊断网络中数据包停留过久的原因。
④参数问题(Parameter Problem)
如果路由器或主机接收到的IP数据报首部格式错误,例如某个字段的值不合法或缺失,ICMP会发送参数问题报文。这有助于确认数据包格式错误并及时解决。
⑤重定向(Redirect)
当路由器检测到主机使用了非最优路径时,会向主机发送重定向报文,建议使用更优的路由。这样可以使网络中的路由更加高效,避免流量走非最佳路径。
3 不应发送ICMP差错报告报文的情况
为了避免ICMP报文的无效传递和冗余反馈,存在一些特殊情况,不应发送ICMP差错报告报文:
①不对ICMP差错报文产生新的ICMP差错报文
如果某一ICMP差错报文本身出现错误,不会再生成新的ICMP差错报文,以避免形成无限循环。例如,当路由器收到ICMP差错报文时,它不会再向源主机发送新的ICMP差错报文。
②不对第一个分片的后续分片发送ICMP差错报文
在IP数据报进行分片后,如果第一个分片发生错误,则后续分片不需要再发送差错报文。这是因为第一个分片的丢失或错误通常意味着整个数据报都无法被正确接收。
③不对多播地址的数据报发送ICMP差错报告
对于多播地址发送的数据包,由于其通信方式的特殊性,ICMP不会对其进行差错报告。这是为了避免多播通信中的冗余反馈。
④不对特殊地址(如127.0.0.0或0.0.0.0)的数据报发送差错报告
127.0.0.0是环回地址(Loopback Address),0.0.0.0是默认路由地址,它们在网络中有特定的用途,不需要针对这些地址的ICMP差错报告。
4 常用的ICMP询问报文类型
除了差错报告,ICMP还支持询问报文,常见的ICMP询问报文有以下几种:
①回送请求和回送应答(Echo Request and Echo Reply)
回送请求和回送应答报文用于测试主机之间的连通性。
通过ping命令,源主机向目标主机发送回送请求,目标主机收到后返回回送应答。这个机制通常用于检查网络的可达性、延迟等。
②时间戳请求和时间戳应答(Timestamp Request and Timestamp Reply)
时间戳请求和应答用于获取其他主机的当前时间,常用于时钟同步等操作。源主机发送时间戳请求报文,目标主机响应时间戳应答报文,包含其当前时间。
5 ICMP的应用
①网络故障诊断
使用ping命令发送ICMP回送请求报文,可以检查主机或路由器是否可达。如果ping命令返回应答,就意味着目标设备可以成功接收到数据包。否则,可能存在网络中断、路由配置问题或设备故障。
②路径追踪(Traceroute)
Traceroute工具利用ICMP的时间超时报文来追踪数据包的传输路径。通过逐步减小TTL值并跟踪每个路由器的回应,Traceroute可以显示数据包经过的所有路由节点,从而帮助管理员定位网络瓶颈和故障点。
以此类推……
③流量控制与网络优化
ICMP的源点抑制功能有助于控制数据流量,避免网络拥塞。路由器根据网络负载情况向源主机发送源点抑制报文,从而降低发送速率,优化网络性能。