-
协议栈的每一层要实现的
功能
可由该层的协议数据单元
来体现
协议栈每一层要实现的功能
一般都放在该层协议数据单元的首部
里面
因此,ip数据报的格式能体现ip的功能 -
ip数据报的格式
(其实就是分析首部的格式和其中各字段的意义)
一个ip数据报由首部
和数据
两部分组成 -
首部
前一部分是固定长度,固定有20个字节,所有ip数据报必须有的
固定部分的后面是一些可选字段,长度可变,可有可无,很少用到 -
首部固定部分各字段的意义
1、版本:4bit,4 表示 ipv4,6 表示 ipv6
2、首部长度:4bit,最大值为15,注意这里使用的单位是32bit,就是说最大可以表示60 Byte
由于首部前一固定长度部分为20 Byte,因此该字段最小值为 5
当 ip分组 的首部长度不是 4 Byte的整数倍时,需要在最后进行填充(填充字段后面就是数据部分)
3、区分服务,8bit,只有在使用区分服务时,该字段才起作用(后续章节介绍)
4、总长度:16bit,首部
和数据长度
之和,单位是字节
数据链路层规定了MTU,ip数据报的长度不能超过这个值,否则需要对过长的数据报进行分片处理
分片后的各数据报中的总长度字段
就是每个分片的各自的长度
5、标识:16bit,ip软件在存储器中维持一个计数器
,每产生一个数据报,计数器就加1,赋值给标识字段
标识不是序号,ip是无连接服务,不要求数据报按序送达
标识用于:当数据报的长度超过2层的MTU而必须分片时,这个标识字段的值
被赋值到被分开的片中,用于组装回原来的数据报
6、标志:3bit,前两位有意义
第1位MF,为1表示后面还有分片,为0表示此为若干数据包分片的最后一个
第2位BF,为1表示不能分片,为0表示可以分片
7、片偏移:13bit,较长的分组在分片后,某片在原分组中的相对位置,即相对于用户数据字段的起点,该片从何处开始,单位是8 byte,每个分片的长度一定是 8 byte 的整数倍
8、生存时间:8bit,TTL,由发出数据报的源点
设置
路由器每次转发数据报之前就把TTL值减1
TTL的意义是指明数据报在互联网中最多可经过几个路由器,目的是防止无法交付的数据报无限制地在互联网中兜圈子
起初TTL采用秒
作为单位,但是这么做很不方便:互联网中没有时钟同步关系的路由器
都要计算通过它的数据报在网络中的逗留时间
9、协议:8bit,协议字段指出此数据报携带的数据使用何种协议,以便目的主机的ip层知道应将数据部分上交给哪个协议处理
10、首部检验和,16bit,此字段只检验数据报的首部(不包括数据部分),使用反码求和法
不检验数据部分可以加快检验的过程,使转发更快;但是数据部分出现差错时不能及早发现,只能等到运输层时才能检查数据部分是否有差错。
11、源地址:32bit
12、目的地址:32bit -
ip数据报首部的可变部分(很少用)
其实就是一个选项字段,有各种附加功能
:如排错、测量等等
长度可变,最大40 Byte(最大60 - 固定20):首部长度字段 4bit,单位为 4Byte