HTTP 的发展历程(总结自用)

    技术2024-08-13  69

    HTTP 0.9

    只是一个草案,纯文本格式。蒂姆.伯纳斯-李最初设想的系统里的文档都是只读的,所以只允许用"GET" 动作从服务器上获取HTML文档,并且在响应请求之后立即关闭连接,功能非常有限。

    HTTP 1.0

    1996年正式发布

    1. 增加了HEAD、POST等方法

    2. 增加了响应状态码,标记可能的错误原因

    3. 引入了协议版本号概念,

    4. 引入了HTTP header头概念

    5. 传输的数据不仅限于文本

    在1.0中服务器发送完一个http响应后,会断开连接。1.0中确立了大部分现在使用的技术,但是它还不是一个正式的标准

    HTTP 1.1

    1999年,HTTP1.1发布了RFC文档,

    http1.1是目前互联网上使用最广泛的协议,功能也十分完善。

    1.增加了PUT、 DELETE等新的方法; 2.增加了缓存管理和控制; 3.明确了连接管理,允许持久连接;  4.允许响应数据分块(chunked), 利于传输大文件; 5.强制要求Host头,让互联网主机托管成为可能。

    1.1中把connection 头写进标准,默认开启久连接,connection:keep-alive。什么时候关闭?timeout=20;设置超时时间;max = xxx;长连接最多接收xxx次请求就断开。

    HTTP 2.0

    相对于HTTP 1.1来说

    1. 提升访问速度

    2. 允许多路复用

    3. 二进制分帧

    HTTP 1.x的解析是基于文本,基于文本协议的格式解析存在天然缺陷。

    4. 首部压缩

    HTTP 1.x中header有大量信息,且每次都重复发送,HTTP 2.0用encoder减少传输header大小,通讯双方各cashe一份header fileds表。

    5. 服务器推送(server push)

    http2.0 基于Google的SPDY协议,注重性能改善,但还没有普及。

    http3.0基于Google的QUIC协议,是将来的发展方向。

    Q1:一个tcp连接可以对应几个http请求?

    在长连接里可以对应多个

    Q2:tcp连接中http请求发送可以一起吗?

    在1.1中,pipelining技术可以完成多个请求同发,但是浏览器默认关闭,所以仍然认为不可行,

    在2.0中,Multiplexing多个请求可以在同一个tcp连接中并行进行

    Q3:浏览器如何提高页面加载的效率?

    同一个连接顺序处理多个或者和服务器建立多个tcp连接。

     

    Processed: 0.016, SQL: 9