计算机网络 - 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 后,显著提升了网络不太好环境下的性能


诚恳欢迎大家提出意见

......(待续未完

相关推荐
yanlele3 小时前
我用爬虫抓取了 25 年 5 月掘金热门面试文章
前端·javascript·面试
小兵张健4 小时前
武汉拿下 23k offer 经历
java·面试·ai编程
kfepiza4 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
无妄-20244 小时前
软件架构升级中的“隐形地雷”:版本选型与依赖链风险
java·服务器·网络·经验分享
爱莉希雅&&&5 小时前
技术面试题,HR面试题
开发语言·学习·面试
天天扭码5 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html
群联云防护小杜6 小时前
构建分布式高防架构实现业务零中断
前端·网络·分布式·tcp/ip·安全·游戏·架构
zhuiQiuMX7 小时前
脉脉maimai面试死亡日记
数据仓库·sql·面试
独行soc7 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
库森学长7 小时前
面试官:发生OOM后,JVM还能运行吗?
jvm·后端·面试