• IP报文格式及各字段意义


    IP数据包由报头和数据两部分组成。报头的前一部分是固定长度,共20字节。在报头的固定部分的后面是可选部分——IP选项和填充域。
    首部各字段的含义如下
    1、版本
         占4位,指IP协议的版本。
    2、报头长度
         占4位,该字段的单位是32位字(1个32位字长是4字节),因此当IP报头长度为1111时,报头长度就达到最大值60字节。当IP分组的首部长度不是4字节的整数倍是,就需要对填充域加以填充。最常用的报头长度为20位(报头长度值为0101),这时不使用任何选项。
    3、区分服务(服务类型)
         占8位,在一般情况下都不使用这个字段。
    4、总长度
         指报头和数据之和的长度,单位是字节。总长度字段为16位,故IP数据报的最大长度为65535。
         每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU。当IP数据报封装成链路层的帧时,此数据报的总长度不能超过对应MTU的值。若数据报长度超过对于MTU的值,就将数据报进行分片处理,此时数据报首部中的“总长度“字段是指分片后的每一个分片的报头长度和数据长度之和。
    5、标识
         占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并赋给标识字段。当数据报进行分片处理后,每个分片的标识值都与原数据报的标识值相同,则在接收端具有相同标识值的分片就能最终正确的重装成为原来的数据报。
    6、标志
         占3位,但目前只有两位有意义。
    •      最低位记为MF。MF=1即表示后面”还有分片“的数据包。MF=0表示这已是若干数据包片中的最后一个。
    •      中间位记为DF,意思是”不能分片“。只有当DF=0时才允许分片。
    7、片偏移
         占13位。表示每个数据报的分片在原数据报中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍。
    8、生存时间
         占8位。表示数据报在网络中的寿命。最初以秒为TTL值为单位,现在以跳数为单位,则目前的最大数据为255.
    9、协议
         占8位,指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给那个处理过程。
         TCP对应协议字段值6;UDP对应协议字段值17
    10、首部校验和
         占16位,该字段只校验数据报的报头,但不包括数据部分。
    11、源地址
         占32位
    12、目的地址
         占32位
     
    转自:http://blog.csdn.net/xieyutian1990/article/details/24179181
  • 相关阅读:
    你对线程优先级的理解是什么?
    Java 中 notify 和 notifyAll 有什么区别?
    线程之间是如何通信的?
    多线程同步有哪几种方法?
    CyclicBarrier 和 CountDownLatch 的区别 ?
    int 和 Integer 有什么区别?
    Thread 类中的 yield 方法有什么作用?
    用最有效率的方法计算 2 乘以 8?
    volatile 关键字的作用 ?
    数组有没有 length()方法?String 有没有 length()方法?
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/7187857.html
Copyright © 2020-2023  润新知