一、IP 数据报的格式
• 一个 IP 数据报由首部和数据两部分组成。
• 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
• 在首部的固定部分的后面是一些可选字段,其长度是可变的。
IP 数据报首部的固定部分中的各字段
版本——占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。
区分服务——占 8 位,用来获得更好的服务在旧标准中叫做服务类型,但实际上一直未被使用过。
1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
标识(identification) 占 16 位,它是一个计数器,用来产生数据报的标识。
标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF =0 时才允许分片。
片偏移(13 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
二、IP 数据报分片
IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,即最大
传送单元MTU,如以太网的MTU是1500B,许多广城网的MTU不超过576B。MTU限制了IP数据报
的长度。当一 个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不
能超过下面的数据链路层所规定的MTU值。若传送的数据报长度超过数据链路层的MTU值,就
必须把过长的数据报进行分片处理。数据报片在目的地的网络层被重新组装。目的主机根据首部
中的标识、标志片偏移字段来完成对数据报片的合并重组。注意,IP数据报可以在主机和路由器
进行分片,但重组只能在目的主机上完成。
IP 数据报首部的固定部分中的各字段
协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程 。
首部检验和(16 位)字段只检验数据报的首部不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
源地址和目的地址都各占 4 字节。