4.8 网际控制报文协议ICMP.pdf
image.png

ICMP中的差错报文

image.png
若R1的路由表中没有网络N3的路有记录,默认路由以及主机H2的特定主机路由,则R1就不知道如何转发该数据报,只能将其丢弃,并向发送该数据报的源主机H1发送ICMP差错报告报文,其类型为终点不可达。
终点不可达:
image.png

当H1要发送数据给H2时,若R1没有网络N3的路有记录、默认路由以及H2的特定主机路由时,就不知道怎么发送该报文,只能将其丢弃,并且发送ICMP差错报文(终点不可达)

源点抑制:
image.pngimage.png
image.png
时间超过:
image.png

例如:

image.png
image.pngimage.pngimage.png
参数问题:
image.pngimage.png
改变路由:
image.png

原来H1 -> H2的路径如图红线所示,当R1检测到到H2有更合适的路径时,就会发送改变路由报文。

image.png

之后便会开始走新的路径。

image.png

常见的ICMP询问报文

image.png

ICMP协议的两个应用

分组网间探测PING:

  • 用来测试主机或路由器之间的连通性
  • 应用层直接使用网际层的ICMP(没有经过运输层的TCP或UDP)
  • 使用ICMP回送请求和回答报文

例如:
image.png
跟踪路由traceroute:

  • 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
    image.png
    image.png

跟踪路由traceroute实现原理:

  • 简单来说,就是先发送一个TTL = 1的报文,当TTL到达第一个主机后TTL变为0,此时路由器会回送时间超过差错报文,此时就能知道第一个路由位置。此时源主机再发送TTL = 2 的报文,当TTL到达第二个主机后TTL变为0,此时路由器会回送时间超过差错报文,此时就能够知道第二个路由的地址。如此反复,直到到达最后一个路由。

例如:
image.png

发送第一个TTL = 1 ,到达第一个主机后回送时间超过报文,此时源主机就能知道第一个路由器

image.png

发送第二个TTL = 2 ,到达第二个主机后回送时间超过报文,此时源主机就能知道第二个路由器

image.png

  • 到达目的地址后,知道最后一个路由器,过程结束。