开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议
ICMP - 主机或路由器使用ICMP来发送差错报文和询问报文
ICMP报文被封装在IP数据报中发送
ICMP差错报文告报文共有以下五种
-
终点不可达
-
源点抑制
-
时间超过
-
参数问题
-
改变路由(重定向)
-
当路由器或主机不能交付数据报时,就向源点发送终点不可报文。具体再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢,
-
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1 若不为0,则将该IP数据报发出去;若结果为0 除非丢弃IP数据外,还要向源点发送时间超过报文
-
另外,当终点在预定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
-
当路由器或目的主机收到IP数据报文后,根据其首部中的校验和字段发现首部在传输过程中出现了误码,就该丢弃数据报,并向源点发送参数问题报文。
-
路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器(可通过更好的路由)
- 以下情况不应该发送ICMP报文:
- 对ICMP差错报文不再发送ICMP差错报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP数据报告文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如 127.0.0.0或0.0.0)的数据不发送ICMP差错报告文