searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

HTTP/3

2023-09-15 06:56:53
89
0

HTTP 概述

超文本传输协议(HTTP)全称Hyper Text Transfer Protocol,用于使用超文本链接加载网页。HTTP 是一种应用层协议,主要涉及客户端向服务器发出请求,然后服务器发送响应消息。

HTTP 是一种无状态协议,目前主要与 TLS(传输层安全)协议一起使用,TLS为 HTTP 提供机密性、完整性和身份验证机制——通常称为 HTTPS。

HTTP 由各种不同的组件组成,用于交换实际数据和元数据:

  • HTTP 请求方法(即 GET、POST、PUT、PATCH、DELETE)
  • HTTP 标头(即 Cookie、XFF、主机、内容类型、连接)
  • HTTP 响应码 - 表示请求状态的数值(例如:404 Not Found,表示在服务器上找不到请求的资源)

HTTP的历史

历史上最早的HTTP协议是1989年CERN(译注:即“欧洲核子研究组织”的原称 - Conseil Européen pour la Recherche Nucléaire)的 Tim Berners-Lee 发明的,目前命名为HTTP/0.9。然而,由于缺乏现代的传输机制、头文件、方法等,它从未获得官方的RFC,实际上也不再被使用。下面列出了官方 HTTP 初始规范 RFC,重点介绍了它们引入时最重要的新功能:

HTTP/1.0 - 1996 年 5 月 - RFC 1945

  • 支持 HTTP 报头
  • 支持 HTTP 状态码
  • 支持 Content-Type 报头
  • 增加了新的POST 和 HEAD 方法

HTTP/1.1 - 1997 年 1 月 - RFC 2068

  • 引入持久连接 - 可以通过单个连接发送多个请求
  • 强制主机头 - 对web代理路由很重要
  • 新的 HTTP 状态码 100
  • 新的 HTTP 方法 - PUT、PATCH、DELETE、CONNECT、TRACE 和 OPTIONS
  • 支持各种压缩和解压缩方法 - Gzip 最常用

HTTP/2.0 - 2015 年 5 月 - RFC 7540

  • 支持请求多路复用,引入 HTTP 流,现在请求/响应可以多路复用并且不是连续的
  • 支持请求优先级,例如,CSS 文件应该在 JS 文件之前发送
  • 自动 Gzip 压缩
  • HTTP 连接重置支持,如果在 HTTP 级别发生错误,可以立即重置连接
  • 支持服务器推送,服务器可以在没有明确请求的情况下主动将内容推送回客户端。
  • 支持报头压缩 (HPAK)

HTTP/3.0 - 2022 年 6 月 - RFC 9114

  • 使用 QUIC 协议代替TCP/TLS 栈 - RFC 9000

2022 年 6 月,IETF(互联网工程任务组)HTTP 组不仅发布了 HTTP/3 RFC 9114,还决定对 HTTP RFC 结构进行细化、清理和重建。此外,有些东西已经从 HTTP 标准中分离出来,并移至它们自己的 RFC 中。

  • HTTP 语义- RFC 9110:HTTP 的总体架构、常用术语和共享协议方面,例如请求和响应消息/doc/rfc9111s、方法、状态码、头和尾字段、消息内容、表示数据、内容编码等等。
  • HTTP 缓存- RFC 9111:HTTP 缓存和相关的报头字段来控制响应缓存的行为。
  • HTTP/1.1 - RFC 9112
  • HTTP/2.0 - RFC 9113
  • QPAC - RFC 9204

在最初的HTTP/1.0发布之后,用户很快发现它缺少很多潜在的特性,需要进行一些优化。仅半年之后就发布了HTTP/1.1来解决这些问题。而新的官方HTTP/2标准花了整整18年的时间来开发,主要是为了解决性能方面的问题。7年后的2022年6月,HTTP/3协议被引入。

HTTP/3协议最大的变化是放弃了对 TCP/TLS 堆栈的支持,并用新的互联网协议——QUIC传输协议取而代之。 

HTTP3

 HTTP3是在保持QUIC稳定性的同时使用UDP来实现高速度(选择QUIC就是选择UDP), 同时又不会牺牲TLS的安全性。

HTTP2协议虽然大幅提升了HTTP/1.1的性能,然而,基于TCP实现的HTTP2遗留下3个问题:

有序字节流引出的队头阻塞(Head-of-line blocking),使得HTTP2的多路复用能力大打折扣;

TCP与TLS叠加了握手时延,建链时长还有1倍的下降空间;

基于TCP四元组确定一个连接,这种诞生于有线网络的设计,并不适合移动状态下的无线网络,这意味着IP地址的频繁变动会导致TCP连接、TLS会话反复握手,成本高昂。

HTTP3协议解决了这些问题:

HTTP3基于UDP协议重新定义了连接,在QUIC层实现了无序、并发字节流的传输,解决了队头阻塞问题(包括基于QPACK解决了动态表的队头阻塞);

HTTP3重新定义了TLS协议加密QUIC头部的方式,既提高了网络攻击成本,又降低了建立连接的速度(仅需1个RTT就可以同时完成建链与密钥协商);

HTTP3 将Packet、QUIC Frame、HTTP3 Frame分离,实现了连接迁移功能,降低了5G环境下高速移动设备的连接维护成本。

0条评论
0 / 1000
罗斯基
12文章数
0粉丝数
罗斯基
12 文章 | 0 粉丝
原创

HTTP/3

2023-09-15 06:56:53
89
0

HTTP 概述

超文本传输协议(HTTP)全称Hyper Text Transfer Protocol,用于使用超文本链接加载网页。HTTP 是一种应用层协议,主要涉及客户端向服务器发出请求,然后服务器发送响应消息。

HTTP 是一种无状态协议,目前主要与 TLS(传输层安全)协议一起使用,TLS为 HTTP 提供机密性、完整性和身份验证机制——通常称为 HTTPS。

HTTP 由各种不同的组件组成,用于交换实际数据和元数据:

  • HTTP 请求方法(即 GET、POST、PUT、PATCH、DELETE)
  • HTTP 标头(即 Cookie、XFF、主机、内容类型、连接)
  • HTTP 响应码 - 表示请求状态的数值(例如:404 Not Found,表示在服务器上找不到请求的资源)

HTTP的历史

历史上最早的HTTP协议是1989年CERN(译注:即“欧洲核子研究组织”的原称 - Conseil Européen pour la Recherche Nucléaire)的 Tim Berners-Lee 发明的,目前命名为HTTP/0.9。然而,由于缺乏现代的传输机制、头文件、方法等,它从未获得官方的RFC,实际上也不再被使用。下面列出了官方 HTTP 初始规范 RFC,重点介绍了它们引入时最重要的新功能:

HTTP/1.0 - 1996 年 5 月 - RFC 1945

  • 支持 HTTP 报头
  • 支持 HTTP 状态码
  • 支持 Content-Type 报头
  • 增加了新的POST 和 HEAD 方法

HTTP/1.1 - 1997 年 1 月 - RFC 2068

  • 引入持久连接 - 可以通过单个连接发送多个请求
  • 强制主机头 - 对web代理路由很重要
  • 新的 HTTP 状态码 100
  • 新的 HTTP 方法 - PUT、PATCH、DELETE、CONNECT、TRACE 和 OPTIONS
  • 支持各种压缩和解压缩方法 - Gzip 最常用

HTTP/2.0 - 2015 年 5 月 - RFC 7540

  • 支持请求多路复用,引入 HTTP 流,现在请求/响应可以多路复用并且不是连续的
  • 支持请求优先级,例如,CSS 文件应该在 JS 文件之前发送
  • 自动 Gzip 压缩
  • HTTP 连接重置支持,如果在 HTTP 级别发生错误,可以立即重置连接
  • 支持服务器推送,服务器可以在没有明确请求的情况下主动将内容推送回客户端。
  • 支持报头压缩 (HPAK)

HTTP/3.0 - 2022 年 6 月 - RFC 9114

  • 使用 QUIC 协议代替TCP/TLS 栈 - RFC 9000

2022 年 6 月,IETF(互联网工程任务组)HTTP 组不仅发布了 HTTP/3 RFC 9114,还决定对 HTTP RFC 结构进行细化、清理和重建。此外,有些东西已经从 HTTP 标准中分离出来,并移至它们自己的 RFC 中。

  • HTTP 语义- RFC 9110:HTTP 的总体架构、常用术语和共享协议方面,例如请求和响应消息/doc/rfc9111s、方法、状态码、头和尾字段、消息内容、表示数据、内容编码等等。
  • HTTP 缓存- RFC 9111:HTTP 缓存和相关的报头字段来控制响应缓存的行为。
  • HTTP/1.1 - RFC 9112
  • HTTP/2.0 - RFC 9113
  • QPAC - RFC 9204

在最初的HTTP/1.0发布之后,用户很快发现它缺少很多潜在的特性,需要进行一些优化。仅半年之后就发布了HTTP/1.1来解决这些问题。而新的官方HTTP/2标准花了整整18年的时间来开发,主要是为了解决性能方面的问题。7年后的2022年6月,HTTP/3协议被引入。

HTTP/3协议最大的变化是放弃了对 TCP/TLS 堆栈的支持,并用新的互联网协议——QUIC传输协议取而代之。 

HTTP3

 HTTP3是在保持QUIC稳定性的同时使用UDP来实现高速度(选择QUIC就是选择UDP), 同时又不会牺牲TLS的安全性。

HTTP2协议虽然大幅提升了HTTP/1.1的性能,然而,基于TCP实现的HTTP2遗留下3个问题:

有序字节流引出的队头阻塞(Head-of-line blocking),使得HTTP2的多路复用能力大打折扣;

TCP与TLS叠加了握手时延,建链时长还有1倍的下降空间;

基于TCP四元组确定一个连接,这种诞生于有线网络的设计,并不适合移动状态下的无线网络,这意味着IP地址的频繁变动会导致TCP连接、TLS会话反复握手,成本高昂。

HTTP3协议解决了这些问题:

HTTP3基于UDP协议重新定义了连接,在QUIC层实现了无序、并发字节流的传输,解决了队头阻塞问题(包括基于QPACK解决了动态表的队头阻塞);

HTTP3重新定义了TLS协议加密QUIC头部的方式,既提高了网络攻击成本,又降低了建立连接的速度(仅需1个RTT就可以同时完成建链与密钥协商);

HTTP3 将Packet、QUIC Frame、HTTP3 Frame分离,实现了连接迁移功能,降低了5G环境下高速移动设备的连接维护成本。

文章来自个人专栏
罗斯基
12 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0