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

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

ICMP

网际控制报文协议(Internet Control Message Protocol, ICMP),工作在网络层,是IP层协议,为了更有效地转发IP数据报和提高交付的机会,ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。

ICMP报文

ICMP差错报告报文

报文类型

类型 类型值 作用
终点不可达 3 当路由器或主机不能交付数据报时,向源点发送终点不可达报文
源点抑制 4 当路由器或主机由于网络拥塞而丢弃数据报时,向源点发送源点抑制的报文,告知源点放缓发送速率
时间超过 11 当路由器收到生存时间(TTL)为0的数据报时,丢弃该数据报并向源点发送时间超过报文;当终点在预定时间内不能收到一个数据报的全部数据报片时,丢弃所有收到的数据报片,并向源点发送时间超过报文
参数问题 12 当路由器或目的主机收到的数据报的首部中欧的字段的值不正确时,丢弃该数据报并向源点发送参数问题报文
改变路由 5 路由器把改变路由报文发送给主机,让主机直到下次应将数据报发送给另外的路由器

不发送ICMP差错报文的情况

  • 对ICMP差错报文不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的后续所有数据报分片,都不发送ICMP差错报告报文
  • 对具有多播地址的数据报,都不发送ICMP差错报告报文
  • 对具有特殊地址的数据报,不发送ICMP差错报告报文

ICMP询问报文

类型 类型值 工作原理 作用
回送请求或回答报文 8或0 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP发送回答报文 测试目的站是否可达并了解其有关状态
时间戳请求或回答报文 13或14 ICMP时间戳请求报文请求某台主机或路由器回答当前的时间和日期,ICMP时间戳回答报文中有一个32位的字,其值表示从1900年起当前时刻一共有多少秒 用于时间同步和时间测量

应用

PING

分组网间探测(Packet InterNet Groper, PING),用来测试两台主机之间的连通性,基于ICMP回送请求和回答报文,PING是应用层直接使用网络层ICMP而没有通过传输层TCP或UDP的一个例子。

PING向给定的IP地址发送ICMP回送请求报文,如果这个IP地址对应的主机工作正常,则会发回ICMP回送回答报文,ICMP回送请求和回答报文中都有时间戳,可以得到往返时间,同志还可以得到已发送、已收到、已丢失的分组数等。

Windows PING示例

ping www.baidu.com

Linux PING示例

ping www.baidu.com

Traceroute

Traceroute用于跟踪一个分组从源点到终点的路径,在Unix中命令为traceroute,在Windows中命令为tracert,基于ICMP时间超过报文和UDP

Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报,第一个数据报设置TTL为1,到达第一个路由器时,路由器收到该报文,将其TTL修改为0,此时路由器会将其丢弃并向源主机发送ICMP时间超过报文;源主机收到后在发送一个TTL为2的数据报,该数据报到达第二个路由器后TTL为0,第二个路由器丢弃该数据报并向源主机发送ICMP时间超过报文,如此往复循环,直到达到目的主机,此时目的主机不转发数据报也不将TTL减为1,但因为IP数据报中封装的是无法交付的传输层UDP数据报,因此目的主机要向源主机发送ICMP终点不可达报文差错报文,如此一来,源主机就得到从源主机到目的主机的路由器路径

Windows tracert示例

tracert www.baidu.com

Linux traceroute示例

traceroute www.baidu.com

参考

谢希仁. 计算机网络(第7版). 电子工业出版社, 2017.
王道考研计算机网络

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!

猜你喜欢

转载自blog.csdn.net/qq_44486439/article/details/112909623