UDP数据报被封装成一份IP数据报的格式:
    image.png

    UDP首部:
    image.png

    • UDP长度:指的是UDP首部和UDP数据的字节长度。
    • UDP检验和:
      • 作用:为了检测UDP首部和数据在发送端到接收端之间发生的任何改动
      • UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。
      • UDP的 “检验和” 是可选的,而TCP的检验和是必需的。
      • 如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃。不产生任何差错报文。

    IP分片

    1. 为什么要分片?

    物理网络层一般要限制每次发送数据帧的最大长度(MTU)

    1. IP层接收到一份要发送的IP数据报时,怎么处理?

      1. 判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU
      2. IP把MTU与数据报长度进行比较,如果需要则进行分片( 分片可以发生在原始发送端主机上,也可以发生在中间路由器上 )
    2. 分片后如何组装?

    把一份IP数据报分片以后,只有到达目的地才进行重新组装。重新组装由目的端的IP层来完成。
    分片和重新组装过程对运输层(TCP和UDP)是透明的。

    1. IP首部中这些字段用于分片过程:
    • IP数据报格式及首部中的各字段

    image.png

    • 16位标识

    对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。

    • 3位标志

    标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。

    • 13位片偏移

    片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。

    • IP分片的特性:
      • 标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。
      • 当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。
      • IP分片过程中,即使只丢失一片数据也要重传整个数据报。

    UDP数据包分片举例:
    发送的第3份数据报(用户数据为1473字节)分片情况:
    image.png
    IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。
    一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。
    任何运输层首部只出现在第1片数据中。

    最大UDP数据报长度
    理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特(216)总长度字段所限制的。
    去除20字节的IP首部和8个字节的UDP首部,
    UDP数据报中用户数据的最长长度为65507字节**。
    但是,大多数实现所提供的长度比这个最大值小。