Skip to main content

浏览器中的网络

HTTP1

HTTP/0.9

被称为超文本传输协议

  • 只有一个请求行,没有请求头和请求体
  • 服务器没有返回头信息
  • 以 ASCll 字符流来传输

HTTP/1.0

  • 引入了请求头和响应头

    响应头信息文件类型、服务器文件压缩、语言、文件编码类型

  • 引入状态码

  • Cahe 机制

  • 用户代理字段

HTTP/1.1

  • 为每个域名最多同时维护6个TCP持久连接
  • 虚拟主机支持,增加 host 字段
  • 提供了对动态内容的支持,引入Chunk transfer机制
  • 客户端 cookie 支持、安全机制

HTTP2

http/1.1 的问题

  • TCP 启动慢
  • 多个 TCP 会竞争固宽
  • 队头阻塞问题

多路复用机制

一个域名只使用一个TCP长连接和消除队头阻塞问题

通过引入二进制分帧层,就实现了HTTP的多路复用技术

HTTP/2 其他特性

  • 可以设置请求优先级
  • 服务器推送
  • 头部压缩

HTTP3

RTT

网络延迟又称为RTT(Round Trip Time)。从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为RTT。

HTTP/2中所存在的一些问题

主要包括了TCP的队头阻塞、建立TCP连接的延时、TCP协议僵化

QUIC 协议

HTTP3 的挑战

  • 服务器和浏览器端都没有对HTTP/3提供比较完整的支持
  • 系统内核对UDP的优化远远没有达到TCP的优化程度,这也是阻碍QUIC的一个重要原因
  • 中间设备僵化的问题。这些设备对UDP的优化程度远远低于TCP

HTTP3 的未来

  1. 从标准制定到实践再到协议优化还需要走很长一段路;
  2. 因为动了底层协议,所以HTTP/3的增长会比较缓慢,这和HTTP/2有着本质的区别。