ICMP协议

278 阅读2分钟

一、简介

  • 目的:为了更加有效地转发IP数据报和提高交付成功的机会。
  • ICMP主要由两种功能:差错(或异常)报告、网络探询。 image.png
  • 整个ICMP报文保存在IP数据报的数据部分。也就是说,这是一个网络层的协议。
  • 类型是指,指定ICMP是哪种类型的。(ICMP差错报文、ICMP询问报文)
  • 代码是指,进一步区分同一类型的不同情况
  • 检验和,用于检验整个ICMP报文

二、ICMP差错报文

1. ICMP差错报文分类

1.1 终点不可达

  • 当路由器或主机无法交付数据报时就向源点发送终点不可达的报文。

1.2 源地抑制

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

1.3 时间超过

  • 当路由器收到TTL=0的数据报时,除丢弃该数据报之外,还应该向源点发送时间超过报文。
  • 当接收端在预先时间内没办法收集数据报的所有报片时,就会将所有已经收集到的报文丢弃,并向源点返回时间超过报文。

1.4 参数问题

  • 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

1.5 改变路由(重定向)

  • 路由器把改变路由报文发送给主机,告诉主机,下一个更好的路由选择。

image.png

2. ICMP差错报文数据字段

image.png

  • 前8个字节,就是对应第一大节的数据报的第一行
  • 然后将收到的IP数据报的首部以及前八个字节截取下来,放到差错报文里面。

3. 不应该发送ICMP差错报文的情况

image.png

三、ICMP询问报文

1. ICMP询问报文分类

1.1 回送请求和回答报文

  • 主机或路由器向特定的目的主机发出询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
  • 目的是,测试目的是否可达以及了解其相关状态。(也就是看PING不PING得通)

1.2 时间戳请求和回答报文

  • 请某个主机或路由器回答当前的日期和时间。
  • 目的是,进行时钟同步和测量时间。

三、ICMP的应用

1. PING

2. Traceroute

  • 也就是看到达源点需要多长时间。 image.png