quic详解

news2024/9/20 22:28:19

目录

一 http简介

二 quic协议详解

1 重传机制

2 流量控制

3连接迁移


一 http简介

http0.9

1991年发布, 没有header,功能非常简单,只支持GET

http1.0

1996年发布,明文传输安全性差,header特别大。它相对0.9有以下增强:

  • 增加了header(使用元数据与数据解耦)
  • 增加了status code,用于声明请求的结果。
  • content-type可以传输其它文件。
  • 请求头增加了http/1.0版本号。

支持GET, POST 和 HEAD方法

缓存策略:http1.0的缓存策略主要是依赖header中的If-Modiified-Since,Expire(到期)

缺点:短连接,每请求一次资源就新建一次tcp连接

http1.1

1997发布,是现在使用最广泛的版本。它相对1.0有以下增强:

  • 可以设置keepalive让http重用tcp连接(请求必需串行发送),长连接
  • 支持pipeline传输,请求发出后可以继续发送请求
  • 增加了HOST头,让服务端知道用户请求的是哪个域名
  • 增加了type、language、encoding等header
  • 断点续传(通过在 Header 设置参数)
  • 新增OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

缓存策略:http1.1的缓存策略要比http1.0略多,例如 Entity tag(实体标签), If-Unmodified-Since, If-Match, If-None-Match等.

2014年更新了内容:

  • 增加了TLS支持,即https传输
  • 支持四种模型:短连接,可重用tcp的长链接,服务端push模型(服务端主动将数据推送到客户端cache中),websocket模型

缺点:还是文本协议,客户端服务端都需要利用cpu解压缩

http2.0

2015年发布,主要是提升安全性与性能。它相对1.1的增强有:

  • header压缩(合并同时发出请求的相同部分)
  • 二进制分帧传输,更方便头部只传输差异部分
  • 流多路复用,同一服务下只需要用一个连接,节省了连接
  • 服务器推送,一次客户端请求服务端可以多次响应。
  • 可以在一个tcp连接中并发发送请求

缺点:基于tcp传输,会有队头阻塞问题(丢包停止窗口滑动),tcp会丢包重传。tcp握手延时长,协议僵化问题。

http3.0  

2018年发布,基于谷歌的QUIC,底层使用udp代码tcp协议,用户空间使用。(TCP/udp由操作系统内核实现,系统空间)

这样解决了队头阻塞问题,同样无需握手,性能大大地提升,默认使用tls加密。

二 quic协议详解

1 重传机制

packet number;PKN=4,重传的PKN=2的数据包。offset表示该数据包在总数据中的偏移

2 流量控制

与tcp流量控制滑动窗口原理类似

 和 TCP 不同的是:QUIC 的滑动窗口分为 Connection 和 Stream 两种级别。Connection 流量控制:规定了所有数据流的总窗口大小;Stream 流量控制:规定了每个流的窗口大小。

 则整个 Connection 的可用窗口大小为:20+30+10 = 60

3连接迁移

当客户端切换网络时,和服务器的连接并不会断开,仍然可以正常通信,对于 TCP 协议而言,这是不可能做到的。因为 TCP 的连接基于 4 元组:源 IP、源端口、目的 IP、目的端口,只要其中 1 个发生变化,就需要重新建立连接。但 QUIC 的连接是基于 64 位的 Connection ID,网络切换并不会影响 Connection ID 的变化,连接在逻辑上仍然是通的。

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

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

相关文章

postgres_exporter 部署

目录 - 下载地址- 配置环境变量- 启动vim ./start.shvim ./stop.shqueries.yaml - 配置prometheus - 下载地址 https://github.com/prometheus-community/postgres_exporter/releases - 配置环境变量 - 启动 因启动前需要配置环境变量后再进行启动 运行如下语句&#xff1a…

【自动化测试入门知识】自动化测试生命周期

如今,项目经理和开发人员面临着用最少的资源并在日渐缩减的时间表中构建可靠应用程序的挑战。因此,组织正在转向自动化测试以有效地实现此目标。 在自动化测试方面,我们许多人认为这只是SDLC(软件开发生命周期)的一部…

【竣达】浅谈电视台机房智能化动力环境监控系统管理

电视台作为面向全国甚至是世界的广播平台,在节目转播过程中不能有任何的闪失,为了最大限度保障电视节目的安全播出,一套完整的机房动力环境监控系统必不可少。 电视台机房及广播控制室建立包括机房动力、环境及安防的监控系统,主…

30岁女程序媛,对职业和未来的迷茫和焦虑

前言 2023快过去一半马上就要2024年了,92年的我就要步入30的行列了。 一转眼,也到了三十而立的年纪。 反观自己,到了这个时候,更多的是迷茫、彷徨、焦虑、无措 但也在不断地跌跌撞撞中,找到了自己的节奏和目标。 …

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…

【轻量化网络系列(1)】MobileNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 这几天学了一下轻量化网络,我们先从MobileNetV1讲起吧~ MobileNetV1网络是谷歌团队在2017年提出的,专注于移动端和嵌入设备的轻量级CNN网络,相比于传统的神经网络,在准确率小幅度降低的前提下大大减少模型的参数与运算量。…

机器学习 day13(正则化,线性回归的正则化,逻辑回归的正则化)

正则化的思想 如果特征的参数值更小,那么对模型有影响的特征就越少,模型就越简单,因此就不太容易过拟合 如上图所示,成本函数中有W₃和W₄,且他们的系数很大,要想让该成本函数达到最小值,就得使…

【软件测试】未来软件测试必备的八大技能!你缺少哪个?

软件测试工程师是个神奇的职业,他是开发人员与老板之间的传话筒(三夹板),也是开发人员与老板的好帮手; 他不仅需要有销售的沟通能力,也需要具备编辑人员的文档撰写技巧。如此一个面面俱到的岗位&#xff0…

软件设计师--易错题集结

计算机组成与结构 海明校验码是在n个数据位之外增选择题设k个校验位,从而形成一个kn位的新的码字,使新的码字的码距比较均匀地拉大。n与k的关系是(A)。 A、2k-1≥nk B、2n-1≤nk C、nk D、n-1≤k 知识: 确定要传输的信…

小白眼中的卷积神经网络(CNN)

相信和笔者一样爱技术对AI兴趣浓厚的小伙伴们,一定对卷积神经网络并不陌生,也一定曾经对如此“高级”的名字困惑良久。今天让我们一起回顾/学习这玩意到底是什么和为什么呢。 引言 说起CNN,必然会首先想到的是CV吧,而边缘检测可…

电动车防盗器语音芯片方案——NV020C 直推0.5w喇叭

电动车已经成为了越来越多个人的出行交通便利公交,近几年来各式各样的电动车也在不断更新中,功能也逐渐变多。电动车防盗装置也在逐渐更新换代中,其中电动车电池盒成为有些人窥测的重点对象。部分电动车的电池盒锁结构简单,很容易…

FiftyOne 系列教程(2)使用FiftyOne读取数据集

1. 支持的数据集 1.1. 支持各种常见的数据集格式 docs.voxel51.com/user guide/dataset creation/datasets.html#supported import formats此外,zoo上面有什么数据集,这里就可以加载到对应的数据集Available Zoo Datasets — FiftyOne 0.20.1 document…

终端电阻对CAN总线的影响

在进行CAN总线通信前,应保证正确的总线配置,比如终端电阻。它是影响总线通信的重要组件,下面我们不考虑信号的完整性,只从信号幅度和时间常数方面分析不加终端电阻时的影响。 根据ISO11898-2对终端电阻的取值规定,必须…

八股文大全

八股文大全 1. 基础篇1.1 网络基础1.1.1 TCP 三次握手1.1.2 TCP四次挥手![在这里插入图片描述](https://img-blog.csdnimg.cn/90a6997e8d414c84b499167c99da0397.png)1.1.3 TCP常见面试题 1. 基础篇 1.1 网络基础 1.1.1 TCP 三次握手 三次握手过程: 客户端——发…

Thread线程学习(3) 了解Linux线程中的pthread_cancel()函数

目录 一、了解pthread_cancel()函数 二、使用pthread_cancel()函数的基础示例 三、使用pthread_cancel()函数取消线程的进阶示例 (1) 注意事项 (2) 进阶示例 四、pthread_cancel()函数的扩展内容 (1) 如何定义取消点: (2) 使用pthread_cancel()函数需要谨慎…

电极法测污水常规五参数(PH、电导率、溶解氧、温度、浊度)

检测水质常规五参数的意义: pH:地表水水质中pH值的变化会影响藻类对氧气的摄入能力及动物对食物的摄取敏感度; 电导率:主要是测水的导电性,监测水体中总的离子浓度。包含了各种化学物质、重金属、杂质等等各种导电性物…

vue+elementui+nodejs校园生活信息服务快递系统v62911

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 学生登录,学生通过填写用户名、密码、权限等信息,输入完成后选择登录即可进入校园快领服务系统 学生登录进入校…

ESP32-C2系列开发板简介

C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…

阿里P6经验分享,这8种不同类型的自动化测试框架,你会吗?

以下为作者观点: 在自动化测试中,框架提供了一种组织和执行测试案例的结构化方式。它们提供了一套准则和最佳实践,使测试人员能够编写可重复使用、可维护和可扩展的测试脚本。在这篇文章中,我们将讨论自动化测试中不同类型的框架…

最近火起的 Bean Searcher 与 MyBatis Plus 到底有啥区别?

专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 福利:taobao扫码赚个零花钱~ Bean Searcher 号称 任…