HTTP协议变化(1.0-1.1-2);WebSocket协议

📅 发布时间:2026/8/14 1:19:58
HTTP协议变化(1.0-1.1-2);WebSocket协议 图解HTTP协议参考资料图解传说中的HTTP协议HTTP协议详解Http1.1和Http2.0的区别简介HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议在传输层使用TCP协议在网络层使用IP协议。IP协议主要解决网络路由和寻址问题。TCP协议在IP层之上实现可靠数据包传输保证接收端收到全部数据包且顺序和发送端一致TCP是面向连接、可靠的传输协议。HTTP本身不负责建立连接、握手、断开连接管理全部由TCP完成。如何理解HTTP协议是无状态的无状态协议对事务处理没有记忆能力两次HTTP请求之间协议本身不保存上下文信息。会话、登录状态由业务层Cookie、Session、Token来维护不属于HTTP协议本身能力。长连接和短连接HTTP/1.0默认短连接。每一次HTTP请求‑响应完成就断开TCP连接下次请求重新三次握手建立连接。若要开启长连接需要显式请求头Connection: keep‑alive。HTTP/1.1默认开启长连接持久连接响应头携带Connection: keep-alive开启长连接后页面加载完成TCP连接不会立刻关闭复用这条连接处理后续同服务的请求。⚠️Keep‑Alive不是永久连接空闲超时、单连接请求达到上限后服务端会主动断开TCP需要客户端与服务端同时支持长连接才会生效。HTTP长/短连接本质就是TCP的长/短连接。Apache优化提示关闭KeepAlive可以节省服务端内存但会产生大量TCP建立断开开销CPU占用升高需要结合业务并发场景权衡。TCP生命周期通信前需要三次握手建立连接通信结束执行四次挥手释放连接连接建立与销毁均会消耗CPU与网络资源。长连接关键时间参数Connection: keep‑alive的实际行为由服务端实现控制协议没有强制固定超时。参数作用典型参考值keep‑alive‑timeoutTCP连接空闲超时空闲N秒无请求服务端主动关闭连接Nginx 75s、Apache 15s、Tomcat 默认20smax‑keep‑alive‑requests单条TCP连接最多复用处理多少次HTTP请求到达阈值强制断开重建Tomcat 默认100次重点即使开启Keep‑Alive当达到最大请求次数服务端主动关闭TCP服务端作为主动关闭方会产生TIME_WAIT状态连接这是监控中tw指标上涨来源之一。注意浏览器HTTP/1.1会对同一个域名并行打开6‑8条TCP长连接用于并发加载页面资源不是一个用户只占用1条TCP长连接。HTTP/2才做到单域名仅1条TCP。HTTP/1.1 与 HTTP/2HTTP/2核心特性二进制帧格式HTTP/1.x基于文本解析HTTP/2全部采用二进制帧分为帧、流Stream解析更健壮高效。多路复用Multiplexing同一个TCP连接内部通过不同Stream流同一个客户端的多个请求并发传输解决HTTP/1.1队头阻塞。❗重要误区多路复用不能让多个终端浏览器用户共享同一条TCP连接。TCP是端到端点对点通道每个用户拥有独立TCP多路复用是同一个客户端内部的请求并发。✅网关代理场景网关作为统一客户端向后端建立HTTP2 TCP成千上万终端用户的业务请求以不同Stream复用到网关‑后端少数几条TCP后端看到的连接来源全部为网关IP。区分操作系统I/O多路复用(epoll)是服务端监听多个socket的机制HTTP/2多路复用是单TCP内并发多个业务请求二者概念不要混淆。头部HPACK压缩HTTP/1.1 Header明文传输Cookie、User‑Agent重复传输产生额外开销。HTTP/2使用HPACK算法静态字典动态表对请求头压缩降低头部流量。服务器推送 Server Push服务端可以在客户端未发起请求的情况下主动推送静态资源减少网络RTT。流优先级每个Stream可以设置优先级服务端按优先级调度响应优化页面关键资源加载。部署约束Tomcat/Jetty中HTTP2(h2)一般依赖HTTPS/SSL明文HTTP端口通常不支持h2c。HTTP/1.1 vs HTTP/2关键对比特性HTTP/1.1(Keep‑Alive)HTTP/2传输格式文本格式二进制帧、Stream流并发模型同一个域名打开多条TCP长连接并行单条TCP内部多路复用单用户仅1条TCP头部明文无压缩HPACK头部压缩并发阻塞TCP层队头阻塞无队头阻塞服务器推送不支持支持Server Push运行条件HTTP/HTTPS均可推荐HTTPS(h2)明文h2c支持有限HTTP/1.0 与 HTTP/1.1缓存策略HTTP/1.0If‑Modified‑Since、Expires做缓存判断。HTTP/1.1新增ETag、If‑None‑Match、If‑Match等更丰富缓存控制。带宽优化断点续传HTTP/1.1新增Range请求头支持请求资源局部内容返回206 Partial Content支持断点续传节约带宽。状态码扩展新增大量错误码例如409冲突、410资源永久删除。Host请求头HTTP/1.1强制要求请求携带Host头支撑一台物理服务器部署多个虚拟主机共享同一个IP缺失Host返回400。长连接与流水线PipeliningHTTP/1.1默认开启持久连接单TCP可传输多次请求响应降低握手开销流水线实际生产极少使用。HTTP与HTTPS对比特性HTTPHTTPS传输层TCPTCP SSL/TLS加密层传输内容明文可窃听篡改加密传输防窃听、篡改、中间人攻击默认端口80443证书无需证书需要CA颁发SSL/TLS证书身份认证无服务端身份校验证书校验服务端身份性能无加解密开销TLS握手有开销TLS1.3已大幅优化HTTPS工作流程TLS握手客户端校验服务端证书合法性非对称加密协商会话密钥后续业务报文使用对称加密完成传输现代Web环境网站、接口服务优先使用HTTPSHTTP2(h2)也依赖HTTPS部署。WebSocket协议WebSocket是建立在TCP之上的全双工通信协议。握手阶段借用HTTP协议完成协议升级握手成功之后不再使用HTTP协议直接基于TCP帧双向收发数据适合实时推送场景聊天、消息通知、实时大屏。补充结合线上运维监控的重要知识点TCP连接数 ≠ 用户量活跃TCP连接是内核传输层指标活跃用户是业务层会话。HTTP1.1下一个浏览器用户会产生多条ESTABLISHED TCP后端TCP还包含服务出站调用数据库、下游HTTP接口的连接这部分和前端用户无关。TIME_WAIT(tw)连接产生的两类来源入站Tomcat/Nginx达到max‑keep‑alive‑requests服务端主动关闭TCP产生tw出站Java服务作为HTTP客户端调用下游连接池使用不当频繁新建关闭TCP大量产生tw该部分不受Tomcat入站配置管控。架构场景CDNOSS静态托管前端静态资源托管于OSSCDN统一域名静态资源回源OSS/api/*代理转发后端服务。后端看到的TCP来源全部是CDN节点IP后端TCP数量由CDN回源连接池决定不跟随终端用户线性上涨。若CDN回源后端是明文HTTPTomcat仅支持HTTP/1.1想要回源启用HTTP2后端需要开启HTTPS。