网络协议学习笔记

62 阅读2分钟

http

http/1.0

  • 短连接
  • 无状态设计

http/1.1

  • 持久连接 默认启用 Keep-Alive,单 TCP 连续处理多个请求
  • 管道化设计 支持请求批量发送,但响应必须按序返回,存在队头阻塞

http/2

  • 多路复用 二进制分帧技术实现请求/响应并行传输,彻底解决队头阻塞
  • 二进制传输
  • 头部压缩‌ HPACK 算法减少冗余头部数据
  • 服务器推送‌ 主动将关联资源推送给客户端,减少延迟

http/3

  • QUIC 协议 基于 UDP 替代 TCP,实现 0-RTT 快速握手,避免传输层队头阻塞
  • 连接迁移‌ 网络切换时(如 WiFi 转 4G)保持连接不中断

常见问题

1. 什么是队头阻塞

  • TCP 传输层队头阻塞 因丢包重传引发全局阻塞,可以通过http/3的QUIC 协议解决
  • HTTP 应用层队头阻塞 因管道化设计响应顺序依赖引发局部阻塞,可以通过http/2的多路复用,二进制分帧传输可以解决

2. 持久化连接和多路复用有什么差别

特性持久化连接(HTTP/1.1)多路复用(HTTP/2)
复用单位TCP 连接复用(同一连接顺序处理请求)请求/响应流复用(单连接并行传输多个流)
并发能力❌ 请求必须串行处理(即使开启管道化)✅ 多个请求/响应可并行传输
数据传输格式文本格式(可读性高,解析效率低)二进制分帧(高效解析,支持乱序传输)
阻塞问题存在队头阻塞(慢请求阻塞后续响应)彻底解决应用层队头阻塞

3. tcp和quic的区别

特性TCPQUIC
传输基础基于IP协议,需独立TLS加密基于UDP,内置TLS 1.3加密
连接标识依赖IP+端口,网络切换需重建连接使用64位Connection ID,支持IP变更无缝迁移
默认加密需额外配置TLS/SSL强制加密通信,首包即安全
丢包恢复依赖超时重传,ACK确认效率低显式包编号 + ACK范围反馈,精准重传

tcp

WebSocket

SSE(Server-Sent Events)

WebRTC