• mtu测试


    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/jeromezmzx007/article/details/90600344

    MTU实测

    ip报头20字节,icmp报头8字节
    目的:通过发送长度大于1500的icmp包详细分析分片与总长度的关系
    情景:
    ip地址为10.60.30.100/16的PC发送大小为2000的ICMP包至10.60.10.252/16,它们处于同一网段,即window命令提示符下输入:
    ping 10.60.10.252 –l 2000

    图1.第一个icmp request用ethereal抓包截图的各字段,请注意蓝色部分


    图1
    图1分析:因为长度是2000,大于1500,所以会分片发送,如图1,IP字段头部长为20bytes,total length为1372bytes,偏移量为0;icmp字段头部长度为8bytes
    请注意第一个包total length不一定就是MTU 1500,和操作系统协议栈实现有关.
    图2: 第一个icmp request分片包

    图2分析:
    IP字段的identification为0x90dd(2525)与图1的identification相同,说明是图1包的分片包.
    偏移量fragment offset为1352,注意是相对第一个包,即图1的偏移量
    注意此处分片包并没有icmp字段,因为已经不需要了,到达目的10.60.10.252可以根据偏移重组成完整的icmp包.
    由图2 计算icmp包长度:
    图2分片包的total length为676,偏移量fragment offset为1352,则第一个icmp包由IP封装,IP总长度为676+1352=2028bytes
    ICMP长度为2028-20=2008; 减去的20bytes为IP头部长度
    ICMP数据长度为2008-8=2000bytes; 减去的8bytes为ICMP头部长度
    2000bytes正是发送的数据长度!!!
    注意:”ping 10.60.10.252 -l 2000”中的2000指的是icmp数据的长度,即不包括IP头部,ICMP头部
    MTU的1500指的是IP头部长+IP数据部分总共的长度,对ICMP而言, icmp的数据长度为1500-20-8=1472 ( 减去的20为IP头部长,8为icmp头部长)为临界长度,若icmp数据部分大于1472bytes则会分片,正如ping 10.60.10.252 -l 2000一样;如果有IP option部分,则临界长度小于1472bytes.

  • 相关阅读:
    package的使用
    package的使用
    访问控制符详解
    访问控制符详解
    继承
    Java 重写 & 重载 & super 关键字
    继承和权限控制
    错误: 程序包com.bjsxt.java140不存在
    package和import语句
    static关键字
  • 原文地址:https://www.cnblogs.com/heishanyaoren/p/11941975.html
Copyright © 2020-2023  润新知