Http不同版本区别一二

179 阅读2分钟

Http不同版本区别一二

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

超文本传输协议:Hyper Text Transer Protocol即HTTP协议,是作用在传输层上的一个简单的请求-响应协议。

它的模型相对简单,ASCII形式的请求响应头配上报文主体,指定了客户端发给服务器端的消息,以及服务器端对应可以得到的响应。

这个简单的模型使开发和部署之间的联系变得十分的直截了当,是早期WEB能延续发展至今的重要原因。

我们这次从时代特征以及HTTP不同版本的需求来梳理一下HTTP更新的脉络

HTTP1.0

Tim Berners-Lee在1982年提出了HTTP/1.0。在这个协议中,浏览器每一次地请求响应都会相对应地建立并拆除一次连接,是一个无连接无状态的协议,简单而有效,十分易于管理。

这个时代,互联网浏览器之间传输的信息较为单一,多为简易的数据文章及表格,1.0足以胜任它原本的工作。1.0如今仍在一些简易页面、移动客户端和ie浏览器配置的相关场景中使用,传输一些较为简单的信息。

但显然,1.0协议的制定者最初没有想到互联网发展的速度之快以及没有考虑到HTTP协议推出后普及速度之快,后续一些持续传输数据的需求使得HTTP1.0协议显得有些捉襟见肘。

HTTP1.1

HTTP协议下TCP连接的建立和断开需要进行一个三次握手,四次挥手的操作,是一个很耗费时间的过程。
在1999年发布的HTTP1.1默认开启keep-alive,支持客户端与服务器端之间的长连接,在一个TCP连接上可以传送多个HTTP请求和响应。

同时,1.1添加了管道机制,即在同一个TCP连接中,客户端可以发送多个请求,将其放在管道中进行排队运行操作,但是这个处理过程是半双工模式,并没有接对“队头阻塞”问题,即前边的请求未接收到响应前,后边的请求便都会被要求阻塞等待。

HTTP2.0

HTTP2.0采用多路复用来解决1.1中存在的阻塞问题,浏览器和客户端都可以同时发送多个请求或响应,并且不用按照顺序一一进行请求与响应

HTTP2完全摒弃HTTP1.1半双工通信的方法,实现了全双工通信,彻底解决了HTTP层面的队头阻塞问题