当前位置: 首页 > news >正文

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


诚恳欢迎大家提出意见

......(待续未完

http://www.xdnf.cn/news/2701.html

相关文章:

  • 4.15BUUCTF Ez_bypass,HardSQL,AreUSerialz,BabyUpload,CheckIn
  • 【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法
  • jQuery入门和选择器
  • JavaScript-立即执行函数(Immediately Invoked Function Expression,IIFE)
  • 【AI量化第24篇】KhQuant 策略框架深度解析:让策略开发回归本质——基于miniQMT的量化交易回测系统开发实记
  • dumpsys--音频服务状态信息
  • ASP.NET Core Web API 配置系统集成
  • 解决 VSCode 中 NVM 配置后无法识别 Node 和 NPM 的问题
  • 京东3D空间视频生成技术探索与应用
  • 游戏引擎学习第230天
  • [图论]Kruskal
  • Windows快速切换屏幕/桌面
  • 如何自学机器学习?零基础到实战的完整路径
  • 超详细VMware虚拟机扩容磁盘容量-无坑版
  • 探索关系型数据库 MySQL
  • 驱动-自旋锁
  • opencv函数展示2
  • 4.17学习总结
  • 智能云图库-12-DDD重构
  • 【从零实现高并发内存池】thread cache、central cache 和 page cache 回收策略详解
  • DSO:牛津大学推出的物理一致性3D模型优化框架
  • Java与MySQL数据库连接的JDBC驱动配置教程
  • Java基础知识面试题(已整理Java面试宝典pdf版)
  • Operator 开发入门系列(一):Hello World
  • 什么是分库分表?
  • Linux中NFS服务设置
  • 《MySQL:MySQL表结构的基本操作》
  • 【天梯赛练习】L2-035 完全二叉树的层序遍历
  • 阿里云服务器的docker环境安装nacos--实践
  • 开源一体化白板工具Drawnix本地部署打造毫秒级响应的远程协作空间