蜜蜂采集器的使用教程 - 对HTTP/2和HTTP/3的功能支持
HTTP的发展历史
HTTP(超文本传输协议)是万维网(World Wide Web)的基础协议。自 Tim Berners-Lee 博士和他的团队在 1989-1991 年间创造出它以来,HTTP 已经发生了太多的变化,在保持协议简单性的同时,不断扩展其灵活性。如今,HTTP 已经从一个只在实验室之间交换文件的早期协议进化到了可以传输图片,高分辨率视频和 3D 效果的现代复杂互联网协议。
最早版本是1991年发布的0.9版。最初版本的 HTTP 协议并没有版本号,后来它的版本号被定位在 0.9 以区分后来的版本。HTTP/0.9 极其简单:请求由单行指令构成,以唯一可用方法 GET 开头,其后跟目标资源的路径(一旦连接到服务器,协议、服务器、端口号这些都不是必须的)。响应也极其简单:只包含响应文档本身。跟后来的版本不同,HTTP/0.9 的响应内容并不包含 HTTP 头。这意味着只有 HTML 文件可以传送,无法传输其他类型的文件。也没有状态码或错误代码。一旦出现问题,一个特殊的包含问题描述信息的 HTML 文件将被发回,供人们查看。
HTTP/1.0 在 HTTP/0.9 的基础上增加了很多新特性。例如:请求和响应消息都包含了版本号;请求方法不再仅限于 GET;引入了状态码和错误代码;引入了 HTTP 头部;支持多种类型文件传输等等。
HTTP/1.1 消除了大量歧义内容并引入了多项改进:连接可以复用,节省了多次打开 TCP 连接加载网页文档资源的时间;增加管线化技术,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟;支持响应分块;引入额外的缓存控制机制;引入内容协商机制,包括语言、编码、类型等,并允许客户端和服务器之间约定以最合适的内容进行交换;凭借 Host 标头,能够使不同域名配置在同一个 IP 地址的服务器上。
HTTP/2 是 HTTP 协议的第二个版本,于 2015 年 5 月正式标准化。它是 HTTP/1.1 的升级版,旨在提高性能和安全性。HTTP/2 的主要特点是:
- 多路复用:HTTP/2 可以在一个连接上同时传输多个请求和响应,而不需要按照顺序一个一个地发送。
- 二进制分帧:HTTP/2 将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们进行编码。
- 首部压缩:HTTP/2 使用 HPACK 算法对首部进行压缩,减少了首部的大小,从而降低了网络延迟。
- 服务器推送:HTTP/2 允许服务器在客户端请求之前将响应推送到客户端缓存中。
这里,不得不提到SPDY。SPDY是一种开放的网络传输协议,由Google开发,用来传送网页内容。它是基于传输控制协议(TCP)的应用层协议。SPDY也就是HTTP/2的前身。Google最早是在Chromium中提出的SPDY协议。SPDY并不是一个标准协议,但SPDY的开发组推动SPDY成为正式标准,而成为了互联网草案。后来SPDY未能单独成为正式标准,而http2即基于SPDY/3草案进行一些修改之后发布了http2的draft-00。
HTTP/3 是 HTTP 的下一个主要版本,它与 HTTP 早期版本具有相同的语义,但在传输层部分使用 QUIC 而不是 TCP。到 2022 年 10 月,26% 的网站正在使用 HTTP/3。
HTTP/3是基于QUIC协议的,QUIC是一个通用的传输层网络协议,最初由Google的Jim Roskind设计,2012年实现并部署,2013年随着实验范围的扩大而公开发布,并向IETF提交。虽然长期处于互联网草案阶段,但在从Chrome浏览器到Google服务器的内部部署中得到了广泛的使用。QUIC是基于UDP协议的,而UDP是不可靠传输协议,但QUIC通过自己的可靠性机制来保证数据传输的可靠性。
简单来说。在HTTP/1.x阶段,单个网页页面中大量的HTTP请求需要逐个请求,或多个连接下的逐个请求。HTTP/2主要解决多路复用,从而加快网络请求与相应,目前,Nginx等已经支持HTTP/2。随着移动互联网的普及,HTTP/3主要解决蜂窝网络以及WIFI的稳定性问题,QUIC即以UDP替代TCP,避免频繁的TCP连接握手,从而加快网络访问。
2308版本对HTTP/2和HTTP/3的功能支持
2308版本中,我们增加了对HTTP/2和HTTP/3的功能支持。目前,HTTP/2已经较为成熟,很多HTTP服务器都支持了HTTP/2。但HTTP/3目前还未完全普及,本软件对其支持也不是很稳定,如果指定HTTP/3协议,可能存在程序崩溃的情况。
设置HTTP协议版本。不设置的情况下,系统优先使用HTTP/2;如果服务器不支持HTTP/2,则会尝试HTTP/1.1。支持以下HTTP协议版本选项:
- 系统自动选择:系统自动选择合适的HTTP协议版本。
- HTTP/1.0。
- HTTP/1.1。
- HTTP/2。
https://
的请求使用HTTP/2,http://
的请求使用HTTP/1.1。- HTTP/2,不使用HTTP/1.1 Upgrade。
- HTTP/3。如果不支持,则自动切换到HTTP/2 或 HTTP/1。仅针对
https://
请求。 - HTTP/3。不自动切换到HTTP/2 或 HTTP/1。仅针对https://请求。
效果如下:
发表评论 取消回复