计算机网络——网际控制报文协议ICMP

138 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

网际控制报文协议ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
  • 主机或路由器使用ICMP来发送差错报文和询问报文
  • ICMP报文被封装在IP数据报中发送

ICMP差错报文告报文共有以下五种

  • 终点不可达

  • 源点抑制

  • 时间超过

  • 参数问题

  • 改变路由(重定向)

  • 当路由器或主机不能交付数据报时,就向源点发送终点不可报文。具体再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。

image.png

image.png

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢,

image.png

  • 当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1 若不为0,则将该IP数据报发出去;若结果为0 除非丢弃IP数据外,还要向源点发送时间超过报文

  • 另外,当终点在预定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文

  • 当路由器或目的主机收到IP数据报文后,根据其首部中的校验和字段发现首部在传输过程中出现了误码,就该丢弃数据报,并向源点发送参数问题报文。 image.png

  • 路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器(可通过更好的路由)

image.png

  • 以下情况不应该发送ICMP报文:
  • 对ICMP差错报文不再发送ICMP差错报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP数据报告文
  • 对具有多播地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(如 127.0.0.0或0.0.0)的数据不发送ICMP差错报告文