网络层 网际控制报文协议 ICMP


为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (InternetControl Message Protocol)。

  • ICMP 是互联网的标准协议。
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP的报文格式

在这里插入图片描述

ICMP的报文种类

  • ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
  • ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

ICMP差错报文(四种)

  1. 终点不可达
  2. 时间超过
  3. 参数问题
  4. 改变路由(重定向)(Redirect)

不应发送 ICMP 差错报告报文的几种情况

  1. 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
  2. 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
  3. 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
  4. 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP询问报文(两种)

  1. 回送请求和回答报文
  2. 时间戳请求和回答报文

ICMP 的应用举例

PING (Packet InterNet Groper) 的应用举例

  • PING 用来测试两个主机之间的连通性。
  • PING 使用了 ICMP 回送请求与回送回答报文。
  • PING 是应用层直接使用网络层 ICMP 的例子,
  • 它没有通过运输层的 TCP 或UDP。
    在这里插入图片描述

Traceroute 的应用举例

  • 在 Windows 操作系统中这个命令是 tracert。
  • 用来跟踪一个分组从源点到终点的路径。
  • 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq1350975694/article/details/106969285