1、影响http传输的两个因素
带宽和延迟(延迟包括:浏览器阻塞、DNS查询和建立连接)。
2、HTTP1.0和HTTP1.1的区别
1)长链接:HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
2)节约带宽:HTTP1.1支持只发送header信息(不带任何body信息)
,如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
3)host域:在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。
4)缓存处理
5)错误通知的管理
3、HTTP1.1和HTTP2.0(SPDY的升级版)的区别
1)多路复用:HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级
。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。
2)头部数据压缩:在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。消息主体都会经过gzip压缩,但
状态行和头部却没有经过任何压缩
,直接以纯文本传输。HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩
,这样数据体积小了,在网络上传输就会更快。
3)服务器推送:服务端推送是一种在客户端请求之前发送数据的机制
。在HTTP1.1中这些资源每一个都必须明确地请求
。为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取
。这样客户端可以直接从本地加载这些资源,不用再通过网络。
4、HTTP2.0的多路复用和HTTP1.X中的长连接复用有什么区别?
HTTP/1.* 一次请求-响应,建立一个连接,用完关闭;每一个请求都要建立一个连接
HTTP/1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;
HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行;
HTTP/1.*的长链接是解决了每次请求都要重新建立链接、断开连接的耗时问题
;而HTTP/2.*的多路复用解决的是链接建立完成后可以同时进行多组请求和相应的发送,解决串行化请求相应问题。
参考:(35条消息) HTTP1.0、HTTP1.1和HTTP2.0的区别_wolf鬼刀的博客-CSDN博客
标签:http1.0,http1.1,HTTP,请求,HTTP1.1,客户端,HTTP2.0,连接,http2.0 From: https://www.cnblogs.com/mango1997/p/16635514.html