网络协议

详解网络分层和网络协议工作原理
帅旋
关注
充电
IT宅站长,技术博主,架构师,全网id:arthinking。

UDP协议

发布于 2020-07-26 | 更新于 2024-05-16

1、UDP数据报格式

UDP基本没干啥事,继承了IP包的特性:数据可能丢失,顺序传输无法保证。UDP与后边介绍的TCP不一样,是无状态的。我们来看看UDP数据报的格式:

image-20211023122704735

  • 源端口号:发送数据报方使用的端口号,用于标识发送进程;
  • 目的端口号:接收数据包方使用的端口号,用于标识接收进程;
  • UDP长度:UDP头部和UDP负载数据的字节长度;
  • UDP校验和:UDP校验和覆盖UDP头部和UDP数据和一个伪头部(区别:IP头部校验和只覆盖IP头部),伪头部衍生子IPv4头部字段的12个字节,或者衍生子IPv6头部字段的一个40字节的伪头部;
  • 负载数据:具体的UDP数据。

可以发现,UDP与下层不同,是需要端口号的。

为什么UDP需要端口号,TCP和UDP端口号可以相同吗?

类似ICMP协议回显请求的标识符,UDP的端口用于区分是哪个进程的数据包,如果没有端口号,那么就不知道应该把数据包最终交给哪个进程来处理了。

TCP端口号由TCP来查看,UDP端口号由UDP来查看,TCP端口号和UDP端口号是相互独立的,所以是可以相同的。每个请求都有源IP、目标IP、源端口号、目标端口、协议五个元素来标识的,每个协议的端口池是完全独立的。

为什么UDP的端口号最多是65535个?

在UDP/TCP协议中源端口和目的端口都只有16位,也就是说端口的取值范围为0~65535。

2、UDP特点

UDP在IP层之上,没有做其他的封装,主要表现如下特点:

  • 数据可能丢失,顺序传输无法保证;
  • 无状态,不需要像TCP那样要建立连接;
  • 没有拥塞控制,来一个包就发一个。

3、UDP使用场景

基于UDP的特点,UDP主要用于以下场景:

  • 需要资源少,在网络情况比较好的内网,或者对对包不敏感的场合。如DHCP和TFTP就是基于UDP的;
  • 广播场景,不需要一对一建立连接,如DHCP;
  • 需要时延低,允许丢包,不关注网络拥塞的场景,如视频直播这种流媒体,实时游戏,通信,物联网等领域。

References

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/network/transport-layer/udp.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。

请帅旋喝一杯咖啡

咖啡=电量,给帅旋充杯咖啡,他会满电写代码!

IT宅

关注公众号及时获取网站内容更新。