网际控制报文协议ICMP
为了解决在IP数据报传输过程中出现差错后向源主机报告等问题,从而更有效地转发IP数据报以及提高IP数据报交付的成功率,在网际层实现了ICMP网际控制报文协议。主机或者路由器可以使用ICMP来发送差错报告报文或者询问报文。ICMP报文被封装在IP数据报中发送。
ICMP报文的分类
常见的差错报告报文
终点不可达:当路由器或者主机不能交付IP数据报时候,向源点发送终点不可达报文,具体可在根据ICMP的代码字段分为网路不可达、目的主机不可达、目的协议不可达、目的端口不可达等13种
源点抑制:当路由器或者主机由于拥塞而丢弃IP数据报时,就向发送该IP数据报的源点发送源点抑制报文,使得源点将IP数据报的发送速率降低。
超时:超过TTL的设置值
参数问题:检测到IP数据报首部误码等
改变路由(重定向):有更优的路由选择。
ICMP询问报文
回送请求和回答:测试目的站是否可达及了解有关状态
时间戳请求和回答:同步时钟和测量时间
不发送ICMP差错报告的情况
- 对于ICMP差错报告报文不再发送ICMP差错报告报文
- 对于第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文,只有第一个分片拥有该IP数据报的传输层信息,如端口等
- 对于多播地址的IP数据报都不发送ICMP差错报告报文
- 对于特殊地址如127.0.0.0或者0.0.0.0的IP数据报都不发送差错报告报文
应用:
win: ping pathping(tracert) 应用层直接使用ICMP协议
unix:traceroute 运输层使用UDP,网际层使用ICMP
参考资料
文档信息
- 本文作者:wendaocsmaster
- 本文链接:https://wendaocsmaster.github.io/2023/02/19/Computer-Networks-network-layer-ICMP/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)