摘要:记述了对UDP报文进行手动分片的步骤及注意事项。

UDP报文是被包裹在IP报文内的,如果想要手动进行UDP报文分片,则需对UDP报头和IP报头的如下位置分别进行设置。

IP报头

  1. id位:IP报头中的id用以标识分片,相同的id表明这些分片原先属于同一个报文。
  2. flags位:flags位有3bit,第一位为保留位,第二位代表DF(不分片),第三位代表MF(后续还有分片),因此最后一个分片的flags位为2(0b010),其他分片的flags位为1(0b001)。
  3. frag位:frag位代表偏移,单位是8bytes,也就是说,如果第一个分片的数据有16bytes,则第二个分片的frag位为2。值得注意的是,这里的“数据”指的是IP报文的数据部分,也就是说,UDP报头也属于这里的“数据”部分。
  4. protocol位:需要设置为17(代表UDP)。

UDP报头

  1. length位:这里需要设置为UDP报文中数据部分的总长度
  2. chksum位:可以设置为0,因为UDP的校验位是可选的。