计算机网络--网际控制报文协议ICMP

为了更有效地转发数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP,ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文是装在IP数据报中,作为其数据的一部分。

报文格式

在这里插入图片描述

ICMP报文分为2种:

ICMP差错报文
  • 终点不可达
    当路由器主机不能交付数据报时就向源点发送终点不可达报文。
  • 源点抑制
    当路由器或主机不能交付数据报时,就像源点发送终点不可达报文。
  • 时间超过
    当路由器收到生存时间为0的数据报时,除丢弃数据报外,还要向源点发送时间超过报文。
  • 参数问题
  • 改变路由

所有的差错报文的数据字段都具有相同的格式,即把收到的需要进行差错报告的IP数据报的首部和IP数据报内容前8个字节提取出来,作为ICMP报文的数据部分。这样接收ICMP差错报文的模块就能把它与某个特定的协议(IP数据报首部中的协议字段)和用户进程(IP数据报内容的前8个字节即为TCP和UDP端口号)联系起来。

在这里插入图片描述

ICMP询问报文
  • 回送请求和回答
  • 时间戳请求和回答
PING

ICMP报文一个重要的应用就是分组网间探测PING,用来测试2个主机之间的连通性。
PING使用了ICMP回送请求和回答报文,PING是应用层直接使用网络层ICMP的一个例子,它没有通过运输层的TCP和UDP。

比如PC向目的服务器发送4个ICMP回送请求报文。如果服务器正常工作而且响应这个ICMP报文,那么它就发回ICMP回送回答报文。由于往返的ICMP报文上面都有时间戳,因此,还可以得出往返时间RTT。
Traceroute

traceroute用来跟踪一个分组从源点到终点的路径。

Traceroute从源主机向目的主机发送一个连串的IP数据报,IP数据报中封装的是无法交付的UDP用户数据报(端口非法),第一个数据报P1的生存时间TTL设置为1,当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL的值减1,由于TTL等于0了,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过的差错报文。

源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到到路由器R1,R1将TTL减1再转发给路由器R2。R2将TTL减1变为0,于是丢弃p2,并向源主机发送一个ICMP时间超过的差错报文。

这样一直继续下去,直到到达目的主机,此时TTL为1,目的主机不转发数据报,也不把TTL减1。但因IP数据报封装的是无法交付的运输层UDP用户数据报,因此目的主机向源主机发送ICMP终点不可达差错报文。

以下为博客:计算机网络基础知识–面试收藏必备

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

发布了118 篇原创文章 · 获赞 297 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_32642107/article/details/105532004