IPv4分组的格式

IP数据报的格式_jpg.jpg

  • 总长度。占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为216- 1 = 65535B。以太网帧的最大传送单元(MTU)为1500B。
  • 标识。占16位。它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。当一个数据报的长度超过网络的 MTU 时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。
  • 标志。占3位。标志字段的最低位为 MF,MF = 1 表示后面还有分片,MF = 0 表示最后一个分片。标志字段中间一位是 DF,只有当 DF = 0 时才允许分片。
  • 片偏移。占13位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B(64位)的整数倍。

IP数据报分片

一个链路层数据报能承载的最大数据量称为最大传送单元(MTU)。
当 IP 数据报的总长度大于链路 MTU 时,就需要将 IP 数据报中的数据分装在两个或多个较小的 IP 数据报中,这些较小的数据报称为片。
目的主机使用 IP 首部中的标识、标志和片偏移字段来完成对片的重组。

网络层转发分组的流程

网络层的路由器执行的分组转发算法如下:

  1. 从数据报的首部提取目的主机的 IP 地址D, 得到目的网络地址 N。
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付给目的主机 D(直接交付,否则是间接交付,执行步骤3)。
  3. 若路由表中有主机 D 的特定主机路由,则传送给路由表指明的下一跳路由器;否则,执行步骤4。
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5.
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6。
  6. 报告转发分组出错。