HTTP1.0与HTTP1.1的比较

HTTP1.0与HTTP1.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)、发送一个请求,包含一个 Expect:100-continue,询问 Server 是否愿意接受数据。
  2)、接收到 Server 返回的 100 continue 应答以后,才把数据 POST 给 Server。
  这种情况通常发生在客户端准备发送一个冗长的请求给服务器,但是不确认服务器是否有能力接收。如果没有得到确认,而将一个冗长的请求包发送给服务器,然后包被服务器给抛弃了,这种情况挺浪费资源的。

4、Host 域:

HTTP1.1 在 Request 消息头里多了一个 Host 域,HTTP1.0 则没有这个域。在HTTP1.0中认为每台服务器都绑定一个唯一的 IP 地址,这个 IP 地址上只有一个主机,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个 IP 地址。 HTTP1.1 的请求消息和相应消息都支持HOST头处理,且请求消息如果没有HOST头,会报错(400 Bad Request)

特别感谢:
转载自:

https://blog.csdn.net/zengxiantao1994/article/details/94915884?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值