使用UDP实现TCP的功能,会带来什么好处?

比较孤陋寡闻,只知道QUIC

TCPQUIC
握手延迟TCP需要三次握手+TLS握手三次握手+TLS握手放在一起,实现0RTT
头阻塞问题TCP丢失保文,会影响所有的应用数据包基于UDP封装传输层Stream,Stream内部保序,Stream之间不存在相互影响
传输控制Seq二义性(重传)、SACK限制、RTT计算不准吸取了TCP的问题,重新设计
连接迁移五元祖实现连接标识以一个 64 位的随机数作为 ID 来标识
实现层级在传输层上实现在应用层上实现

QUIC 流程简述

握手过程

《QUIC协议详解》- 1-RTT的连接过程

连接机制

一条 TCP 连接是由五元组标识的,分别是源 IP、源端口、目的 IP、目的端口、协议号

而QUIC 自己的逻辑里面维护连接的机制,不再以五元组标识,而是以一个 64 位的随机数作为 ID 来标识,而且 UDP 是无连接的,所以当 IP 或者端口变化的时候,只要 ID 不变,就不需要重新建立连接

重传机制

TCP 为了保证可靠性,通过使用序号和应答机制,来解决顺序问题和丢包问题

在 TCP 里面存在超时的采样存在不准确的问题

  • 发送一个包,发现没有返回,于是再发送,过一阵返回一个 ACK
  • ACK的返回,让客户端知道这个包收到了。但是这个往返时间是在ACK的时间减去第一个包时间,还是减去第二个包时间?

QUIC 也有个序列号,是递增的。任何一个序列号的包只发送一次,下次就要加一了。但为了保证包内容的一致性,会存在一个offset的概念,offset是唯一的,如果某个offset对应的包没有就重发,通过这个offset拼接成一个完整的数据流

多路复用机制

HTTP 2.0 的多路复用问题

  • HTTP/1.1可以使用多个TCP连接,但对连接数依然有限制,一次请求要等到连接中其他请求完成后才能开始(Pipeline机制也没能解决好这个问题),所以没有空闲连接的时候请求被阻塞,这是应用层的阻塞
  • HTTP/2底层使用了一个TCP连接,上层虚拟了stream,HTTP请求跟stream打交道,无需等待前面的请求完成,这确实解决了应用层的队首阻塞问题
  • 传输层的队首阻塞,TCP的应答是严格有序的,如果前面的包没到,即使后面的到了也不能应答,这样可能会导致后面的包被重传,窗口被“阻塞”在队首,这就是传输层的队首阻塞。 不管是HTTP/1.1还是HTTP/2

QUIC 连接上可以创建多个 stream,来发送多个 HTTP 请求。但是,QUIC 是基于 UDP 的,一个连接上的多个 stream 之间没有依赖

流量控制

QUIC 的流量控制也是通过 window_update,来告诉对端它可以接受的字节数

QUIC 的 ACK 是基于 offset 的,每个 offset 的包来了,进了缓存,就可以应答,应答后就不会重发,中间的空档会等待到来或者重发即可,而窗口的起始位置为当前收到的最大 offset,从这个 offset 到当前的 stream 所能容纳的最大缓存

参考资料

  • QUIC协议详解 - LightningStar - 博客园
  • QUIC 协议原理浅解
  • QUIC 0-RTT实现简析及一种分布式的0-RTT实现方案-腾讯云开发者社区-腾讯云
  • Xiaojian Hong:跟坚哥学QUIC系列:加密和传输握手

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Coursera吴恩达《深度学习》课程总结(全)

这里有Coursera吴恩达《深度学习》课程的完整学习笔记,一共5门课:《神经网络和深度学习》、《改善深层神经网络》、《结构化机器学习项目》、《卷积神经网络》和《序列模型》, 第一门课:神经网络和深度学习基础,介绍一…

每日一题(leetcode238):除自身以外数组的乘积--前缀和

不进阶是创建两个数组&#xff1a; class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int nnums.size();vector<int> left(n);vector<int> right(n);int mul1;for(int i0;i<n;i){mul*nums[i];left[i]mul;}mul1;for…

攻防世界12-baby_web

12-baby_web 题目说想想初始页面是哪个&#xff0c;一般都是index.php&#xff0c;然后如题分析即可。 我们在链接后面拼接上/index.php&#xff0c;返回后发现界面又回到了1.php&#xff0c;有可能是重定向。 我们点击检查-网络&#xff0c;发现没有index的请求&#xff0c;…

编曲知识18:EQ均衡器 齿音处理 呼吸音处理 口水音处理

EQ均衡器 齿音处理 呼吸音处理 口水音处理小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_66151c90e4b092c1187ac699?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 均衡器 均衡器 Equalizer(简称EQ) 人耳接受频率:20hz—20khz …

系统架构最佳实践 -- API网关架构设计

目录 1.什么是API网关&#xff1f; 2.API网关的核心功能 3.架构设计原则 4.API网关的实现方式 5.常见的API网关工具和框架 6.实际案例分析 API网关是现代微服务架构中的重要组件&#xff0c;它充当了前端和后端微服务之间的中介。本文将介绍API网关的架构设计原则和实现方…

Leetcode 剑指 Offer II 073.爱吃香蕉的狒狒

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 狒狒喜欢吃香蕉。这里有 N 堆香蕉&#xff0c;第 i 堆中有 piles…

华为海思数字芯片设计笔试第二套

1.声明 下面的题目作答都是自己认为正确的答案&#xff0c;并非官方答案&#xff0c;如果有不同的意见&#xff0c;可以评论区交流。 这些题目也是笔者从各个地方收集的&#xff0c;感觉有些题目答案并不正确&#xff0c;所以在个别题目会给出自己的见解&#xff0c;欢迎大家讨…

【静态分析】静态分析笔记04 - 数据流分析(理论)

参考&#xff1a; 【课程笔记】南大软件分析课程4——数据流分析基础&#xff08;课时5/6&#xff09; - 简书 --------------------------------------------------------------------------- 1. 迭代算法 本质&#xff1a;常见的数据流迭代算法&#xff0c;目的是通过迭代…

实时智能应答3D数字人搭建2

先看效果&#xff1a; 3d数字人讲黑洞 根据艾媒咨询数据&#xff0c;2021年&#xff0c;中国虚拟人核心产业规模达到62.2亿元&#xff0c;带动市场规模达到1074.9亿元&#xff1b;2025年&#xff0c;这一数据预计将达到480.6亿元与6402.7亿元&#xff0c;同比增长迅猛。数字人可…

C++(3) —— 核心编程

一、内存区分模型 1.1 程序运行前 #include<iostream> using namespace std;// 全局变量 int g_a 10; int g_b 20;// const修饰的全局变量&#xff0c;全局常量 const int c_g_a 10; const int c_g_b 20;int main() {// 全局区// 全局变量、静态变量、常量// 创建普通…

一个巧用委托解决的问题(C#)

个人觉得是委托应用的一个很好的例子&#xff0c;故做一下分享&#xff0c;希望能帮助到您&#xff0c;内容比较简单&#xff0c;大佬可以跳过。我是做桌面医疗软件开发的&#xff0c;前段时间在做一个需求。在签发检验项目医嘱时&#xff0c;调用第三方接口&#xff0c;然后带…

GPT演变:从GPT到ChatGPT

Transformer 论文 Attention Is All You Need The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder… https://arxiv.o…

Java基础常见知识点面试总结

文章目录 1. 变量、数据类型转换、运算符1.1 变量1.2 数据类型转换1.2.1强转的注意事项 1.3 进制的转换1.4 位运算符1.5 运算符1.6 三元运算符 2. 流程控制2.1 键盘录入_Scanner2.2 Random随机数2.3 switch(选择语句)2.4 分支语句2.5 循环语句 3. 数组3.1 数组的定义3.2 数组操…

乐趣Python——文件与数据:挥别乱糟糟的桌面

各位朋友们&#xff0c;今天我们要开启一场非凡的冒险——进入文件操作的世界&#xff01;你知道吗&#xff0c;在你的电脑里&#xff0c;有一个叫做“文件系统”的迷宫&#xff0c;里面藏着各种各样的文件和文件夹&#xff0c;它们就像是迷宫中的宝藏。但有时候&#xff0c;这…

wpf下如何实现超低延迟的RTMP或RTSP播放

技术背景 我们在做Windows平台RTMP和RTSP播放模块对接的时候&#xff0c;有开发者需要在wpf下调用&#xff0c;如果要在wpf下使用&#xff0c;只需要参考C#的对接demo即可&#xff0c;唯一不同的是&#xff0c;视频流数据显示的话&#xff0c;要么通过控件模式&#xff0c;要么…

SpringMVC(一)【入门】

前言 学完了大数据基本组件&#xff0c;SpringMVC 也得了解了解&#xff0c;为的是之后 SpringBoot 能够快速掌握。SpringMVC 可能在大数据工作中用的不多&#xff0c;但是 SSM 毕竟是现在就业必知必会的东西了。SpringBoot 在数仓开发可能会经常用到&#xff0c;所以不废话学吧…

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

2024年4月8日腾讯云故障复盘及情况说明

2024年4月8日15点23分&#xff0c;腾讯云团队收到告警信息&#xff0c;云API服务处于异常状态&#xff1b;随即在腾讯云工单、售后服务群以及微博等渠道开始大量出现腾讯云控制台登录不上的客户反馈。 经过故障定位发现&#xff0c;客户登录不上控制台正是由云API异常所导致。云…

面试必备:3个技巧提升表达能力,轻松拿Offer!

在职场竞争中&#xff0c;面试是求职者迈向成功的重要一步。想要在众多竞争者中脱颖而出&#xff0c;获得面试官的青睐并拿下心仪岗位的offer&#xff0c;良好的表达能力不可或缺。今天&#xff0c;我们就一起探讨如何在面试中有效提升自己的表达能力&#xff0c;为成功铺路。 …

C语言如何生成随机数以及设置随机数的范围

一、随机数的生成 1.rand()函数 C语言提供了⼀个函数叫 rand&#xff0c;这函数是可以生成随机数的&#xff0c;函数原型如下所示&#xff1a; int rand (void); rand函数会返回⼀个伪随机数&#xff0c;这个随机数的范围是在0~RAND_MAX之间&#xff0c;这个RAND_MAX的大小是依…