【好书精读】网络是怎样连接的 —— UDP 协议的收发操作

news/2024/5/18 12:59:43 标签: 网络, udp, tcp/ip

 ( 该图由我使用 AI 绘制 )

目录

不需要重发的数据用 UDP 发送更高效

控制用的短数据

 音频和视频数据


不需要重发的数据用 UDP 发送更高效

DNS 服务器查询 IP 地址的时候我们用的是 UDP 协议

简单的说就是,TCP之所以复杂,是因为他要确认的东西很多,比如发了10个包,7号包失败了,TCP可以知道哪个包失败,重发的时候只需要发这一个就好了

而UDP不知道,但是他也有他的好处,那就是,只发一个包的时候

控制用的短数据

DNS 查询等交换控制信息的操作基本上都可以在一个包的大小范围内解决 这种场景中就可以用 UDP 来代替 TCP
UDP 没有 TCP 的接收确认 窗口等机制 因此在收发数据之前也不需要交换控制信息 也就是说不需要建立和断开连接的步骤 只要在从应 用程序获取的数据前面加上 UDP 头部 然后交给 IP 进行发送就可以了 )。 接收也很简单 只要根据 IP 头部中的接收方和发送方 IP 地址 以及 UDP 头部中的接收方和发送方端口号 找到相应的套接字并将数据交 给相应的应用程序就可以了 除此之外 UDP 协议没有其他功能了 遇到 错误或者丢包也一概不管 因为 UDP 只负责单纯地发送包而已 并不像 TCP 一样会对包的送达状态进行监控 所以协议栈也不知道有没有发生错 但这样并不会引发什么问题 因此出错时就收不到来自对方的回复 应用程序会注意到这个问题 并重新发送一遍数据

 音频和视频数据

还有另一个场景会使用 UDP 就是发送音频和视频数据的时候 音频和视频数据必须在规定的时间内送达 一旦送达晚了 就会错过播放时机 导致声音和图像卡顿 如果像 TCP 一样通过接收确认响应来检查错误并重 重发的过程需要消耗一定的时间 因此重发的数据很可能已经错过了 播放的时机 一旦错过播放时机 重发数据也是没有用的 因为声音和图 像已经卡顿了 这是无法挽回的 当然 我们可以用高速线路让重发的数 据能够在规定的时间内送达 但这样一来可能要增加几倍的带宽才行 此外 音频和视频数据中缺少了某些包并不会产生严重的问题 只是 会产生一些失真或者卡顿而已 一般都是可以接受的 在这些无需重发数据 或者是重发了也没什么意义的情况下 使用 UDP 发送数据的效率会更高

http://www.niftyadmin.cn/n/465414.html

相关文章

【金融量化】如何筛选基金?

基金的评价与筛选 1 筛选步骤 1.1 股票型基金 (1)构建备选池 优先考虑股票配置较为稳定的基金,这样才能预估基金未来一段时间的表现,及其对基准股票指数的跟踪情况。因此,首先应该剔除那些仓位变化较大、本身在进行…

用于配电室的内部环境监控系统设计与产品选型

摘要:配电室是配电系统的重要组成部分,影响着电力用户的用电需求,需要保障其安全、可靠运行。针对配电室内部环境进行了深入分析,设计了一种内部环境监控系统。通过该系统可以采集配电室内部的温度、湿度、液位、SF6气体和烟雾&am…

什么是GPT?一文给出答案

什么是GPT? 生成式预训练Transformer模型,通常称为GPT,是一系列使用Transformer架构的神经网络模型,是为ChatGPT等生成式人工智能应用程序提供支持的人工智能(AI)的一项关键进展。GPT模型使应用程序能够创…

较旧系统的轻量级的LINUX发行版—FATDOG64

导读我们回顾FatDog64 Linux,这个轻量级的Linux发行版可能不是现代的,但它非常适合于老化的计算机,fatdog64 Linux是一个小而灵活的64位多用户Linux发行版。 有一个Linux发行版几乎每一个都需要,有Linux分布的黑客,天…

【C】C语言实现三子棋小游戏

这里写目录标题 游戏的整体框架游戏函数的具体实现(这里的函数声明都放到game.h中,函数的实现在game.c中)初始化棋盘函数玩家下棋电脑下棋判断输赢判断棋盘是否满了 游戏的逻辑及game()的实现game.hgame.ctest.c 今天带大家用C语言来实现我们…

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试 RESTful API 集成测试是测试应用程序与其外部依赖项之间的集成。SpringBoot提供了TestRestTemplate来测试RESTful API,本文将介绍如何使用TestRestTemplate进行RESTful API集成测试。 1. 什么是 TestR…

摆脱传统模式,快速构建系统只需要7步~

摆脱传统模式,快速构建系统只需要7步~ 首先我们来说说用“低代码开发平台”来进行开发是一种怎样的感受?它可以帮助您更快、更可靠地提供价值。通过在可视化设计器中,以拖拽的方式快速构建应用程序,您可以跳过基础架构以及可能会让…

【蓝桥杯算法题】计算制作 50 个月饼需要的面粉和糖的重量

【蓝桥杯算法题】计算制作 50 个月饼需要的面粉和糖的重量 题目实现解释 题目 每年的中秋,我家都要自己做月饼。假设每个月饼需要面粉2两,需要糖0.5两。现要做50个月饼,问需要面粉和糖各多少两。请编程计算。 实现 以下是用 C 实现制作 50…