美文网首页
网络协议分析-ICMP

网络协议分析-ICMP

作者: Odinmx | 来源:发表于2019-12-10 17:57 被阅读0次

    ICMP:

    ICMP 网际控制报文协议,通过ICMP可以定位故障发生位置和原因。

    由于IP不是为可靠传输服务设计的,所以ICMP的目的主要是用于在TCP/IP网络中发送出错和控制消息。

    ICMP是由IP承载的。

    ICMP报文类型:

    差错报告报文

    控制报文

    请求/应答报文

    ICMP不同报文有不同的结构。但都包含8bit的类型字段,8bit 代码字段,和16bit校验和部分。

    具体的type与code组合见RFC6918

    差错报告类报文:

    在发送差错报告类报文时,必须遵守以下规则:

    i. ICMP差错报告类报文数据区内要包括发生差错的IP数据报首部,以及数据区的至少前64bit(包含了上层协议的首部)这段信息包含了出错数据包的关键信息,这些信息能够为源端采取差错处理措施提供依据。

    ii. ICMP差错报告只能向源端报告差错,不能向中间路由器报告差错。

    iii. 携带ICMP差错报文的数据包出现差错时,不会再生成ICMP报文。

    iv. 对于分片的IP数据报,ICMP差错报告仅对第一个分片应用。

    差错报告类报文包括以下四种:

    § 目的地址不可达报文

    § 超时报文

    § 参数错误报文

    § Photuris(主要在安全应用上)

    目的地址不可达报文:

    当路由器无法转发或交付数据报时,可使用ICMP目的地址不可达报文通知数据报源端。

    其代码字段取值与意义如下:

    超时报文:

        超时报文用于两种情况,一种是TTL值为0,另一种是分片重组时超时。

    参数错误报文:

        只有问题严重到需要把数据包丢弃时,才会发送此报文。

        报文格式较之前新加指针字段,指针字段用于指示发生错误的第一个字节在数据包首部的位置。

    Photuris报文:

    此报文主要用于IPsec。

    IPsec 提供数据机密性,完整性保护,并且能够实现对端认证,数据压缩等一系列功能。其中安全保护需要依托一系列参数。保护不同的数据可能需要不同的安全参数,所以当存在多组安全参数时,需要对每个组进行标识,这就是SPI。

    Photuris代码字段取值与这些功能密切相关。

    请求应答类报文:

    ○ 回送请求/回送应答报文:

        这两种报文主要用于测试网络的连通性,当主机向目的站发送ICMP回送请求时,收到该报文的目的站必须回应一个回送应答报文作回应。

        数据报在之前共有的部分上新加了8bit的标识,8bit的序号,以及一个可选数据区。

        当目标主机收到一个包含可选数据区的请求报文时,应当将数据区数据拷贝到应答报文中。

        标识和序号用于匹配请求和应答,成对的请求和应答报文使用相同的标识和序号字段。

            代码固定位0

    ○ 路由器恳求与通告报文:

        § 路由器通告报文:

        为了解决网络中存在多个与Internet相连的路由器,而主机通过静态配置只配置了一个默认路由器,当默认路由出现问题,网络中还有其他路由器无法连接网络的问题,路由器会定时向网络中发送路由器通告,告诉各主机目前可用的路由器。

        报文格式:

    路由器通告报文格式

        路由器地址以及优先级:指出目前可用的路由器以及其优先级,他们总是成对出现。

        地址数:指明了可用路由器的数量

        地址项长度:指明了地址的大小,以4字节为单位,对于IPV4地址,该字段为1

        生存时间:指明了路由信息保持有效的时间,以秒为单位。

    路由器发送通告报文的最长间隔是10分钟,这意味着最坏的情况下主机要等10分钟才能得到一条路由信息。为了避免主机的等待时间过长,ICMP规定,主机启动时以组播或有限广播的形式发送路由器恳求报文。

    § 路由器恳求报文:

        报文格式:

    路由器恳求报文格式

    类型设置为10,代码字段设置为0,。路由器收到恳求报文后,立即发送一个路由器通告报文作为响应。

    在RFC3344中新加了两个代码类型:

    ○ 时间戳请求应答报文:

        ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(Coordinated Universal Time, UTC)(早期的参考手册认为UTC是格林尼治时间)。这种ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间(如某些Unix系统提供的rdate命令)只能提供秒级的分辨率。由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。

        报文结构:

    时间戳请求报文结构

    发起时间戳:用于记录发送者生成时戳请求报文的时间。

    接收时间戳:用于记录接收者受到请求的时间。

    传送时间戳:用于记录接收者生成应答报文的时间。

    ICMP应用:

         Ping 程序

        tracertroute程序


    欢迎指出文中错误,谢谢

    相关文章

      网友评论

          本文标题:网络协议分析-ICMP

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