zoukankan      html  css  js  c++  java
  • [na]IP分片抓包实验

    这两点比较重要

    1.IP+ICMP+DATA = 1500字节
    2.ping size指定的是data的大小.
    
    3,可以ping大包+不分片检测mtu(分片发生在出口,如果包尺寸大于接口ip mtu,则干脆不往出发包)
    

    分片实验

    我们都知道,在以太网中,如果源主机向目标主机发送的数据包大于网关MTU,则该数据包在传输过程中会被IP协议分片传输,具体的分片过程是怎样的呢?我们通过协议分析软件抓包来进行详细的查看(抓包软件使用科来网络分析系统)。
    因为以太网默认的MTU值为1500Byte,所以,为了达到分片的效果,我们应该传输大于1500Byte字节的数据包,才能使该数据包分段传输。
    我们从本机(192.168.6.11)发送一个2000字节的数据包到局域网的另一台主机(192.168.0.208)为例,在传输的过程中,开启软件抓包,就能够查看到详细的分片结果。
    我们以ping为例,在Windows命令提示符下输入:ping 192.168.0.208 -l 2000
    通过科来网络分析系统抓包,我们看到,该数据包被分片了,由于我们重复Ping了4次,所以,抓到了4次同样的请求与回显的数据包。如下图:


    查看详细的数据包解码(见下图):

    分析:因为ping的长度是2000字节,大于了MTU的值,所以会分片发送,如上图。捕获的这个数据包总长度为1500字节,更多分段位置1,表示还有数据分段。s,偏移量为0,需要注意的是IP头部的总长度字段值(这里是1500字节)并不全是数据的净载荷长度,这里还包括了IP以及ICMP的头部长度,分别是20字节和8字节。
    另外,IP协议的头部总长度并不一定就是MTU值1500字节,这个值与网络环境、操作系统等因素有关。
    下图是第一个分片包。

    分析:IP字段的标识0x787F,与第一个包相同,说明这是同一个数据包,只是被分片了。
        偏移量为185,表示相对第一个包的位置,以便接收主机根据偏移量进行数据重组。
        需要注意的是此处分片包并没有ICMP字段,接收主机会可以根据偏移重组成完整的ICMP数据包。
    
    最后,我们来计算一下该数据包的长度:
    
    
    - 默认的mtu
    1.IP+ICMP+DATA = 1500字节
    2.ping size指定的是data的大小.
    
    第一个数据包的总长度为1500字节,减去IP头部长度20字节,减去ICMP头部长度8字节,即1500-20-8=1472字节;
    第二个数据包的总长度为548字节,减去IP头部长度20字节,即548-20=528字节,两个数据包的净载荷1472+528=2000,正好是我们发送的数据长度。
    

    参考

    identification字段:

    • 每发一个包增加1:

    • 产生ip分片的数据包id相同.

    附:MTU和MSS

    首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。
    TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系

    IP难点之ip分片

    一个以太帧最大为1518字节 (14字节以太首部,20字节IP首部,UDP8/TCP20,因此IP包每次最大为1500==MTU。去掉协议头UDP有效数据1472字节,TCP为1460字节。还有最后的4字节CRC),但是一个IP数据报则可能会有8192字节,超过以太帧的最大限制,那么这时就需要IP分片,分批进行传输。

    发送方会在IP层将要发送的数据分成多个数据包分批发送,而接收方则将数据按照顺序再从新组织起来,等接收到一个完整的数据报之后,然后再提交给上一层传输层。

    注意,TCP协议为可靠的传输协议,它避免了IP分片的发生,它会在TCP层对数据进行处理,
    对数据进行分段(不在详述),IP分片用的多的在UDP协议
    
  • 相关阅读:
    ClickHouse之访问权限控制
    ClickHouse之集群搭建以及数据复制
    ClickHouse之简单性能测试
    ClickHouse之初步认识
    从完整备份恢复单个innodb表
    MHA快速搭建
    MySQL 5.7最新版本的2个bug
    Greenplum各种Tips(不定时更新)
    MySQL 5.7贴心参数之binlog_row_image
    TCP窗口机制与流量控制
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8514557.html
Copyright © 2011-2022 走看看