UDP协议是否需要考虑半包粘包问题?

有人说:UDP协议只会全部接受或者全部丢失。
但是我在看UDP的时候发现它使用了16bit表示数据包的总长度,如果数据包的总长度大于了这个16bit所能表示的长度,那么这时候它又会如何发送那?

阅读 4.9k
1 个回答

UDP是传输层协议,在UDP更下层的数据链路层有一个概念叫做MTU,也就是一个数据包的最大长度,通常为1500,这个值是由以太网的物理特性决定的。一个数据包的长度如果超过了MTU,那么它要么被分片传输,要么被丢弃。因此当数据包到达传输层时,剥离掉数据链路层头部和网络层头部后,它的长度必定小于1500,是一定能用16bit表示的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进