HHTTP/1与HTTP/2的主要区别
- 传输格式
HTTP/1:使用文本格式进行数据传输,即请求和响应的头部和正文都是以文本(通常是ASCII码)形式发送。
HTTP/2:采用二进制格式进行数据传输,通过二进制分帧技术将消息分割成更小的帧进行传输。这种方式减少了数据传输的大小,并提高了压缩效率。 - 连接管理
HTTP/1:虽然HTTP/1.1支持持久连接,但每个请求仍然需要建立单独的连接(尽管可以在同一个连接上发送多个请求)。这导致在高并发场景下,TCP连接的建立和断开成为性能瓶颈。
HTTP/2:引入了多路复用技术,允许通过单一的TCP连接同时传输多个请求和响应。这种方式减少了TCP连接的建立和断开开销,并提高了带宽利用率。 - 头部压缩
HTTP/1:HTTP/1.1的头部信息较大,且每次请求都需要重复发送相同的头部信息,导致带宽浪费。
HTTP/2:使用了HPACK算法进行头部压缩,通过维护一张头信息表来避免重复发送相同的头部信息。这种方式显著减少了传输的头部大小,并提高了性能。 - 服务器推送
HTTP/1:不支持服务器主动向客户端推送资源。
HTTP/2:引入了服务器推送机制,允许服务器在客户端请求资源时主动推送相关的资源给客户端。这种方式可以减少客户端的请求次数和延迟时间。 - 安全性
HTTP/1:虽然HTTP/1.1支持通过HTTPS(HTTP Secure)进行加密传输,但并非强制要求。
HTTP/2:要求使用TLS(Transport Layer Security)加密协议进行传输,从而保证了数据传输的安全性。
URI 统一资源定位符
scheme
:协议名,表示资源应该用哪种协议来访问,比如http、https、jar、file、ftp等等。://
:特定的符号,不能改变。user:passwd@
:身份信息,表示登录主机时的用户名和密码,但现在已经不推荐使用这种形式了,因为它把敏感信息以明文形式暴露出来,存在严重的安全隐患。authority
:包含host和port,表示资源所在的主机名host必须有,port可以省略,使用默认的端口号path
:标记资源所在位置。query
:URI的查询参数。#fragment
:片段标识符,它是 URI 所定位的资源内部的一个“锚点”或者说是“标签”,浏览器可以在获取资源后直接跳转到它指示的位置,仅客户端使用。
一个完整的例子 http://www.baidu.com:8080/user?uid=1234&name=mario&referer=xx
请求头
:authority
是一个在 HTTP/2
协议中使用的特殊的请求头部字段,它用于指定请求的目标域名。在 HTTP/1.1
中,这个信息通常是通过 Host
头部传递的。然而,HTTP/2 要求所有域名信息必须通过 :authority
头部传递。
# HTTP/2
:authority: example.com
# HTTP/1.1
Host: example.com
HTTP基础 https://blog.csdn.net/lneartao/article/details/105276566
HTTP/1和HTTP/2 https://blog.csdn.net/qq_68874993/article/details/141598140
HTTP1、HTTP2、HTTP3 https://juejin.cn/post/6855470356657307662
一起看看 HTTP/2 牛逼在哪?https://blog.csdn.net/qq_34827674/article/details/115188949