zoukankan      html  css  js  c++  java
  • ip报文和最小以太网报文填充

    ipv4报文格式

    IPV4报文格式详解
     版本(version):4比特(bit),4(二进制0100)代表ipv4,6(二进制0110)代表ipv6;
    报文头长度(IHL,IP Header Length):4比特(bit),该值以4字节(Byte)为一个单位,因此最长可以表示15*4=60字节(Byte);最小为20(不带Option字段),最长为60
     服务类型(TOS,Type of Service):8比特(bit),用于实施QOS,RFC 791中TOS 的IP Precedence分为8个优先级,值越大优先级越高。RFC2474中对TOS重新定义,前6位定义成DSCP,可以标识64中等级,后两位保留;
     报文总长度(Total Length):长度16比特(bit),以字节(Byte)为单位,包含报文头和数据,所有IP报文最长65535字节(Byte),2的16次方等于65536;
     标识符(Identification):16比特(bit),主机每发一个报文,加1,分片重组时会用到该字段,与Flags和Fragment Offset联合使用进行分段操作,一个大包分段为多个小包时标记为相同的值;
     标记(Flags):3比特(bit),第一位不使用,第二位是DF(Don’t Fragment)位,表示是否分片,0表示可以分片,1表示不能分片;第二位是MF(More Fragment)位,表示该报文是否为最后一片,0表示是,1表示否即还有后续报文;
     片偏移(Fragment Offset):12比特(bit),表示分片在原分组中的相对位置,以8个字节为偏移单位;
     生存时间(TTL,Time to Live):8比特(bit),报文发送设备赋值,报文没经过一台路设备,该设备会对TTL值减1,当TTL值为0时丢弃报文,用于防环;
     协议(Protocol):8比特(bit),上层所用的协议;
     头部校验(Header Checksum):16比特(bit),只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法;因为路由器需要改变包头里的TTL值,因此路由器需要为每个包重新计算头部校验值;
     源地址(Source Address):32比特(bit), 源IP地址;
     目的地址(Destination Address):32比特(bit), 目标IP地址;
     可选项(Options):可变长度;主要用于测试,具体见下方
     填充(Padding):填充字段,全0,因IP报文头长度单位为32bit(4Byte,),所以报文长度必须为32bit的整数倍

    扩展--服务类型(TOS,Type of Service):

    COS、TOS和DSCP:
    COS是二层报文优先级IEEE802.1p,TOS和DSCP是三层IP报文头的优先级
    COS是字VLAN帧里的802.1Q tag里的一个PRI字段(3bit),代表8个优先级0-7
    IPV4报文格式详解
    报文分为三种情况:带优先级和VLAN ID的标签报文,其优先级值是自身带的值;只带优先级的标签报文,此时VLAN ID为0,其优先级值是自身带的值;未带标签的报文,一般默认的优先级值为0,也可以进行更改指定新的优先级。
    TOS和DSCP是IP报文头的优先级,不同的RFC,具体参考QOS;
    扩展--可选项(Options):
     松散源路由(Loose source Routing):给出一连串路由器接口IP地址,IP包必须沿着这些IP传送,但允许相继的两个IP之间经过多跳;
    IPV4报文格式详解

      • Type: 类型。占1字节,此处设为131。
      • length: 占1字节,记录整个选项的长度。
      • pointer: 指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。
      • route data: 路由数据。
         严格源路由(Strict Source Routing):给出一连串路由器接口IP地址,IP包必须沿着这些IP传送,如果下一跳不在IP列表则表示发生错误;
        IPV4报文格式详解
      • Type=137(10001001):占1字节,code 的值此处设为137。
      • length:占1字节,记录整个选项的长度。
      • pointer:指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。
         路有记录(Record Route):当IP包离开每个路由器时,记录路由器的出接口IP地址;
        IPV4报文格式详解
      • Type: 指明IP选项的类型。此处值为7。
      • length: 选项的总字节长度。不包含填充的长度,IP填满时最大为39;。
      • pointer: 它是一个基于1的指针,指向存放下一个IP地址的位置。它的最小值为4,指向存放第一个IP地址的位置。随着每个IP地址存入清单,ptr的值分别为8,12,16,最大到36,当记录下9个IP地址后,ptr的值为40,表示清单已满。
      • route data: 路由数据。
         时间戳(Timestamps):当IP包离开每个路由器时纪录时间。
        IPV4报文格式详解
      • Type (01000100):时间戳选项,代码为68;
      • length:选项的总长度(一般为36或40);
      • ponter:指向下一个可用空间的指针(5,9,13等);
      • oflw:表示溢出字段;
      • flg:表示标志字段:
         0:只记录时间戳。
         1:每台路由器都记录它的IP地址和时间戳。在选项列表中只有存放4对地址和时间戳的空间。
         3:发送端对选项列表进行初始化,存放了4个IP地址和4个取值为0的时间戳值。只有当列表中的下一个IP地址与当前路由器地址相匹配时,才记录它的时间戳。
  • 相关阅读:
    php连接mysql数据库
    关于chrome控制台警告:Synchronous XMLHttpRequest on the main thread
    mac“打不开身份不明的开发者”
    微信小程序开发warning: Now you can provide attr "wx:key" for a "wx:for" to improve performance
    将任何GitHub内的代码转为外部CDN网址
    把自己的代码发布到npm(npm publish)
    wordpress写文章添加gif图片变成静态图片的解决办法
    canvas实现刮刮乐
    api文档管理系统合集
    niubi-job:一个分布式的任务调度框架设计原理以及实现
  • 原文地址:https://www.cnblogs.com/dream397/p/13745373.html
Copyright © 2011-2022 走看看