初识——HTTP3

第二十六期:HTTP 3的前世今生及尝鲜 HTTP/3又迎来一个里程碑:近日Cloudflare官方宣其边缘网络上已全面提供QUIC和HTTP/3支持。那么HTTP/3可以带来哪些变化和优势呢? 对Internet的用户,并且通过浏览器和其他客户端与站点进行高效交互。 HTTP/3又迎来一个里程碑:近日Cloudflare官方宣其边缘网络上已全面提供QUIC和HTTP/3支持。那么HTTP/3可以带来哪些变化和优势呢? 对Inter... 阅读详情

目录
  • 初识——HTTP3
    • HTTP
    • HTTP1.0和HTTP1.1的主要区别
    • HTTP2
    • HTTP3
    • 相关链接

初识——HTTP3

想了解HTTP3??那我们就得先知道为啥会出现HTTP3,因此我们需要知道HTTP1.0,HTTP1.1,HTTP2及HTTP3的演变过程。

HTTP

HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol。

HTTP 端⼝号:80

HTTP 由于是明⽂传输,所以安全上存在以下三个⻛险: 窃听⻛险, 篡改⻛险,冒充⻛险。

HTTP1.0和HTTP1.1的主要区别

长连接

HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。

节约带宽

HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。

这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。

HOST域

现在可以web server例如tomat,设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。

HTTP1.0是没有host域的,HTTP1.1才支持这个参数

HTTP1.1 相比 HTTP1.0 性能上的改进:

使⽤ TCP ⻓连接的⽅式改善了 HTTP1.0 短连接造成的性能开销。

⽀持管道(pipeline)⽹络传输,只要第⼀个请求发出去了,不必等其回来,就可以发第⼆个请求出去,可以 减少整体的响应时间。

但 HTTP1.1 还是有性能瓶颈:

  1. 请求响应头部(Header)未经压缩就发送,⾸部信息越多延迟越⼤。只能压缩 Body 的部分;

  2. 发送冗⻓的⾸部。每次互相发送相同的⾸部造成的浪费较多;

  3. 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端⼀直请求不到数据,也就是队头阻塞;

    管道( pipeline)传输中如果有⼀个请求阻塞了,那么队列后请求也统统被阻塞住了

  4. 没有请求优先级控制;

  5. 请求只能从客户端开始,服务器只能被动响应。

根据HTTP1.1 的性能瓶颈,HTTP2 做了什么优化?

HTTP2

HTTP2 协议是基于 HTTPS 的,所以 HTTP2 的安全性也是有保障的。

那 HTTP2 相⽐ HTTP1.1 性能上的改进:

  1. 头部压缩

HTTP2 会压缩头(Header)如果你同时发出多个请求,他们的头是⼀样的或是相似的,那么,协议会帮你消除重复的部分。

这就是所谓的 HPACK算法:在客户端和服务器同时维护⼀张头信息表,所有字段都会存⼊这个表,⽣成⼀个索 引号,以后就不发送同样字段了,只发送索引号,这样就提⾼速度了。

  1. ⼆进制格式

HTTP2 不再像 HTTP1.1⾥的纯⽂本形式的报⽂,⽽是全⾯采⽤了⼆进制格式,头信息和数据体都是⼆进制,并 且统称为帧(frame):头信息帧和数据帧。

1826167-20220312094233595-2122768237.png

这样虽然对⼈不友好,但是对计算机⾮常友好,因为计算机只懂⼆进制,那么收到报⽂后,⽆需再将明⽂的报⽂转 成⼆进制,⽽是直接解析⼆进制报⽂,这增加了数据传输的效率。

  1. 数据流

HTTP2 的数据包不是按顺序发送的,同⼀个连接⾥⾯连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。每个请求或回应的所有数据包,称为⼀个数据流( Stream )。

每个数据流都标记着⼀个独⼀⽆⼆的编号,其中规定客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。

客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求

1826167-20220312094556566-1295280455.png
  1. 多路复⽤

HTTP2是可以在⼀个连接中并发多个请求或回应,⽽不⽤按照顺序⼀⼀对应。

移除了 HTTP1.1中的串⾏请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提⾼了连接的利⽤率。

举例来说,在⼀个 TCP 连接⾥,服务器收到了客户端 A 和 B 的两个请求,如果发现 A 处理过程⾮常耗时,于是就 回应 A 请求已经处理好的部分,接着回应 B 请求,完成后,再回应 A 请求剩下的部分。

  1. 务器推送

HTTP2还在⼀定程度上改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发 送消息。

举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会⽤到的 JS、CSS ⽂件等静态资源主动发给客户端,减 少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push)。

HTTP2 也存在缺陷

HTTP2多个请求复⽤⼀个TCP连接,⼀旦发⽣丢包, 就会触发 TCP 的重传机制 ,⼀个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来。 ,就会阻塞住所有的 HTTP 请求。

因此HTTP2也是存在阻塞的问题,那么HTTP3是不是就来解决阻塞问题的呢??

HTTP3

HTTP3把 HTTP 下层的 TCP 协议改成了 UDP!

我们都知道 UDP 发⽣是不管顺序,也不管丢包的,所以不会出现 HTTP1.1 的队头阻塞 和 HTTP2 的⼀个丢包全部重传问题。

众所周知UDP是不可靠传输,那HTTP3怎么做到可靠的呢???

UDP是不可靠传输的,但基于UDP的 QUIC 协议( 基于UDP的低时延的互联网传输层协议 ) 可以实现类似 TCP 的可靠性传输。

QUIC (Quick UDP Internet Connection) 在应用程序层面(应用层) 实现了 TCP 的可靠性,TLS 的安全性和 HTTP2 的并发性,只需要用户端和服务端的应用程序支持 QUIC 协议,完全避开了操作系统和中间设备的限制。

用一个等式来描述就是 QUIC = 山西红色教育培训 www.nwuplganxun.com UDP + TLS + HTTP2

什么是操作系统和中间设备的限制??????

TCP是在操作系统内核和中间设备固件中实现的。要对TCP进行大更改,就必须要通信双方升级操作系统,中间设备更新固件,部署成本非常高。

通过QUIC改进拥塞控制体现在哪几个方面??

  1. QUIC在应用层即可实现不同的拥塞控制算法,不需要改操作系统和内核。
  2. 单个程序的不同连接也能支持配置不同的拥塞控制。这样我们就可以给不同的用户提供更好的拥塞控制。
  3. 应用程序变更拥塞控制,甚至不需要停机和升级。
  4. QUIC还有带宽预测,RTT监控,发送速率调整等高级算法支持。

扩展几点:

  • QUIC 有⾃⼰的⼀套机制可以保证传输的可靠性的。当某个流发⽣丢包时,只会阻塞这个流,其他流不会受到影响。
  • TLS3 升级成了最新的 1.3 版本,头部压缩算法也升级成了 QPack 。
  • HTTPS 要建⽴⼀个连接,要花费 6 次交互,先是建⽴三次握⼿,然后是 TLS/1.3 的三次握⼿。QUIC 直接 把以往的 TCP 和 TLS/1.3 的 6 次交互合并成了 3 次,减少了交互次数。

相关链接

文章只是简单的就HTTP1.1和HTTP2共同的一个阻塞问题来讨论HTTP3是如何改进优化的。虽然觉得HTTP3很好,但是现在还未得到普遍使用。如果对HTTP3感兴趣可以看下面的相关链接,讲解更深入。

科普:QUIC协议原理分析

QUIC网络协议简介

Ubuntu技巧-Ubuntu远程访问之SSH反向代理 💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。 阅读详情

相关推荐

ck3m多轴运动控制器笔记1:电机的配置与注意事项

利用PMAC(CK3M)运动控制器来实现对电机的控制,对具体的配置流程和注意事项讲解

p975468132的博客 4642

HTTP/3 详解:深度长文

你可能想知道这有什么关系?谁在乎这些特性是在 HTTP/3 还是在 QUIC 中呢?我认为这很重要,因为QUIC 是一个通用的传输协议,就像 TCP 一样,它可以并且将会被用于HTTP和网页加载之外的许多用例。例如,DNS、SSH、SMB、RTP 等都可以通过 QUIC 运行。因此,让我们进一步深入了解 QUIC,因为这里是我读到关于 HTTP/3 的大多数误解来源的地方。你可能听说过 QUIC 运行在另一个协议之上,称为用户数据报协议(UDP)。这是真的,但并非出于许多人声称的(性能)原因。

5881

LPDDR5时序精调:深入解析Read Gate Training的两种模式

本文深入解析了LPDDR5内存中关键的Read Gate Training技术,详细对比了RDQS Toggle Mode(翻转模式)与Enhanced RDQS Mode(增强模式)的工作原理、时序参数及适用场景。文章阐述了在高速数据传输下精准校准时序的必要性,并提供了两种模式的实战选型指南与系统级调试思路,帮助工程师优化内存性能与稳定性。

weixin_29219189的博客 369

HTTP3(QUIC)详解

http2利用二进制分帧实现多路复用,解决的是HTTP层(http1.1)的队头线性阻塞 HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议(快速的UDP网络连接)实现。 此变化主要为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,受到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。

qq_62311779的博客 7822

Jetson平台XDMA PCIe驱动安装与测试全指南

本文提供了一份在NVIDIA Jetson平台上安装与测试Xilinx FPGA XDMA PCIe驱动的完整指南。详细阐述了驱动作为高速DMA引擎的核心作用,并逐步讲解了从环境准备、驱动编译、内核模块加载到实际数据传输测试的全过程。内容涵盖常见问题排查与性能优化建议,帮助开发者实现Jetson与FPGA间的高速数据通信,适用于自动驾驶、工业视觉等需要异构计算的应用场景。

weixin_29196315的博客 528

微信小程序内容安全审核:从API调用到工程化落地的全流程实践

内容安全是互联网应用开发中的基础性技术环节,尤其在用户生成内容(UGC)场景下,它直接关系到平台的合规性与用户体验。其核心原理通常结合了关键词过滤、自然语言处理(NLP)和计算机视觉(CV)等技术,通过AI模型对文本、图像、音频进行多维度风险识别。这项技术的价值在于,它不仅是满足监管要求的必要手段,更是构建健康社区生态、保护品牌声誉、实现产品长期稳定运营的基石,广泛应用于社交、电商、社区论坛等各类UGC平台。本文聚焦于微信小程序生态,深入剖析其官方提供的内容安全解决方案,详细解读如何将文本同步检测与多媒体异

weixin_28622215的博客 453

什么是 HTTP/3?HTTP/3 为何席卷全球?HTTP/3 中有什么新内容?为什么需要它?

超文本传输​​协议 () 是互联网的基石,有助于加载网页、流式传输视频以及为您最喜爱的应用程序获取数据。去年 ,负责定义互联网技术的组织 互联网工程任务组 (。自那时起,HTTP/3 和相关的 QUIC 协议在公共网络上迅速普及。确切的数字取决于来源和测量方法,全球范围内,HTTP/3 的支持率从到。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 3456

PIV实验流场流速云图(MALAB contour函数用法)

clear;clc; for k=1:5 str1=['filename1']; str2=['filename2']; str3=['filename3']; str=eval(['str',num2str(k)]); load(str); [m n]=size(y); y=flipud(y); v=-v; x=x-x(1,...

Nick_Cui的博客 3223

NGINX开启HTTP3,给web应用提个速

如rfc9114所述,http3主要基于QUIC协议实现,在具备高性能的同时又兼备了可靠性的特点,在大多数场景下可提高web应用的访问速率。关于http3和quic的介绍网上资料有很多,这里不再过多赘述。自nginx的1.25.0版本开始,nginx首次对http3进行了正式支持,这也为我们在WEB服务器上部署http3提供了极大的便利。本文以重实践角度出发,使用web服务器——NGINX,分享下如何在NGINX中开启HTTP3。在浏览器中通过ip或域名访问搭建的站点。

水中加点糖 5611

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 323

[计网初识2]web的3个核心标准html,url,http

web的3个核心标准-->HTML,URL,HTTP的构成,

qq_43235540的博客 986

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

零基础自学Nginx 基础篇 1 初识Nginx 1.8 http块 1.8.3 其他配置指令

零基础自学Nginx 基础篇 1 初识Nginx 1.8 http块 1.8.3 其他配置指令

代码改变世界 372

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

我的HTTP学习之路:一个开发者的亲身经历

作为一名软件开发者,HTTP协议无疑是我日常工作中最常接触也是最不可或缺的基础之一。然而,回想起最初接触HTTP的经历,那时候的我对它的了解仅限于“它是用来传输数据的”,之后的深入学习却让我对这个协议有了全新的认识和敬意。今天,我想分享一下自己是如何逐步理解和掌握HTTP协议的过程。

wxl01235的博客 670

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

初识HTTP协议

我们可以认为是存在于浏览器中,存在于硬盘的,Cookie在村的时候是按照 浏览器 + 域名来进行细分的,不同的浏览器各自寸各自的Cookie,同一个浏览器不同的域名对应不同的Cookie,Cookie里的内容不光是键值对还有过期时间。我们在访问百度主页的时候,产生的http请求,浏览器在打开一个页面时,产生的http请求可能是多个,也可能是一个,我们这里关注的是请求百度页面的请求,我们双击第一条蓝色的请求查看请求的详细信息。

buhuisuanfa的博客 1075

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HTTP初识

本文介绍了HTTP协议的基本概念与应用场景。HTTP是应用层的超文本传输协议,支持文本、图片、视频等多种数据传输形式,早期基于TCP协议,HTTP 3.0开始使用UDP以提高效率。文章阐述了HTTP"一问一答"的交互模型及其变体,并详细解析了HTTP请求和响应的报文格式,包括URL结构、查询字符串(query string)和URL编码规则。此外,还介绍了HTTP方法(如GET、POST)及其应用场景。HTTP广泛应用于Web开发、移动APP与服务器通信以及分布式系统间的调用。

https://github.com/Jul1en-Lin 701

从初识到深入:一次完整的 HTTP 协议系统性理解之旅

在上一篇文章《初识 HTTP 协议》中,我们从整体视角认识了 HTTP 的基本概念、请求与响应的宏观结构,对浏览器与服务器之间的通信过程有了初步印象。然而,“知道它是什么”并不等同于“真正理解它是如何工作的”。本文将在此基础上进一步深入,从 HTTP 报文结构、请求方法、状态码、头字段以及通信细节等方面展开分析,逐步拆解一次 HTTP 请求在网络中的完整生命周期。希望通过系统性的梳理,将零散的知识点串联起来,帮助你从“初识 HTTP”走向“理解 HTTP”。

2301_80236968的博客 2085

初识HTTP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、HTTP是什么?二、理解客户端和服务端交互的过程三、HTTP协议格式2.读入数据总结 一、HTTP是什么? 处于应用层的协议 应用层:客户端和服务端的应用程序,所在的网络分层,这样两个程序处于应用层(网络分层的同一层),需要使用相同的应用层协议(http就是应用层其中一种协议) 协议:http自己的文本格式 HTTP诞生于1991年,目前已经发展为最主流使用的一种应用层协议 目前我们主要使用的还是HTTP1.1和HTTP2

m0_51405559的博客 1941

HTTP请求走私初识

一如http走私深似海,无法自拔

Armandhe的博客 2246

HTTP协议初识·中篇

本篇主要讲解了: 网页分离(网页代码和.c文件分离) html链接跳转 网页添加图片 确认并返回资源类型 填写正文长度属性 添加表单 临时重定向 补充知识: 前后端区别 浏览器是如何显示页面的 http各字段属性是什么意思 提交给指定的路径有什么意义? http方法 ht

weixin_67595436的博客 1436

初识HTTP——基于《图解HTTP》

文章目录一、写在开始二、了解Web及网络基础2.1 网络基础TCP/IP2.1.1 TCP/IP协议族2.1.2 TCP/IP的分层管理2.1.3 TCP/IP通信传输流2.2 与HTTP关系密切的协议:IP、TCP和DNS2.2.1 负责传输的IP协议2.2.2 确保可靠性的TCP协议 一、写在开始 本科学习中没有深入学习过HTTP的相关内容,这块对我自己来说就是一个空的知识短板。打算利用这两天...

吉吉有梦想 1425

【Linux网络】深入 HTTP 协议(一):从初识到 URL 编解码底层探索

摘要 本文系统讲解HTTP协议核心知识:从基础概念到URL编解码实现。内容涵盖HTTP协议特性(无连接/无状态演进)、CS/BS架构对比、URL/URI解析、DNS查询流程,并深入分析URL编码原理。通过C++源码实现URL解码算法,展示位运算优化技巧。最后用C语言实现简单HTTP服务器,演示请求响应流程。文章帮助开发者建立HTTP协议全局认知,掌握网络编程核心技能。

心向往之,行必能至 2104
上一篇: Linux下安装Apollo (Quick Start)
下一篇: 推荐一款好用且能兼职赚钱的自动化工具 - Hamibot
cmdos
博客等级 码龄19年 83粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值