iOS面试题收纳-网络之Http2.0

88 阅读4分钟

什么是HTTP2.0

  1. HTTP/2(超文本传输协议第2版,最初命名为HTTP2.0),是HTTP协议的第二个主要版本。

  2. HTTP/2主要基于SPDY协议

  3. HTTP2.0的特点是:在不改动HTTP语义、方法、状态码、URI及首部字段的情况下,大幅度提高了web性能

什么是SPDY协议

  1. Google开发的基于TCP协议的应用层协议。目标是优化HTTP协议的性能,
  2. 通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。
  3. SPDY协议的核心思想是尽量减少TCP连接数
  4. SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。

HTTP1.x的缺点

  1. HTTP/1.0一次只允许在一个TCP连接上发起一个请求,HTTP/1.1使用的流水线技术也只能部分处理请求并发,仍然会存在队列头阻塞问题,因此客户端在需要发起多次请求时,通常会采用建立多连接来减少延迟。
  2. 单向请求,只能由客户端发起。
  3. 请求报文与响应报文首部信息冗余量大。
  4. 数据未压缩,导致数据的传输量大。

HTTP2.0特点

二进制传输

  1. HTTP2.0中所有加强性能的核心是二进制传输,实现方便且健壮。
  2. 在HTTP2.0中引入了新的编码机制,所有传输的数据都会被分割,并采用二进制格式编码。 图片描述转存失败,建议直接上传图片文件 3. 在二进制分帧层上,HTTP2.0会将所有传输的信息分为更小的消息和帧,并采用二进制格式编码,其中HTTP1.x的首部信息会被封装到Headers帧,而Request Body则封装到Data帧。

多路复用

  1. 帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流
  2. 所谓多路复用,即在一个TCP连接中存在多个流,可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。
  3. 在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免HTTP旧版本的队头阻塞问题,极大提高传输性能。 图片描述转存失败,建议直接上传图片文件

Header压缩

  1. 在HTTP2.0中,我们使用了HPACK(HTTP2头部压缩算法)压缩格式对传输的header进行编码,减少了header的大小。
  2. 并在两端维护了索引表,用于记录出现过的header,后面在传输过程中就可以传输已经记录过的header的键名,对端收到数据后就可以通过键名找到对应的值。

服务器Push

  1. 在HTTP2.0中,服务端可以在客户端某个请求后,主动推送其他资源。

更安全

  1. HTTP2.0使用了tls的拓展ALPN做为协议升级,
  2. HTTP2.0对tls的安全性做了近一步加强,通过黑名单机制禁用了几百种不再安全的加密算法。

额外补充:QUIC

由Google基于UDP实现的同为传输层的协议,目标是希望替代TCP协议。

  1. 实现了自己的加密协议,通过类似TCP的TFO机制实现0-RTT,当然TLS1.3已经实现了0-RTT。
  2. 支持重传和纠错机制,在只丢失一个包的情况下不需要重传,使用纠错机制恢复丢失的包。
    • 纠错机制:通过异或的方式,算出发出去的数据的异或值并单独发出一个包,服务端在发现有一个包丢失的情况下,通过其他数据包的异或值包算出丢失包。
    • 在丢失两个包及以上的情况就是用重传机制,因为算不出来了。

资料参考

程序员面试必考题(二十五)---SPDY与HTTP/2协议 Http 1.x弊端与Http 2.0比较 HTTP 2.0与HTTP 1.1区别 HTTP2.0性能增强的核心:二进制分帧

HTTP1.0,1.x,2.0的区别