计算机网络-UDP协议

UDP协议特点

  • 无连接
  • 不可靠
  • 面向数据报


协议格式

计算机网络-UDP协议_第1张图片

源端口与目的端口:可与TCP端口重复。
UDP长度:包括首部长度和数据长度,单位为字节,注意数据长度可以为0。
UDP检验和:校验的是UDP首部部分和数据部分,该校验和是可选的,如果全部填0则表示发送端没有计算校验和。UDP数据报有12个字节的伪首部(源IP,目的IP,8bit 0,8位协议,UDP长度),目的是为了计算校验和。


UDP数据包最大长度

UDP首部有两个字节用于表示UDP首部长度和数据长度总和,据此可以推断UDP数据包的最大长度为65535字节,当然这并不是最终答案,因为还有其它限制。
我们知道以太网帧的长度限制为64~1518字节,而UDP数据包最后是封装成以太网帧的,所以UDP数据包的最大长度(注意包含头部长度)为1518-18-20=1480字节。对于其中的数字:
1518:以太网帧最大长度
18:以太网帧头部长度
20: IP头部长度
在Windows下可以使用命令:ping -f -l 1448 IP地址 检测出自己系统支持的UDP数据包最大长度,其中的1448为我们猜测的可能最大大小,如果大于实际值会打印:需要拆分数据包但是设置DF,这时我们不断尝试减低最大长度值即可。
注意: UDP协议的一个特点就是不可靠,如果要发送的数据被分片了而其中某些片丢失了,那么整份数据又得全部重新传输,因此我们应该尽量避免UDP分片,根据实际情况综合考虑,UDP数据包大小的经验值为500。由此我们也可以推断UDP的适合使用一些场景:传输的数据少,丢包少的网络环境(比如局域网)。


UDP主要使用场景

  • DNS
  • TFTP
  • QQ收发聊天信息
  • 视频通话
  • 其它

你可能感兴趣的:(网络,计算机,UDP)