ip数据报格式详解
TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。
ip数据报格式
如上图所示,ip数据报格式分为首部和数据部分。并且最高位在左边,为0位,最低位在右边,为31位。在传输的时候按照从高到低的顺序进行传输。
ip数据报的各个字段的功能如下:
- 版本号:表示该ip数据报使用的ip协议版本,占用四位二进制数。
- 首部长度:指出整个报头的长度(包括可选字段),该长度以32位进制数为计数单位,接收端通过首部长度可以计算出报头在何处开始读取数据和何处结束读取数据。
- 服务类型:占用8个二进制位,用于规定本数据包的处理方式。
- 总长度:占用16个二进制位,总长度指的是整个pi数据包的长度
- 标识:IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个“识”并不是序号,因为 IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
- 标志:占3位占3 位,但目前只有2位有意义。 标志字段中的最低位记为 MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为 DF(Don’t Fragment),意思是“不能分片”。只有当 DF=0时才允许分片。(指示原数据报能不能分片)
- 片偏移:占13位。较长的分组和分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。
- 生存时间:数据报每经过一个路由器,就把生存时间减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把生存时间值减一。当生存时间为0时候,就丢弃这个数据报。
- 协议:占8位,用于指出此数据报携带的数据是使用何种协议,以便使目的主机的ip层知道应该将数据部分上交给哪个处理过程
- 首部校验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每次经过一个路由器都要重新计算一下首部检验和。
- 源地址:占32位
- 目的地址:占32位