35为什么 UDP 头部有「包长度」字段,而 TCP 头部则没有「包长度」字段呢?
其中IP总长度和IP首部长度,在IP首部格式是已知的。TCP首部长度,则是在TCP首部格式已知的,所以就可以求得TCP数据的长度。大家这时就奇怪了问:“UDP也是基于IP层的呀,那UDP的数据长度也可以通过这个公式计算呀?为何还要有「包长度」呢?”这么一问,确实感觉UDP「包长度」是冗余的。因为为了网络设备硬件设计和处理方便,首部长度需要是4字节的整数倍。如果去掉UDP「包长度」字段,那UDP首部长度就不是4字节的整数倍了,所以是为了补全UDP首部长度是4字节的整数倍,才补充了「包长度」字段。
来自:网络-TCP/IP模型-UDP相关