网络层(二)—— ICMP协议

网络层(二)

ICMP协议

  • 因特网控制报文协议,被主机和路由器用来彼此沟通网络层的信息,最典型的用途是差错报告。
  • ICMP报文是作为IP有效荷载承载的。当主机收到一个指明上层协议为ICMP的IP数据报时(上层协议编码为1),它分解出该数据报的内容给ICMP,就像分解出一个数据报内容给TCP和UDP一样

ICMP报文格式

在这里插入图片描述
在这里插入图片描述- ICMP有一个类型字段和编码字段,且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节

ICMP的分类

ICMP分为差错报告报文和询问报文
在这里插入图片描述

关于ICMP报文的常见问题

ICMP 的主机不可达报文是在什么情况下发出的?

  • 路由器给该主机寻路时,没有找到相应路径,向源 IP 发回 ICMP 主机不可达

ICMP 重定向差错报文是怎么来的,在何种场合出现?

  1. 主机发送 IP 数据报给 R1,因为主机的默认路由指向的下一跳是 R1。
  2. R1 收到数据报并且检查它的路由表,发现 R2 是发送该数据报的下一跳。当他将数 据报发送给 R2 的时候,发现发送的接口与接受的端口是一样的,因此同时发送一个 ICMP 重定向报文给主机。
  3. P1 接受到 ICMP 重定向报文后,接下来的数据报就发送给 R2,而不再发送给 R1。

重定向报文有什么规则?

  • 重定向报文只能有路由器生成。
  • 重定向报文是为主机而不是为路由器使用的。

ping的实现

问题 7:Ping 命令的具体过程是怎么样的? 参考文章:《对于 Ping 的过程,你真的了解吗?》 https://mp.weixin.qq.com/s/DfQT3Vw2xaq60YIil-7Yxw