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


诚恳欢迎大家提出意见

......(待续未完

相关推荐
zr5268554471 小时前
PCIe-PN卡(三格电子)
网络
无名的小三轮1 小时前
防火墙基础实验:智能选路下的透明DNS选路配置
网络
一轮弯弯的明月1 小时前
TCP传输大致过程、流量控制与拥塞控制
网络·tcp/ip·计算机网络·学习心得
犀思云2 小时前
如何通过网络即服务平台实现企业数字化转型?
运维·网络·人工智能·系统架构·机器人
皇帝要考研2 小时前
【ISO 13400-2:2019】核心配置项
网络·网络协议
犀思云3 小时前
企业端到端NaaS连接的优势与应用
网络·人工智能·机器人·智能仓储·专线
Godspeed Zhao3 小时前
现代智能汽车系统——总线技术1
网络·汽车·php
JoySSLLian3 小时前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl
xiaoxue..3 小时前
React 手写实现的 KeepAlive 组件
前端·javascript·react.js·面试
汽车仪器仪表相关领域4 小时前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试