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字符 来传输
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
,更多看详解