美文网首页
网际控制报文协议ICMP

网际控制报文协议ICMP

作者: wayyyy | 来源:发表于2017-10-11 21:54 被阅读0次

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

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

    所有的差错报文的数据字段都具有相同的格式,即把收到的需要进行差错报告的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终点不可达差错报文。

    相关文章

      网友评论

          本文标题:网际控制报文协议ICMP

          本文链接:https://www.haomeiwen.com/subject/qzliyxtx.html