HTTP1.1和 HTTP 2.0的区别?
说说 HTTP1.1和 HTTP 2.0的区别?
好的,面试官
不过说到这个问题,我可以换一个角度来回答吗? 我想讲讲 HTTP1.1 到 HTTP2.0 的一个技术发展,这个过程中呢会涉及到他们的各自区别。 之所以选择这样的回答方式,是因为我觉得这样能够更好地向面试官您展示我的一个思考过程,而不是单纯地答出了几点的区别。
如果过程中,面试官你有任何问题,都可以随时打断我的,那我开始了。
一般来说,在技术这一块,新来的一定比旧的有优势,因为新的一定是在兼容旧的的前提下发展而来的, 这个过程可能是解决了旧的缺点又或者是发展了新的功能;而 HTTP1.1 到 HTTP2.0 同样也是这样的趋势。
HTTP2.0 是在兼容 HTTP1.1 的前提下,解决了 HTTP1.1 的部分问题,并引入了一些新功能:
在兼容方面,
- HTTP2.0 没有在 URI 里引入新的协议名,仍然用「http://」表示明文协议,用「https://」表示加密协议
- 在传输层方面还是采用 TCP 来实现
- 在应用层方面,虽然 HTTP2.0 做出了改变,但是它还是满足功能上的兼容的, HTTP2.0 把 HTTP 分解成了「语义」和「语法」两个部分,「语义」层不做改动,与 HTTP/1.1 完全一致, 比如请求方法、状态码、头字段等规则保留不变;变的是「语法」层面,基本改变了 HTTP 报文的传输格式。
下面讲讲 HTTP2.0 相对于 HTTP1.1 的具体变化吧:
- HTTP2.0 开始对头部采用 HPACK 算法进行压缩,并采用了二进制编码,解决了 HTTP1.1 时重复发送很多固定字段(ASCII编码)造成的性能消耗问题。
- HTTP2.0 实现了并发传输,设计了 stream,多个 stream 复用一条 TCP 连接达到并发效果,解决了 HTTP1.1 应用层队头阻塞的问题
- HTTP2.0 开始支持服务器主动推送资源了,解决了 HTTP1.1 只能由客户端请求,服务端被动响应的问题。
我的回答就这些,感谢面试官给我这个尝试的机会。