快捷搜索: 王者荣耀 脱发

HTTP 1.0 和 HTTP 1.1 的区别

HTTP 1.1 相比 HTTP 1.0 主要包含以下几个方面的增强:

1、支持长连接

HTTP 1.0 采用无连接模式,每次请求建立新的 TCP 连接,响应结束后断开连接。从 HTTP 1.1 开始默认使用长连接,所谓长连接是指客户端以及服务器复用同一套 TCP 连接,旧版本的 HTTP 要想使用长连接可以通过以下通用头配置实现:

Connection: keep-alive

2、节约带宽

HTTP 1.0 客户端在请求某个资源时,默认服务端将整个资源返回客户端。但很多时候客户端并不一定需要所有信息。HTTP 1.1 请求头引入 range 参数,通过配置它实现请求部分实体数据。并且客户端可以采用多线程并发访问某资源的不同段,充分利用带宽资源

3、引入新的错误通知管理

HTTP 1.1 相比 HTTP 1.0 引入更多的错误状态码,如 414 表示 URL 地址太长,410 表示所请求资源被永久删除

4、引入 HOST 请求头

HTTP 1.0 认为每台服务器都应该绑定唯一 ip 地址并提供单一服务,请求消息中 URL 并没有指定主机名。随着虚拟主机的出现,一台服务器上可以存在多个虚拟主机,并且它们共享同一个 IP 地址。为了支持虚拟主机,HTTP 1.1 在请求头引入 host 参数,通过它确定具体请求的虚拟主机,该字段为空返回 404 错误状态码

举个例子:一个 IP 可以对应多个域名,通过这些域名可以确定唯一 ip,早期假设每个 ip 只部署一个应用,只有它提供服务。然而实际每个 ip 可以部署多套服务,类似 tomcat 可以同时部署多个 java web 应用,为了区分相同 IP 上的不同应用,HTTP 1.1 引入 host,通过它定位到不同的服务端应用

5、缓存处理

HTTP 1.1 在请求头引入更多和缓存相关的参数,以此来更灵活的支持缓存

6、分包发送

为了保证客户端能够完整的接收到服务端响应,HTTP 1.0 采用 Content-Length 字段记录数据长度。使用 Content-Length 的前提是服务端预先知道响应内容的大小,静态文件还好,对于动态加载的文件,服务端预先不知道大小,此时就很难处理

为了解决该问题,HTTP 1.1 引入 Transfer-Encoding: chunked 机制来解决问题。使用 chunked 可以将数据分为一系列数据报发送,此时服务端无需知道发送内容的大小,直到最后一个分块长度为 0 时,表示数据发送完毕,同样客户端可以以此为标识确定数据接收完毕

经验分享 程序员 微信小程序 职场和发展