计算机网络 - UDP协议

通过一些问题来讨论 UDP 协议

  • 什么是 UDP?举几个应用了 UDP 协议的例子
  • UDP 与 TCP 有啥区别?(PS:介绍三四个就可以了,不用说太多)
  • 具体 UDP 是不可靠的,那你觉得如何实现一个可靠的 UDP ?

1. 什么是 UDP?举几个应用了 UDP 协议的例子

UDP是用户数据报协议,它是一种无连接的传输层协议,它没有可靠性保证,但是正因为 UDP 协议的控制字段较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的服务

比如视频会议、直播等,少量视频帧丢失不会明显影响体验,但延迟太高会卡顿

还有 DNS ,TCP 三次握手太耗时,而 UDP 一次往返即可完成

我们平时玩的射击类/MOBA 游戏也是使用的UDP,因为玩家位置和动作需实时同步,偶尔丢包可通过其他功能补偿

2. UDP 与 TCP 有啥区别?

UDP无连接,直接发送数据;TCP通信需要三次握手建立连接

同时 TCP 只支持一对一,两个端点的服务;而 UDP 同时支持 一对一,一对多和多对多的服务

UDP发送报文不太可靠,不保证送达和顺序;TCP发送报文比较可靠,有丢包重传等机制

因为 UDP 无须建立连接等额外控制开销,所以使用速度较快;而 TCP 速度就较慢,因为存在确认机制和流量控制等

UDP保留原始数据包边界,发多少,收多少;TCP是基于字节流服务的,不保留原始数据边界

TCP 像寄挂号信(必须签收,丢件会补发)

UDP 像发传单(只管发,不管对方是否收到)

3. 具体 UDP 是不可靠的,那你觉得如何实现一个可靠的 UDP ?

嗯,可以参考 TCP 的可靠性是如何保证的

TCP 的可靠性由多方面保证,比如序列号解决乱序问题,ACK 确保接收方成功接收,超时重传解决丢包问题,流量控制防止发送方压垮接收方,拥塞控制避免网络堵塞

所以,依照 TCP 的可靠性保证,使用 UDP 的时候,可以为每个数据包附加序号,接收方返回 ACK,发送后启动计时器,利用滑动窗口机制控制发送速率,同时动态调整发送速率

按照这样的设计思路,就能实现一个较为可靠的 UDP。不过是在应用层上额外设计的,UDP 本身并没有改变。比喻下,原生 UDP 就像一个没有 GPS 和 保险的货车,只管发车,不保证货物到达;在这个货车(UDP)的基础上,自己装上 GPS(序号 + ACK)和备用车俩(重传),由货主(应用层)管理物流可靠性

实际应用中,Google 的 QUIC 协议正是基于这一思路:在 UDP 上实现 TCP 的可靠性机制,同时优化了握手延迟。HTTP3 采用 QUIC 后,显著提升了网络不太好环境下的性能


诚恳欢迎大家提出意见

......(待续未完

相关推荐
北极光SD-WAN组网27 分钟前
从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
网络·5g·制造
阿昭L37 分钟前
HTTP原理
网络·网络协议·http
大前端helloworld1 小时前
从初中级如何迈入中高级-其实技术只是“入门卷”
前端·面试
hazy1k1 小时前
STM32H750 RTC介绍及应用
网络·stm32·实时音视频
没书读了2 小时前
考研复习-计算机网络-第三章-数据链路层
网络·计算机网络·考研
zhao3266857512 小时前
2025年代理IP三强横评:LoongProxy、神龙海外动态IP代理、全民HTTP怎么选?看完这篇不踩坑
网络协议·tcp/ip·http
on the way 1232 小时前
多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
网络·网络协议·http
WhoisXMLAPI2 小时前
WhoisXML API再次荣登2025年美国Inc. 5000快速成长企业榜单
网络·安全
点云SLAM3 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理