HTTP不同版本的区别

HTTP1.1

HTTP1.1相对于HTTP1.0的优化

  • 请求使用长连接代替短链接,不必每次请求都进行三次握手建立TCP连接,减少性能损耗(创建销毁进程)同时加快响应速度(没有慢启动、握手时延)

  • 支持并发传输,不用等前一个请求收到响应,就可以发送请求,最大请求数据量可以到发送窗口的上限

HTTP1.1有什么不足?

  • 请求头部未经压缩数据量大:影响传输延时

  • 请求头部字段冗余:每次请求浪费较多

  • HTTP队头阻塞:服务端按照请求的顺序响应,如果服务端响应慢,可能有HTTP队头阻塞

  • 单向请求:只有由客户端发送请求,服务端响应请求

HTTP2

HTTP2相对于HTTP1.1的优化

  • 头部压缩 :如果同时发送多个请求,通信双方有一张头信息表 ,只需要发送索引,可以找到对应的头部字段

  • 二进制数据 :头部和数据部分都换成二进制存储,减少传输的大小,同时对计算机友好,不用进行转换,提高解析效率

  • 并发传输 :HTTP1.1没有对请求或者响应进行区分,所以只能要求服务端顺序响应,否则服务端响应的数据客户端无法组装(会组装不同请求的响应数据到一起),在HTTP2将每个HTTP请求或者响应封装成一个Stream,每个Stream有自己的Stream ID(对应某个请求或者响应),用于数据组装

  • 双向传输服务端可以主动推送资源,也可以创建Stream ID,但是必须是双数,而客户端必须是单数

HTTP/2有什么不足?

TCP队头阻塞:HTTP2是基于TCP协议的,而TCP是基于字节流的,TCP只有收到完整的字节数据,内核才会把缓冲区的数据传给对应的应用层,当某个HTTP请求没有收到完整的响应,即发生了丢包,即使后面的Stream已经是完整的也没办法接收,要等到本Stream接收到重传的报文段才能顺利接收

HTTP3

HTTP3相对于HTTP2的优化

HTTP/3基于UDP协议实现:UDP是基于报文段的,没有队头阻塞问题,同时在应用层实现QUIC协议保证数据可靠到达

QUIC协议

  • 无队头阻塞:QUIC的每个Stream都有自己独立的滑动窗口,不受其它Stream的影响,所以不会被其它Stream丢包问题的阻塞

  • 更快的连接建立:用QUIC三次握手代替TCP三次握手,同时QUIC握手会携带TLS(并且是TLS1.3),所以整个握手时延是1RTT

  • 连接迁移:TCP是用四元组来标记一条连接的,如果客户端切换网络,则连接需要重新建立,QUIC通过连接ID标记一条连接(连接ID、TLS密钥),可以无缝切换,无需重新建立连接

相关推荐
manuel_897571 小时前
六 系统安全
网络·数据库·系统安全
无忧智库1 小时前
深度解读《某低空经济试验区“十五五”通用航空机场与无人机物流网络初步设计方案》:构建未来低空经济数字底座的全景蓝图
网络·无人机
Arwen3032 小时前
SSL 加密证书助力企业构建安全的网络环境
网络·网络协议·tcp/ip·安全·php·ssl
乾元2 小时前
ISP 级别的异常洪泛检测与防护——大流量事件的 AI 自动识别与响应工程
运维·网络·人工智能·安全·web安全·架构
水力魔方3 小时前
SWMM深度二次开发专题7:网络分析-获取网络
网络·经验分享·swmm
木鱼布4 小时前
聊聊防火墙技术
网络·网络协议·tcp/ip
liulilittle4 小时前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
应用市场5 小时前
图片格式完全指南——从JPEG到AVIF的技术原理与选型
网络·人工智能·安全·汽车
剑之所向5 小时前
c# modbus大小端
linux·运维·网络
xixixi777776 小时前
CDN(内容分发网络)——缓存和分发网站、应用程序、视频等内容,以提高用户访问速度和稳定性,减少网络延迟和拥塞,同时减轻源服务器的压力
网络·缓存·架构·系统架构·cdn·业务·内容分发网络