网络协议补完计划--ICMP协议

作者: kirito_song | 来源:发表于2018-05-31 17:35 被阅读30次

    目录

    • 前言
    • ICMP协议概述
    • ICMP协议实现原理
    • ICMP数据包的格式
    • 常见的ICMP报文
    • 参考资料

    前言

    参照清华大学出版社-罗军周主编的《TCP/IP协议及网络编程技术》进行学习。
    本篇主要参考第五章:《ICMP协议》
    用于测试网络或者检测IP数据包传输过程中的各种错误、并通知源地址。


    ICMP协议概述

    因为IP协议是不可靠的传输服务、因此源地址发出的IP数据包很可能无法达到目标地址(目标地址不存在、过程中某链路中断等)。
    这时ICMP协议就能检测IP数据包传输过程中的各种错误、并通知源地址。
    需要注意的是:ICMP被动触发一定是出错、但主动触发可能是测试。(比如type = 13/14 type = 8/0)


    ICMP协议实现原理

    让发现错误的路由器、向数据包的(通过IP数据包的信息获取)源主机地址发送一个ICMP数据包、并且通过ICMP数据包报告出错的原因。

    需要注意的是。ICMP协议是IP协议的补充、ICMP与IP协议位于同一个层 次(IP层),但ICMP报文是封装在IP数据报的数据部分进行传输的。但是、这次IP传输如果出错、ICMP协议规定、将废弃这次ICMP发送。


    ICMP数据包的格式

    格式

    5-1

    报文种类:

    ICMP报文虽然细分为很多类,但总的来看可以分为如图所示的三大 类:差错报告、控制报文和请求应答报文。


    5-2

    类型

    • 0 响应应答(ECHO-REPLY)

    • 3 不可到达


      5-3
    • 4 源抑制

    • 5 重定向

    • 8 响应请求(ECHO-REQUEST)

    • 11 超时

    • 12 参数失灵

    • 13 时间戳请求

    • 14 时间戳应答

    • 15 信息请求(*已作废)

    • 16 信息应答(*已作废)

    • 17 地址掩码请求

    • 18 地址掩码应答

    下面是几种常见的ICMP报文:

    • 响应请求

    我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

    • 目标不可到达、源抑制和超时报文

    这三种报文的格式是一样的:
    目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。
    源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,一定时间后主机就会逐渐恢复传输速率。
    无连接方式网络的问题就是数据报文丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

    • 时间戳

    时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

    • 关于最后一个字段

    对于由于错误被动生成的ICMP报文中还需要加上源IP数据包的IP头部以及数据部分的前64位、以源主机方便定位。
    例如:3、不可到达。4、源抑制。5、重定向。11、超时。12、参数失灵。


    参考资料

    ICMP数据包结构
    分析ICMP协议数据包格式

    相关文章

      网友评论

        本文标题:网络协议补完计划--ICMP协议

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