HTTP/2

HTTP/2核心

二进制帧

HTTP 2.0中所有加强性能的核心带你在于此--二进制传输

之前的HTTP/1的版本中,传输数据方式--文本传输

在 HTTP 2.0 中,有两个非常重要的概念,分别是帧(frame)流(stream)
代表着最小的数据单位,每个帧会标识出该帧属于哪个流,
是一个或多个帧组成的数据流。

流的优先级: HTTP/2 允许为每个数据流设置优先级。服务器和客户端可以指定数据流的优先级,以确保重要的数据流能够更早地得到服务

多路复用

允许在同一个链接上发送多个流,且每个流都有唯一流ID,不同的数据流的帧可以交错传输,而不需要等待一个数据流的帧全部传输完毕。这允许更高效的利用网络资源,通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。

header压缩

在HTTP/1.x中,请求和响应头部始终是以纯文本方式传输,而不能被压缩的。这样每个请求和响应都会增加一些开销,特别是在启用了cookie的时候,可能每次会要增加几k字节的开销。

在 HTTP 2.0 中,使用了 HPACK压缩格式 对传输的 header 进行压缩,减小了每个请求和响应的头部大小。并在两端维护了索引表,用于记录出现过的 header ,后面在传输过程中就可以传输已经记录过的 header 的键名,对端收到数据后就可以通过键名找到对应的值

server服务端push

服务端推送数据都是由PUSH_PROMISE帧发起的,它标明了服务端推送的资源的意图,并且该帧要在请求推送资源的响应帧之前传输。这个做法应该是比较好理解的,因为这样能避免客户端重复请求服务端主动推送的数据。服务端推送的使用方式由客户端掌握主动权,客户端可以限制并行推送的数量、调整流控窗口、或者禁用服务端推送。这些优先级都是在连接建立初期通过SETTINGS帧传输的,后续也可以随时更新

quic协议基于udp

相关推荐
2401_847056551 小时前
Altium Designer脚本工具定制
网络·数据库
就这个java爽!1 小时前
JAVA网络编程【基于TCP和UDP协议】超详细!!!
java·开发语言·网络·tcp/ip·udp·eclipse·idea
一叶飘零_sweeeet1 小时前
为什么 Feign 要用 HTTP 而不是 RPC?
java·网络协议·http·spring cloud·rpc·feign
KookeeyLena71 小时前
动态IP与静态IP:哪种更适合用户使用?
网络·网络协议·tcp/ip
可惜已不在2 小时前
华为 HCIP-Datacom H12-821 题库 (25)
网络·华为
亿林科技网络安全2 小时前
阿里云盘照片事件!网络安全警钟长鸣
网络·安全·web安全
平头哥在等你2 小时前
《计算机网络名词解释》
服务器·网络·计算机网络
时之彼岸Φ3 小时前
Web:HTTP包的相关操作
网络·网络协议·http
秋已杰爱3 小时前
HTTP中的Cookie与Session
服务器·网络协议·http
W21553 小时前
LINUX网络编程:http
网络·网络协议·http