11 UDP的可靠传输协议QUIC
1.如何做到可靠性传输
2.UDP与TCP,我们如何选择
3.UDP如何可靠,KCP协议在哪些方面有优势
4.KCP协议精讲(重点讲解
5.OUIC时代是否已经到来
UDP如何做到可靠传输
- ACK机制
- 重传机制 重传策略
- 序号机制(后发的包可能先到) 3 2 1-> 2 3 1
- 重排机制 2 3 1-> 3 2 1
- 窗口机制 流量控制 带宽有限
如何选择TCP和UDP

TCP和UDP格式对比

ARQ协议(Automatic Repeat-reQuest)
ARQ协议(Automatic Repeat-reQuest),即自动重传请求,是传输层的错误纠正协议之一,它通过使用确认和超时两个机制,在不可靠的网络上实现可靠的信息传输。
ARQ协议主要有3种模式:
- 即停等式(stop-and-wait)ARQ
- 回退n帧(go-back-n)ARQ,
- 选择性重传(selective repeat)ARQ
ARQ协议-停等式(stop-and-wait)
停等协议的工作原理如下:
1、发送方对接收方发送数据包,然后等待接收方回复ACK并且开始计时。
2、在等待过程中,发送方停止发送新的数据包。
3、当数据包没有成功被接收方接收,接收方不会发送ACK.这样发送方在等待一
定时间后,重新发送数据包。
4、反复以上步骤直到收到从接收方发送的ACK.

缺点:较长的等待时间导致低的数据传输速度
ARQ协议-回退n帧(go-back-n)ARQ 1
为了克服停等协议长时间等待ACK的缺陷,连续ARQ协议会连续发送一组数据包,然后再等待这些数据包的ACK。
什么是滑动窗口:发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接收方确定,目的在于控制发送速度,以免接收方的缓存不够大,而导致溢出,同时控制流量也可以避免网络拥塞。协议中规定,对于窗口内未经确认的分组需要重传.
回退N步(Go-Back-N,GBN):回退N步协议允许发送方在等待超时的间歇,可以继续发送分组。所有发送的分组,都带有序号。在GBN协议中,发送方需响应以下三种事件:
1、上层的调用。上层调用相应send()时,发送方首先要检查发送窗口是否已满。
2、接收ACK。在该协议中,对序号为n的分组的确认采取累积确认的方式,表明接收方已正确接收到序号n以前(包括n)的所有分组。
3、超时。若出现超时,发送方将重传所有已发出但还未被确认的分组
ARQ协议-回退n帧(go-back-n)ARQ 2
对于接收方来说,若一个序号为n的分组被正确接收,并且按序,则接收方会为该分组返回一个ACK给发送方,并将该分组中的数据交付给上层。在其他情况下,接收方都会丢弃分组。若分组n已接收并交付,那么所有序号比n小的分组也已完成了交付。因此GBN采用累积确认是一个很自然的选择。发送方在发完一个窗口里的所有分组后,会检查最大的有效确认,然后从最大有效确认的后一个分组开始重传。

如上图所示,序号为2的分组丢失,因此分组2及之后的分组都将被重传。总结:GBN采用的技术包括序号、累积确认、检验和以及计时/重传
ARQ协议-选择重传(Selective-repeat) 1
虽然GBN改善了停等协议中时间等待较长的缺陷,但它依旧存在着性能问题。特别是当窗口长度很大的时候,会使效率大大降低。而SR协议通过让发送方仅重传在接
收方丢失或损坏了的分组,从而避免了不必要的重传,提高了效率。
在SR协议下,发送方需响应以下三种事件:
1、从上层收到数据。当从上层收到数据后,发送方需检查下一个可用于该分组的
序号。若序号在窗口中则将数据发送。
2、接收ACK。若收到ACK,且该分组在窗口内,则发送方将那个被确认的分组标记
为已接收。若该分组序号等于基序号,则窗口序号向前移动到具有最小序号的未确
认分组处。若窗口移动后并且有序号落在窗口内的未发送分组,则发送这些分组。
相关文章:
11 UDP的可靠传输协议QUIC
1.如何做到可靠性传输 2.UDP与TCP,我们如何选择 3.UDP如何可靠,KCP协议在哪些方面有优势 4.KCP协议精讲(重点讲解 5.OUIC时代是否已经到来 UDP如何做到可靠传输 ACK机制重传机制 重传策略序号机制(后发的包可能先到) 3 2 1-> 2 3 1重排机制 2 3 1-> 3 2 1窗口机制 流…...
14-20 Vision Transformer用AI的画笔描绘新世界
概述 毫无疑问,目前最受关注且不断发展的最重要的主题之一是使用人工智能生成图像、视频和文本。大型语言模型 (LLM) 已展示出其在文本生成方面的卓越能力。它们在文本生成方面的许多问题已得到解决。然而,LLM 面临的一个主要挑战是它们有时会产生幻觉反应。 最近推出的新模…...
LVS FILTER UNUSED OPTION
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 过滤一些版图与spice网表对不上的器件。 一般后端遇不到这个问题,因为通常是需要写到网表中的decap没有写出来造成的,如下图。...
Python后端面试题
1. 文件操作w和r的区别 在Python中,文件操作模式中的w和r都表示对文件的读写操作,但它们在打开文件时的行为有所不同: r模式: 读写:这种模式允许你同时读取和写入文件。文件必须已经存在,否则会抛出一个Fi…...
docker打包 arm32v7/debian 问题总结
1.架构不同 我的宿主是x86 ,但是打包的是arm架构 安装qemu sudo apt-get install binfmt-support qemu qemu-user-static 然后使用buildx打包 docker buildx build --no-cache --platform linux/arm/v7 -t tdc_post:1.0.1 . --load 保存tar docker save -o tdc_post.tar tdc_p…...
【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十)
课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 30 节) P30《29.数据持久化-用户首选项》 实现数据持久化在harmonyOS中有很多种方式,比较常见的是以下两…...
Vuetify3:监听当前手机还是电脑
我们在开发的时候,实现根据移动设备或PC设备来改编一些交互样式,这个时候我们需要监听宽度,在Vuetify3中可我们可以参考 显示 & 平台配合监听即可在窗口缩小的时候判断出手机还是电脑 <template><v-app><div v-if…...
Zabbix 配置钉钉告警
Zabbix 配置钉钉告警 随着企业IT运维需求的不断增加,及时、准确地获取系统告警信息显得尤为重要。在众多告警工具中,Zabbix 因其强大的监控功能和灵活的告警机制,成为了很多企业的首选。同时,随着企业内部沟通工具的多样化&#…...
TTL转RS232与USB转TTL
USB转TTL是一种常用的通信接口转换器,它将USB(通用串行总线)接口转换为TTL(晶体管-晶体管逻辑)电平的串行接口。这种转换器在许多场景下非常有用: USB转TTL: 功能: 将计算机的USB接…...
【力扣 896】单调数列 C++题解(循环)
如果数组是单调递增或单调递减的,那么它是 单调 的。 如果对于所有 i < j,nums[i] < nums[j],那么数组 nums 是单调递增的。 如果对于所有 i < j,nums[i]> nums[j],那么数组 nums 是单调递减的。 当给定…...
代码随想录Day71(图论Part07)
53.寻宝 题目:53. 寻宝(第七期模拟笔试) (kamacoder.com) 思路:首先,我不知道怎么存这样的东西,用三维数组吗,没搞懂,果断放弃 prim算法实现 import java.util.*;class Main {publi…...
[Mdp] lc 494. 目标和(01背包变种+dp+dfs)
文章目录 1. 题目来源2. 题目解析1. 题目来源 链接:494. 目标和 2. 题目解析 方法一:dfs 数据量比较小,长度只有 20,那么针对每一个数都有两种选择,正、负,即 2 20 = 100 w 2^{20} = 100w 220=100w 差不多的时间复杂度,dfs 解决即可。时间复杂度: O ( 2 n ) O(2^{n…...
React vs Vue:谁是构建现代Web应用的王者?
在前端开发领域,React 和 Vue 是两大备受推崇的框架(React实为库),各自拥有庞大的社区和丰富的生态系统。本文旨在深入探讨这两者之间的区别,通过代码示例来分析它们各自的优势和适用场景,从而帮助开发者做…...
Linux CentOS 宝塔中禁用php8.2的eval函数详细图文教程
PHP_diseval_extension 这个方法是支持PHP8的, Suhosin禁用eval函数,不支持PHP8 一、安装 cd / git clone https://github.com/mk-j/PHP_diseval_extension.gitcd /PHP_diseval_extension/source/www/server/php/82/bin/phpize ./configure --with-php-config/ww…...
Matlab 中 fftshift 与 ifftshift
文章目录 【 1. fftshift、ifftshift 的区别】【 2. fftshift(fft(A)) 作图 】【 3. fftshift(fft(A)) 还原到 A 】Matlab 直接对信号进行 FFT 的结果中,前半部分是正频,后半部分是负频,为了更直观的表示,需要将 负频 部分移到 前面。【 1. fftshift、ifftshift 的区别】 M…...
被裁了(9年)
那年(2015年)我刚毕业有一年多(20出头),阴差阳错来到了现在的单位。 那时互联网腾起,单位也迅速发展,部门从起初的不到30号人发展到500人;A轮、B轮.....D轮,一轮轮的融资…...
13. Revit API: Filter(过滤器)
13. Revit API: Filter(过滤器) 前言 在讲Selection之前,还是有必要先了解一下的过滤器的。 对了,关于查找一些比较偏的功能或者API的用法,可以这样查找 关键词 site:https://thebuildingcoder.typepad.com/ site是…...
hadoop 3.X 分布式HA集成Kerbos(保姆级教程)
前提:先安装Kerbos 1、创建keytab目录 在每台机器上上提前创建好对应的kertab目录 [hadooptv3-hadoop-01 ~]$ sudo mkdir -p /BigData/run/hadoop/keytab/ [hadooptv3-hadoop-01 ~]$ sudo mkdir -p /opt/security/ [hadooptv3-hadoop-01 ~]$ sudo chown hadoop:had…...
VDS虚拟导播切换台软件
VDS 导播软件是一款功能强大的虚拟导播系统软件,具有全媒体接入、播出内容丰富、调音台、快捷切播与导播键盘、云台控制等特点,同时支持向多个平台直播推流。以下是一些常见的 VDS 导播软件特点: 1. 全媒体接入:支持多种设备和网…...
UE4_材质_使用彩色半透明阴影
学习笔记,不喜勿喷!侵权立删,祝愿大美临沂生活越来越好! 本教程将介绍如何配置虚幻引擎来投射彩色半透明阴影。 此功能在许多应用中都很有用,常见例子就是透过彩色玻璃窗的彩色光。 一、半透明阴影颜色 阴影在穿过半…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器
从本章节开始,进入到函数有多个参数的情况,前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参,ECX是整型的第一个参数的寄存器,那么多个参数的情况下函数如何传参,下面展开介绍参数为整型时候的几种情…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...
