HTTP1.1和HTTP1.0的区别(HTTP1.1版本的4个特性)
  q8wrrNXNgAWx 2023年11月12日 18 0

1、HTTP/1.1默认持久连接和流水线

  HTTP/1.1默认使用持久连接,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,在同一个TCP连接下,可以发送多次HTTP请求。

同时,默认采用流水线的方式发送请求,即客户端每遇到一个对象引用就立即发出一个请求,而不必等到收到前一个响应之后才能发出下一个请求;

但服务器端必须按照接收到客户端请求的先后顺序依次回送相应结果,以保证客户端能够区分出每次请求的相应内容,这样也显著地减少了整个下载过程所需要的时间。

  HTTP/1.0默认使用短连接,要建立长连接,可以在请求消息中包含Connection: Keep-Alive头域;

如果服务器愿意维持这条连接,在响应消息中也会包含一个Connection: Keep-Alive的头域。

Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求资源过后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。

2、分块传输数据

  HTTP/1.0可用来指定实体长度的唯一机制是通过Content-Length字段。静态资源的长度可以很容易的确定;

但是对于动态生成的响应来说,为获取它的真实长度,只能等它完全生成之后,才能正确地填写Content-Length的值,这便要求缓存整个响应,在服务器端占用大量的缓存,从而延长了响应用户的时间。【服务端在没有分块返回所有请求资源的情况下,首先会在本地缓存所有动态的请求资源,缓存完成后计算请求资源的实体长度】

  HTTP/1.1引入了被称为分块(chunked)的传输方法。该方法使发送方能将消息实体分割为任意大小的组块(chunk),并单独地发送它们。

在每个组块前面,都加上了该组块的长度,使接收方可确保自己能够完整地接收到这个组块。更重要的是,在最末尾的地方,发送方生成了长度为零的组块,接收方可据此判断整条消息都已安全地传输完毕。这样也避免了在服务器端占用大量的的缓存。

Transfer-Encoding:chunked字段向接收方指出:响应将被分组块,对响应分析时,应采取不同于非分组块的方式。

3、状态码 100 Continue

 HTTP/1.1加入了一个新的状态码 100 Continue,用于客户端在发送POST数据给服务器前,征询服务器的情况,看服务器是否处理POST数据。

  当要POST的数据大于1024字节的时候,客户端并不会直接就发起了POST请求,而是会分为2步:

    (1)发送一个请求,包含一个Except: 100-continue,询问Server是否愿意接受数据。

    (2)接收到Server返回的100 continue应答以后,才把数据POST给Server。

  这种情况通常发生在客户端准备发送一个冗长的请求给服务器,但是不确认服务器是否有能力接收。如果没有得到确认,而将一个冗长的请求包发送给服务器,然后包被服务器给抛弃了,这种情况挺浪费资源的。

 4、Host域

HTTP1.1在Request消息头里多了一个Host域,HTTP1.0则没有这个域。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,这个IP地址上只有一个主机。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。

去期待陌生,去拥抱惊喜。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
q8wrrNXNgAWx