10.2 UDP 头部
在UDP 中,源端口号是可选的,如果数据报的发送者不要求对方回复的话,它可以被置为 0。
TCP 的端口号只能被 TCP 使用,UDP 端口号只能被 UDP 使用,以此类推。这样导致的一个结果就是:2个完全不同的服务器可以使用相同的端口号和 IP 地址,只要它们属于不同的传输协议。
UDP 头部中的 Length 字段表示的是长度,这个长度包括 UDP 头部 和 UDP 数据 的总长度;需要注意的是,发送一个带 0 字节数据的 UDP 数据报是允许的,尽管很少见。
10.3 UDP 校验和
UDP 在 IPv4 头部中的校验和只覆盖整个头部(并不覆盖IP分组中的任何数据),头部中的校验和是可选的。不过,在 IPv6 中,UDP 的校验和的计算与使用时强制的,因为在 IP 层没有头部校验和。
10.7 IP 分片
链路层通常对可传输的每个帧的最大长度有一个上限, IP 比较外出接口的 MTU 和数据大小,如果数据报太大则进行分片。当一个 IP 数据报被分片了,直到它到大最终目的地才会被重组,这是为什么呢?为什么不在中途重组呢?有 2 个原因,第 2 个原因比第 1 个原因更重要:
在网络中不进行重组要比重组更能减轻路由转发软件(或硬件)的负担
同一数据报的不同分片可能经由不同的路径到达相同的目的地。也就是说路径上的路由通常没有能力来重组原始数据报(因为手头只有所有分片的一个子集)
总结
UDP 不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制,它提供了差错检测,包含校验和。当要避免连接的开销、使用多端点(组播/广播)传送时,或者不需要 TCP 相对“笨重”的可靠语义时,最常用的就是 UDP,主要用途就是支持 DNS ,多媒体上也得到广泛使用。