QUIC不是TCP的替代品
QUIC取代了TCP成为HTTP3的基础传输协议,不是因为QUIC能够取代TCP的所有应用场景,而是因为QUIC更适合HTTP的请求/响应业务模型。原文: QUIC Is Not a TCP Replacement
TCP新规范(RFC 9293)的发布是网络界的一件大事,值得围绕这一主题发表第二篇文章(第一篇: 下一代TCP[1]),本文我们将围绕QUIC和TCP的比较展开。
我们在上一篇关于TCP的过去和未来的文章中,谈到了QUIC可能取代TCP的可能性。本文我们想说的是,实际上QUIC解决的问题与TCP解决的问题有所不同,因此不应该被视为TCP的替代品。对于某些(甚至大多数)应用来说,QUIC很可能成为默认传输方式,但这是因为TCP被用到了原本就不适合的场景。接下来看看为什么这么说。
早在1995年Larry和我编写《计算机网络: 一种系统方法》第一版的时候,当我们编写传输协议那一章时,将其命名为"端到端协议[2]"。那时候,互联网上只有两种值得注意的传输协议,UDP和TCP,所以我们分别给它们写了独立的章节。由于那本书旨在教授网络原理而不仅仅是RFC的内容,因此我们将这两个部分框定为两种不同的通信范式: 一个是简单的多路复用服务(以UDP为例),一个是可靠字节流(TCP)。但还有第三种范式,即远程过程调用(Remote Procedure Call[3], RPC),Larry认为有必要介绍这种范式,但并没有真正知名的互联网协议示例实现了该范式。当时我们用来说明RPC的例子现在看来很奇怪,是SunRPC[4]以及Larry当时研究x-kernel[5]时自己写的一个例子。不过现在有许多基于IP的RPC实现,gRPC[6]就是最著名的例子之一。
当大多数网络书籍只涉及TCP和UDP时,为什么我们觉得需要完整的章节来讨论RPC 呢?首先,RPC在当时是分布式系统社区的关键研究领域之一,1984年Nelson和Birrell的论文[7]刺激了一代与RPC相关的项目。在我们看来,可靠字节流并不是RPC的正确抽象。RPC的核心是请求/应答范式。客户端发送一堆参数到服务器,服务器用这些参数做一些计算,然后返回计算结果。是的,可靠字节流可能有助于通过网络正确获得所有参数和结果,但对于RPC来说,还有更多东西。先不考虑通过网络传输序列化参数的问题,RPC实际上并不是传输字节流,而是发送消息并获得对应的响应。有点像数据报文服务(如UDP或IP提供的),但它需要的不仅仅是不可靠的数据报文传递,而是需要处理丢包、无序和重复的消息;需要一个标识符空间来匹配请求和响应;还需要支持消息的分片和重组,以及其他一些需求。可靠字节流可以防止乱序传递,这也是RPC所需要的。这可能是为什么在20世纪八九十年代出现了这么多RPC框架的原因,因为分布式系统需要RPC机制,而标准TCP/IP协议套件没有任何现成的东西。(RFC 1045实际上定义了一种实验性的面向RPC的传输,但从未流行起来。)当时TCP/IP是否会像今天这样占据主导地位也并不明显,因此一些RPC框架(例如DCE)被设计成独立于底层网络协议。
TCP/IP协议栈中缺少对RPC的支持,从而为QUIC奠定了基础。当HTTP在20世纪90年代初出现时,并没有试图解决RPC问题,而是试图解决信息共享问题,但它确实实现了请求/响应语义。HTTP的设计者由于缺乏明显更好的选择,决定在TCP上运行HTTP,由于每个"GET"都使用一个新连接,在早期版本中性能非常差。为了提高性能,引入了对HTTP的各种优化,如流水线(pipelining)、持久化连接以及并行连接,但是TCP的可靠字节流模型从来都不是完美适配HTTP的。随着传输层安全(TLS)的引入,又叠加了一组加密信息的双向交互,HTTP的需求和TCP的支持之间的不匹配变得越来越明显。Jim Roskind在2012年的QUIC设计文档中清晰的解释了这一点,行首阻塞、拥塞响应不佳以及TLS引入的额外RTT都被认为是在TCP上运行HTTP的固有问题。
简单介绍一下这里发生的事情: 互联网的"窄腰(narrow waist)"最初只是IP协议,旨在支持上面的各种协议。但不知何故,"腰"也开始包括TCP和UDP,这两者是唯一可用的传输协议。如果只想要数据报文服务,可以使用UDP。如果需要任何可靠传输,TCP就是答案。如果需要的东西既不能完全映射到不可靠的数据报文,也不能完全映射到可靠的字节流,那么就不走运了。但是,要让TCP支持这么多上层协议,要求就太高了。
QUIC正在做很多工作,其定义跨越三个RFC,涵盖了基本协议(RFC 9000)、TLS的使用(9001[8])和拥塞控制机制(9002[9])。但其核心是互联网缺失的第三种范式: RPC的实现。如果需要真正的可靠字节流(例如下载几个G的操作系统更新时),那么TCP确实是为这项工作而设计的,但是HTTP(S)更像RPC而不是可靠字节流。可以这样理解QUIC,它最终将RPC范式交付给了互联网协议族,而这肯定会使运行在HTTP(S)上的应用程序受益,特别是包括gRPC以及大家广为依赖的RESTful API。
之前的文章[10]提到QUIC时,我们认为这是一个很好的案例研究,可以在需求变得更清晰时重新考虑系统分层,要点是TCP(可靠字节流)满足了一组需求,并且其拥塞控制算法[11]持续演进并为这些需求服务。QUIC实际上满足了一组不同的需求。由于HTTP在今天的互联网处于绝对中心地位(确实有人争论它是否正在成为新的"窄腰"),QUIC可能成为主要传输协议(不是因为取代TCP,而是因为满足了运行其上的主要应用程序的需求)。
你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind
参考资料
下一代TCP: https://www.mdnice.com/writing/6c05ab8e49954207a5f583268b6c4e58
[2]端到端协议: https://book.systemsapproach.org/e2e.html
[3]Remote Procedure Call: https://book.systemsapproach.org/e2e/rpc.html
[4]SunRPC: https://en.wikipedia.org/wiki/Open_Network_Computing_Remote_Procedure_Call
[5]x-kernel: https://dl.acm.org/doi/10.1145/74850.74860
[6]gRPC: https://grpc.io
[7]Implementing remote procedure calls: https://dl.acm.org/doi/10.1145/2080.357392
[8]RFC 9001: https://datatracker.ietf.org/doc/html/rfc9001
[9]RFC 9002: https://datatracker.ietf.org/doc/html/rfc9002
[10]The Importance of Thinking Across Layer Boundaries: https://systemsapproach.substack.com/p/the-importance-of-thinking-across
[11]TCP拥塞控制: https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzU2MTgxODgwNA==&action=getalbum&album_id=2460055314927255553#wechat_redirect
本文由 mdnice 多平台发布
相关文章:
QUIC不是TCP的替代品
QUIC取代了TCP成为HTTP3的基础传输协议,不是因为QUIC能够取代TCP的所有应用场景,而是因为QUIC更适合HTTP的请求/响应业务模型。原文: QUIC Is Not a TCP Replacement TCP新规范(RFC 9293)的发布是网络界的一件大事,值得围绕这一主题发表第二篇…...
计算机竞赛 目标检测-行人车辆检测流量计数
文章目录 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 🔥 优质竞赛项目系列,今天要分享的是 行人车辆目标检测计数系统 …...
GPT系列模型解读:GPT-1
GPT系列 GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型,由OpenAI开发。以下是GPT系列的主要模型: GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer…...
王杰国庆作业day3
父子进程对话 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <my_head.h> int main(int argc, const char *argv[]) {mkfifo("./fifo1",0664);mkfifo("./fifo2",0664);pid_t cpid fork();if(0 < cp…...
量子计算基础知识—Part1
1.什么是量子计算机? 量子计算机是基于量子力学原理构建的机器,采用了一种新的方法来处理信息,从而使其具有超强的功能。量子计算机使用Qubits处理信息。 2. 什么是量子系统? 一个量子系统指的是由量子力学规则描述和控制的物理…...
【PostgreSQL】【存储管理】表和元组的组织方式
外存管理负责处理数据库与外存介质(PostgreSQL8.4.1版本中只支持磁盘的管理操作)的交互过程。在PostgreSQL中,外存管理由SMGR(主要代码在smgr.c中)提供了对外存的统一接口。SMGR负责统管各种介质管理器,会根据上层的请求选择一个具体的介质管理器进行操作…...
VSCode安装图文详解教程
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 教程说明 本教程旨在详细介绍VSCode的安装过程及其注意事项。 下载VSCode 请在官方网站 https://code.visualstudio.com/ 下载https://code.visualstudio.com/至本地&…...
vscode 无法打开源文件
以下是c/c插件的intelligense设置情况: 解决办法: 重新安装vsode无用;重新下载mingw64,管用了!(我猜可能是之前换电脑移植文件的时候导致了部分文件丢失)...
1.8.C++项目:仿muduo库实现并发服务器之eventloop模块的设计
项目完整在: 文章目录 一、eventloop模块:进行事件监控,以及事件处理的模块二、提供的功能三、实现思想(一)功能(二)意义(三)功能设计 四、框架五、代码 一、eventloop模…...
Linux基本指令(二)
💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…...
量化交易全流程(五)
本节目录 策略回测 多因子模型 本节主要讨论回测相关的内容,包括两种不同的回测机制,即向量化回测和事件驱动回测;如何灵活使用开源工具来编写自己的回测程序;不同实现方式的优劣对比等。 在我们研究策略的时候,需要…...
聊聊MySQL的InnoDB引擎与MVCC
目录 一、InnoDB引擎 1.1逻辑存储结构 1). 表空间 2). 段 3). 区 4). 页 5). 行 1.2架构 1.2.1内存结构 1). Buffer Pool 2). Change Buffer 3). Adaptive Hash Index 4). Log Buffer 1.2.2磁盘结构 1). System Tablespace 2). File-Per-Table Tablespaces 3). …...
小病变检测:Gravity Network for end-to-end small lesion detection
论文作者:Ciro Russo,Alessandro Bria,Claudio Marrocco 作者单位:University of Cassino and L.M. 论文链接:http://arxiv.org/abs/2309.12876v1 内容简介: 1)方向:医学影像中小病变检测 2࿰…...
Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
星光下的赶路人star的个人主页 内心的平静始于不再让他人掌控你的感情 文章目录 0、前言1、窗口(Window)1.1 窗口的概念1.2 窗口的分类1.3 窗口API概览1.4 窗口分配器(Window Assigner)1.4.1 时间窗口1.4.2 计数窗口 1.5 窗口函数…...
vscode 注释插件koroFileHeader
https://blog.51cto.com/u_15785499/5664323 https://blog.csdn.net/weixin_67697081/article/details/129004675...
Centos7安装php-fpm
目录 第一步:查看系统IP地址和网卡名称 第二步:更改网络配置模式 第三步、重启network 查看iptablies ,将第十行,十一行删除 第四步:关闭config 第五步:创建nginx 文件夹 查看目录下的文件 进入nginx文件夹 第…...
计算机网络(五):运输层
参考引用 计算机网络微课堂-湖科大教书匠计算机网络(第7版)-谢希仁 1. 运输层概述 之前所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信ÿ…...
适合在校学生的云服务器有哪些?
随着云计算技术的发展,越来越多的学生开始使用云服务器来进行学习和实践。对于学生来说,选择一款便宜的云服务器不仅可以帮助他们降低成本,还可以提高学习和实践的效率。本文将介绍几款适合学生使用的便宜云服务器。 1、腾讯云学生服务器【点…...
计算机竞赛 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python
文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾…...
想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树
想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…...
SpringCloudAlibaba 相关组件的学习一
目录 前言 系统架构演变 1、单体架构 2、垂直架构 3、分布式架构 4、SOA架构 5、微服务架构 一、微服务架构的介绍 1、微服务架构的常见问题 2 微服务架构的常见概念 2.1 服务治理 2.2 服务调用 2.3 服务网关 2.4 服务容错 2.5 链路追踪 3、微服务架构的常用解决…...
【C语言 模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数】
C语言程序设计笔记---026 C语言之模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数1、介绍strncpy函数1.1、模拟实现strncpy函数 2、介绍strncat函数2.1、模拟实现strncat函数 3、介绍strncmp函数3.1、模拟实现strncmp函数 4、介绍strstr函数4.1、模拟实现strstr函数…...
Mongodb7启动报错排除解决方案
一: 报错信息: [rootwww log]# journalctl -xe -- Unit mongodb.service has begun starting up. /usr/local/mongodb/mongdb7/bin/mongod --help for more information 10月 03 13:47:39 www.yhchange.com systemd[1]: mongodb.service: control process exited, …...
王杰国庆作业day5
...
QT、C++实现地图导航系统(mapSystem)
文章目录 地图导航系统项目应用背景技术栈选择数据处理算法实现界面实现源码展示成果展示源码下载 (免费) 地图导航系统 项目应用背景 电子地图导航系统的主要目的是为用户提供精确、实时的导航和位置信息,以帮助他们在城市或地区内轻松找到…...
STM32 定时器介绍--通用、高级定时器
目录 高级定时器 1.功能框图 1-时钟源 2-时基单元 3-输入捕获 4-输出比较 2.输入捕获的应用 3.输出比较的应用 4.初始化结构体 1-时基初始化结构体 2-输出比较结构体 3-PWM信号 周期和占空比的计算--以通用定时器为例 4-输入捕获结构体 5-断路和死区初始化结构体…...
淘宝天猫渠道会员购是什么意思?如何开通天猫淘宝渠道会员购有什么用?
淘宝天猫渠道会员购是什么意思? 淘宝天猫渠道会员购与淘宝天猫粉丝福利购意思基本相同,都可以领取淘宝天猫大额内部隐藏优惠券、通过草柴APP开通绑定渠道会员还可以获得购物返利。 草柴APP如何绑定开通淘宝天猫渠道会员? 1、手机下载安装「…...
(Note)机器学习面试题
机器学习 1.两位同事从上海出发前往深圳出差,他们在不同时间出发,搭乘的交通工具也不同,能准确描述两者“上海到深圳”距离差别的是: A.欧式距离 B.余弦距离 C.曼哈顿距离 D.切比雪夫距离 S:D 1. 欧几里得距离 计算公式&#x…...
思科:iOS和iOSXe软件存在漏洞
思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…...
CCF CSP认证 历年题目自练Day19
题目一 试题编号: 201812-1 试题名称: 小明上学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充…...
商丘网站建设方案/长沙百度首页优化排名
前段时间看到在V公司工作的朋友们都开始使用Mac电脑了。 一直对苹果电脑充满向往的我,实在是好心动(同时伴随着一小股心痛,只有一小股…这得花多少银子呀…虽然我用得也是Mac….) 堆得小山般的Apple iPAD 批量安装Mac Book Pro系统…...
服装定制属于什么行业/广州seo网络推广员
题目1: 查找最晚入职员工的所有信息 CREATE TABLE ‘employees’ ( ‘emp_no’ int(11) NOT NULL, ‘birth_date’ date NOT NULL, ‘first_name’ varchar(14) NOT NULL, ‘last_name’ varchar(16) NOT NULL, ‘gender’ char(1) NOT NULL, ‘hire_date’ date N…...
新郑做网站/黄页网络的推广网站有哪些
如果使用的自动提交偏移量的模式,偏移量会给到kafka或者zk进行管理,其中kafka的偏移量重置给了重新消费kafka内未过期的数据提供了机会,当消费者出错,比如消费了数据,但是中途处理失败,导致数据丢失&#x…...
网站内容维护/短信营销
Description Input 有若干行,每行三个数字 X;Y;Z 代表一组数据,表示立方体的长宽高加 1 Output 第 i 行数据输出Case#i: 第i组数据的答案 Sample Input 2 1 22 2 2Sample Output Case #1: 4Case #2: 15HINT x,y,z<1000 Source 郑州培训D3考试…...
企业网站备案怎么做/百度入口网址
去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 注意:该题与 1081 https://leetcode-cn.com/problems/smalle…...
北京市工程建设信息网/厦门seo公司到1火星
/* 二分法求解题意:对给定表达式求解。注意:①精度值的使用。 */ #include <cstdio> #include <cmath> int p,q,r,s,t,u; double f(double x) {return p*exp(-x)q*sin(x)r*cos(x)s*tan(x)t*x*xu; } int main() {//freopen("f://data.in…...