HTTP协议各个版本(若有问题,谢谢改正哦~)

    科技2025-09-01  22

    Http0.9 http协议的最初版本,功能简陋, 仅支持请求方式GET,并且仅能请求访问HTML格式的资源。

    Http1.0 1.请求行必须在尾部添加协议版本字段(http/1.0) 2.增加了请求方式POST和HEAD; 3.不再局限于0.9版本的HTML格式,根据Content-Type可以支持访问多种数据格式 4.同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。 5.HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。 6.其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。 7.工作方式:每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持keepalive。 为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection字段。

    Connection: keep-alive

    Http1.1 1.引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。 2.加入了管道机制,在同一个TCP连接里,允许多个请求同时发送,增加了并发性,进一步改善了HTTP协议的效率;举例来说,客户端需要请求两个资源。以前的做法是,在同一个TCP连接里面,先发送A请求,然后等待服务器做出回应,收到后再发出B请求。管道机制则是允许浏览器同时发出A请求和B请求,但是服务器还是按照顺序,先回应A请求,完成后再回应B请求。 3.新增了请求方式PUT、PATCH、OPTIONS、DELETE等。 4.客户端请求的头信息新增了Host字段,用来指定服务器的域名。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。 5.在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。 6.节约带宽。HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能(range/支持传送部分内容)。加入了一个新的状态码100,HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;加入了身份认证机制,如果返回401,客户端就可以不用发送请求body了节约了带宽。

    Http2.0 1.采用新的二进制文本。http2.0是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧。(HTTP1.x的解析是基于文本) 2.增加多路复用。复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了队头堵塞的问题。(HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级) 3.引入头信息压缩机制。头信息使用gzip或compress压缩后再发送(http1.1只对消息主体进行压缩)。 4.增加服务器推送的功能。即不经请求服务端主动向客户端发送数据。

    Processed: 0.012, SQL: 8