资讯动态

HTTP 1.1/2/3 特性总结

发布时间:2026/8/11 2:12:53 来源:尧图企业网站定制
HTTP/1.1 的优点有哪些1.简单2.易拓展3.跨平台HTTP/1.1 的缺点有哪些1.明文传输2.无状态HTTP/1.1 的性能如何1.http全双工长连接2.http支持管道化技术但默认不开启 HttpURLConnection、OkHttp 高层 API都封装屏蔽了 pipelining不会做连续发送。想要演示必须直接操作 Socket手写 HTTP 原始报文单TCP Socket 依旧存在响应队头阻塞问题 浏览器的解决方案同一个域名建立多条并行 TCP 连接实现并发请求。 OkHttp 连接池 就是这么干的内部维护连接池同一个域名可以创建多条 TCP Socket 长连接实现并发 HTTP/1.1 请求。HTTP/1.1 的性能缺陷请求 / 响应头部Header未经压缩就发送首部信息越多延迟越大。只能压缩 Body 的部分发送冗余的首部每次互相发送相同的首部造成的浪费较多顺序响应应用层队头阻塞TCP 层队头阻塞没有请求优先级控制请求只能从客户端开始服务器只能被动响应。HTTP/2 相比 HTTP/1.1 性能上的改进头部压缩HPACK 算法在客户端和服务器同时维护一张头信息表所有字段都会存入这个表生成一个索引号以后就不发送同样字段了只发送索引号2.二进制格式3.Stream并行传输仅解决应用层的队头阻塞通过stream id因为通过stream id便可以乱序返回响应HTTP/2 把消息切为帧 Frame每一个帧带上 Stream‑ID。把三封信拆成很多带编号小包裹A 的包裹还没送完B、C 的小包裹可以穿插着送多路复用收件人根据编号把包裹拼回完整信件谁先拼好就先响应4.服务器主动推送资源客户端和服务器双方都可以主动建立 Stream Stream ID 也是有区别的客户端建立的 Stream 必须是奇数号而服务器建立的 Stream 必须是偶数号。HTTP/2 的性能缺陷TCP 层队头阻塞问题完美解决了应用层队头阻塞问题但 TCP 层还存在队头阻塞可以优化因为 TCP 层会检测报文段损坏、丢包、乱序只有内核缓冲区完整检测到了完整报文后才会给到应用层保证给到应用层的字节流一定是连续、无损坏、有序的 TCP 不知道什么是 HTTP2 帧不会判断帧完不完整帧完整性是 HTTP2 应用层读取字节后根据帧头里面的长度字段来判断。TCP 层队头阻塞就是因为有本批传输的字节流有字节缺口时后面的不同stream id的数据就算它本身到达也不交给应用。HTTP/3 相比 HTTP/2 性能上的改进HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP且为了保证可靠传输在应用层实现了 QUIC 协议QUIC 是运行在 UDP 之上的用户态传输层协议升级版传统 UDPQUIC 干的全部是传统传输层 TCP 干的活端到端连接建立丢包检测、ACK、重传流量控制、拥塞控制多路复用逻辑 Stream把一个连接分成多条独立逻辑流彻底解决应用层和传输层的队头阻塞问题更快的建立连接 TCP 和 TLS 是分层的HTTP/3 的 QUIC 协议并不是与 TLS 分层包含了 TLS 握手 QUIC 内部集成复用了 TLS‑1.3 把 TLS 握手报文完全融入到了 QUIC 数据包格式里面TLS不再是独立分层应用层用户态实现的传输层安全协议3. 连接迁移 QUIC 协议没有用四元组的方式来“绑定” TCP 连接而是通过连接 ID 来标记通信的两个端点移动设备的网络变化后导致 IP 地址变化了只要仍保有上下文信息比如连接 ID、TLS 密钥等就可以“无缝”地复用原连接消除重连的成本没有丝毫卡顿感达到了连接迁移的功能。 IP 地址虽然是网络层的数据但是传输层 TCP 的连接标识必须依赖网络层 IP内核会把两层的信息合并使用。 TCP 报文本身不会把 IP 拷贝进 TCP 头部只是内核处理的时候把 IP 头和 TCP 头信息结合起来。所以内核协议栈收到数据包时先解析IP 头部拿到源 IP、目的 IP再解析TCP 头部拿到源端口、目的端口将四层信息拼出四元组用这个完整 key去查找内核的 TCP 连接表找到对应的 socket。所以 QUIC 是一个在 UDP 之上的伪 TCP TLS HTTP/2 的多路复用的在应用层用户态实现的传输层协议。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价