IPv4网络数据报格式
- 版本号(4bit):规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。
- 首部长度(4bit): 因为一个IPv4数据报可包含一些可变数量的选项(这写选项包括在IPV4数据报首部中),故需要用这4bit来确定IP数据报中载荷(例如在这个数据报中被封装的运输层文段)实际开始的地方。
- 服务类型TQS(区分服务)8bit:使不同类型的IP数据包能相互区别开来
- 总长度(16bit):IP数据报的总长度(首部+数据载荷),最大长度为65535字节。
- 标识、标志、片位移:与IP分片有关。IPV6不允许分片
- 标识:16bit,属于同一个数据报的各个分片数据报应该具有相同的标识,IP软件维持一个计数器,每产生一个数据报,计时器值加1,并将此值赋给标识字段。
- 标志字段:3bit
- DF位:1表示不允许分片,0表示允许分片
- MF位:1表示后面还有分片,0表示是最后一个分片,后面没有分片
- 保留位:必须设置为0
- 片偏移:13bit,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少单位(8个字节为单位)
- 生存时间(TTL):用来确保数据报不会永远在网络中循环。每当一台路由器处理数据报时,该字段的值减一。如果TTL变为了0,则该数据报必须丢弃。
- 协议:用于指示IP数据报的数据部分应交给哪个特定的运输层协议。该字段通常仅当一个IP数据报到达其最终目的地时才会有用--例如:值为6表明数据部分交给TCP,数值为17表明交给UDP
- 首部校验和:用于帮助路由器检测收到的IP数据报中的比特错误。
- 源IP和目的IP:用来表示起始和目的地
- 可选字段(1-40个byte):允许IP首部被扩展,很少被使用
- 填充字段:确保IP数据报的长度为4的整数倍。
IPv4数据报分片
因为并不是所有的链路层协议都能承载相同长度的网络层分组。有的协议可以承载大数据报,而有的协议只能承载小分组(MTU,最大传送单元)。
方法:可以将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送这些帧,这些较小的数据报都称为片。
当一台目的主机从相同源收到一系列数据报时,它需要确定这些数据报中的某些片是否是一些原来较大的数据报的片。如果某些数据报是这些片的话,则它必须进一步确定何时收到了最后一片,并且如何将这些接收到的片以形成初始的数据报。
方法:当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标签号。发送主机通常会将它发送的每个数据报的标识号+1。当某路由器需要对一个数据报分片时,形成的每个片具有初始数据报的源地址、目的地址和标识号。为了让目的主机绝对地相信它已收到了初始数据报的最后一片,最后一片的标志比特被设为0。另外,为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组成片,使用偏移字段指定该片应放在初始IP数据报的哪个位置)
|