网际控制报文协议ICMP

2017-10-11  本文已影响0人  wayyyy

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

报文格式
ICMP报文格式.png
ICMP报文分为2种:
ICMP差错报文

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

ICMP差错报文数据字段内容.png
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终点不可达差错报文。

上一篇下一篇

猜你喜欢

热点阅读