01 HTTP发展史

Posted by CodingWithAlice on April 19, 2021

01 HTTP发展史

写得比较细的一篇博客:HTTP的前世今生

  • 总结

1、HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文

2、HTTP/0.9 是个简单的文本协议,只能获取文本资源

3、HTTP/1.0 确立了大部分现在使用的技术,但它不是正式标准

4、HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善

5、HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,正在普及

6、HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向。

HTTP/0.9

结构比较简单,为了便于服务器和客户端处理,它也采用了纯文本格式。蒂姆·伯纳斯 - 李最初设想的系统里的文档都是只读的,所以只允许用“GET”动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接,功能非常有限

有三个特点:

1、只有一个请求行,没有请求头/体

2、没有返回头信息,只返回数据

3、返回的内容以 ASCII字符 来传输

image-20210506174306712

HTTP/1.0 - 并不是标准,只是一份使用文档

1、增加了 HEAD、POST 等新方法;

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

3、引入了协议版本号概念;

4、引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活;

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

HTTP/1.1 - 正式的标准

主要变更点:

1、增加了 PUT、DELETE 等新的方法

2、增加了 缓存 - cache-control 管理和控制

3、明确了连接管理 keepalive允许持久连接/HTTP 长链接 - 重用TCP链接

4、允许 响应数据分块(chunked),利于传输大文件

5、强制要求 Host 头,让互联网主机托管成为可能

6、支持 pipeline 网络传输 - 第一个请求发出去了,不用等其回来就可以发第二个

补充:目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接

HTTP/2 - 正在普及

在高度兼容 HTTP/1.1 的情况下,主要特点:

1、二进制协议,不再是纯文本 - 增加了数据传输的效率

2、在一个 TCP 连接中,可同时发起多个请求,废弃了 1.1 里的管道

3、使用专用算法 压缩头部,减少数据传输量(同时发送的请求头部相似就会被压缩 - 动态字典表)

4、允许 服务器主动 向客户端推送数据,服务端 push

5、增强了安全性,“事实上”要求加密通信

HTTP/3

HTTP 底层的 TCP 协议改成了 UDP,更多看详解