网络层-IP数据报格式
IP数据报格式
- 简述:一个IP数据报由首部和数据两部分组成
- 首部又分为两部分,前一部分是
固定长度
(20字节),是所有IP数据报必须具有的第二部分是一些可选字段
,其长度是可变的,但最长为40个字节。
因此IP数据报首部最长是60个字节
****
一、P数据报固定部分中的详细格式:
可变部分:- IP数据报的长度必须是4的整数倍个字节,因为IP数据包是一个32位对齐的格式。不够就无实际意义的数据来填充
固定部分:
字段: 单独拿出来具有独立意义的一部分字节 。
-
版本
: 占4位, 指IP协议的版本,目前的IP协议版本号为4(即IPV4)。如果是6,则说明版本号是IPV6。 -
首部长度:
占4位, 表示IP数据报首部可表示的最大数值,可以表示最大的数值是15个单位,因为一个单位是4字节。 因为首部可变部分长度是可以变化的,因此首部长度也会变化(可变部分填充部分不算进去) - 区分服务 : 服务类型,基本用不上
-
总长度
: 占16位 ,。它指的是IP数据报的长度,也就是首部+数据部分的长度。虽然最大可表示数据最大值为(2^16-1,也就是65535),但又于首部长度有最大限制,而数据部分又有最大传送单元(MTU)(1500字节)
的限制,所以IP数据报总长度也有限制 -
标识、标志、片偏移
:P数据报又叫分组,一个分组从很长的数据里面分组出来转发出去,之后需要进行组装,组装的过程就少不了这写记号信息。- 标识:不同几个分组的标识相同,则说明这些分组都是从同一个数据报文里面拆分得来得,也就是它们来自同一个地方。
-
标志: 占3位,目前只有前两位有意义
- 标志字段的
最低位
:是MF(More Fragment)
, MF=1表示后面还有“分片”,MF=0表示这就是最后一个分片啦 - 标志字段的
中间位
:是DF(Don‘t Fragment)
只有当DF=0时才允许分片,否则禁止分片
- 标志字段的
-
片偏移: 占13位, 较长的分组在分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位
- 如:某个分组片偏移是100,则它在原数据报中的位置是第800个字节。
-
生存时间:
表示数据报可以分组转发多少次(跳多少次),每跳一次生存时间减1。可以防止广播风暴(分组来回重复转发)。 -
协议
: IP数据报支持多种协议,因此IP数据报封装了多种协议PDU在IP数据报的数据部分
中 (如网络层:ICMP差错报告报文,IGMP组管理报文,还有OSPF报文等,前两个后面将重点讲到,还有IPV6协议(因为不是所有协议站都支持IPV6,但一定是支持IPV4的,所以需要封装一个IPV6协议。)), -
首部校验和
:占了16位, 只检验数据报的首部而不检验数据部分。这里采用的不是CRC校验码
。它采用的是一种相对简单的计算方法------16位二进制反码求和算法
-
原地址与目的地址
: 都占4个字节是因为它们存的都是IP地址(IP地址32位,MAC地址48位)。另外很重要的一点就是,IP数据报在随着路由器分组转发的过程中(也就是一跳)原地址与目的地址是不变的。中间转发的路由器都是根据同一个目的地址来查询路由表并决定转发给谁(中间每一跳的目的地址由路由表决定)。 另外在这里补充一下MAC地址的知识点,MAC帧在转发过程中并不是通过路由器的,而是通过网卡的硬件电路来操作(不需要经过cpu),所以MAC帧在转发过程中每一次的转发都会该表MAC地址的源地址和目的地址(6个字节,48位)。
可变部分:
- 用来支持排错、测量以及安全等措施,内容很丰富,但基本不用。
- 选项字段长度可变,从1个字节到40个字节不等,取决于所选择的项目。
- 要保证IP首部(固定+可变部分)是4字节对齐的。
- 每增加一个功能其实也增加了路由器的开销。