美文网首页
HTTP(一)版本

HTTP(一)版本

作者: 又语 | 来源:发表于2021-11-10 19:48 被阅读0次

本文介绍 HTTP(Hyper Text Transfer Protocol,超文本传输协议)的版本发展历程及各版本新增特性。


HTTP/0.9

HTTP/0.9是第一个版本的HTTP协议,只允许客户端发送GET请求,且不支持请求头,由于没有协议头,所以 HTTP/0.9 只支持纯文本。
HTTP/0.9典型的无状态,每个事务独立进行处理,事务结束就释放连接。一次传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接关闭,如果请求的页面不存在也不会返回任何错误码。

HTTP/1.0

HTTP/1.0是HTTP协议的第二个版本,相对于HTTP/0.9增加了以下主要特性:

  • 请求与响应支持头域
  • 响应对象以一个响应状态行开始
  • 响应对象不只限于超文本
  • 开始支持客户端通过POST方法向Web服务器提交数据,支持GETHEADPOST方法
  • 支持长连接(默认还是使用短连接),缓存机制以及身份认证

HTTP/1.1

HTTP/1.1是HTTP协议的第三个版本,是目前使用最广泛的协议版本,相对于HTTP/1.0增加了以下主要特性:

  • 默认为长连接
    HTTP/1.1支持长连接(PersistentConnection)和请求的流水线(Pipeline)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP/1.1中默认开启Connection: keep-alive,弥补了HTTP/1.0每次请求都要创建连接的缺点。
  • 提供了范围请求功能(宽带优化)
    HTTP/1.0中存在一些浪费带宽的现象,如客户端只需要某对象的一部分,而服务器却将整个对象送过来,并且不支持断点续传功能,HTTP/1.1在请求头引入了range头域,允许只请求资源的某部分,即返回码是206(Partial Content),这样就方便开发者自由选择以便充分利用带宽和连接,这是支持断点续传的基础。
  • 提供了虚拟主机的功能(HOST域)
    HTTP/1.0中认为每台服务器都绑定一个唯一的IP地址,因此请求消息中URL没有传递主机名(hostname),但随着虚拟主机技术的发展,在一台物理机上可以存在多个虚拟主机(Multi-homed Web Servers),并且这些虚拟主机共享一个IP地址。HTTP/1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误:400 Bad Request
  • 多了一些缓存处理字段
    HTTP/1.1HTTP/1.0基础上加入了一些cache新特性,引入了实体标签,一般被称为 e-tags,新增更为强大的Cache-Control头。
  • 错误通知的管理
    HTTP/1.1中新增了24个错误状态响应码,如
    • 409(Conflict):请求的资源与资源当前状态发生冲突
    • 410(Gone):服务器上的某个资源被永久性删除

HTTP/2.0

HTTP/2.0是HTTP协议的第四个版本,相对于HTTP/1.1增加了以下主要特性:

  • 二进制分帧
    HTTP/2.0的所有帧都采用二进制编码
    • 帧:客户端与服务器通过交换帧来通信,帧是通信的最小单位。
    • 消息:逻辑上的HTTP消息,比如请求、响应,由一个或多个帧组成。
    • 流:连接中的一个虚拟信道,可以承载双向的消息,每个流都有一个唯一的整数标识符(1、2...N)。
  • 多路复用
    允许同时通过单一的HTTP/2.0连接发起多重请求-响应消息。有了新的分帧机制后,HTTP/2.0不再依赖多个TCP连接去处理更多并发的请求。每个数据流都可以拆分成很多互不依赖的帧,而这些帧可以交错(乱序发送),还可以分优先级。最后再在另一端根据每个帧首部的流标识符把它们重新组合起来。HTTP/2.0连接是持久化的,而且客户端与服务器之间也只需要一个连接(每个域名一个连接)。
  • 头部压缩
    HTTP/1.1首部带有大量信息,而且每次都要重复发送。HTTP/2.0要求通信双方各自缓存一份首部字段表以避免重复传输。
  • 请求优先级
    浏览器可以在发现资源时立即分派请求,指定每个流的优先级,让服务器决定最优的响应次序。这样请求就不必排队了,既节省了时间,也最大限度地利用了每个链接。
  • 服务端推送
    服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。正因为没有发起请求、建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度。

相关文章

  • HTTP(一)版本

    本文介绍 HTTP(Hyper Text Transfer Protocol,超文本传输协议)的版本发展历程及各版...

  • http 和 https 发展历程。相关概念

    一、HTTP协议的演进 1.HTTP 0.9版本->HTTP 1.0版本 -> HTTP 1.1版本 由最开始是...

  • HTTP之二:HTTP版本

    本文仅供笔者平日学习笔记之用,侵删原文:https://mp.weixin.qq.com/s/wZONAYSlku...

  • HTTP 版本比较

    HTTP/1.1 新增: 默认为持久连接; 新增范围请求; 新增虚拟主机; 多了一些缓存处理字段; 多了一些状态码...

  • HTTP协议版本

    HTTP/0.9 只支持GET方法。不支持版本号和各种HTTP首部,不支持多媒体内容的MIME类型。 HTTP/...

  • HTTP协议版本

    超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在RFC 2145中描述了HTTP版本号的用法。...

  • HTTP版本对比

    版本产生时间内容发展现状HTTP/0.91991年不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求...

  • Http报文

    http请求报文:方法、URI、HTTP版本、HTTP首部字段等构成。http响应报文:HTTP版本、状态码(数字...

  • HTTP——首部

    HTTP请求报文由请求方法、URI、HTTP版本、HTTP首部字段等构成。HTTP响应报文由HTTP版本、状态码(...

  • HTTP、HTTPS、HTTP版本的演进

    文章思路 HTTP基本概念: 基本概念 - HTTP是什么? 状态码 - HTTP常见的状态码有哪些? 首部字段 ...

网友评论

      本文标题:HTTP(一)版本

      本文链接:https://www.haomeiwen.com/subject/uprpzltx.html