计算机网络面试题, HTTP 1.0 和 2.0 有什么区别?
计算机网络面试题, HTTP 1.0 和 2.0 有什么区别?
QA
Step 1
Q:: HTTP 1.0 和 HTTP 2.0
有什么区别?
A:: HTTP 1.0 和 HTTP 2.0
有多方面的区别,主要体现在以下几个方面:
1. **多路复用**:HTTP 1.0 每个请求都需要单独的 TCP 连接,而 HTTP 2.0
支持多路复用,多个请求可以通过一个 TCP 连接并发发送,减少了延迟。
2. **头部压缩**:HTTP 1.0 的请求和响应头部信息比较冗长,HTTP 2.0
使用 HPACK 压缩算法对头部进行压缩,降低了带宽消耗。
3. **二进制分帧**:HTTP 2.0 使用二进制格式传输数据,而 HTTP 1.0
是基于文本的。二进制传输更高效且易于解析。
4. **服务器推送**:HTTP 2.0
支持服务器推送功能,允许服务器在客户端还未请求资源时主动推送相关资源,进一步减少延迟。
5. **连接管理**:HTTP 1.0 每个请求都要新建和关闭 TCP 连接,而 HTTP 2.0
可以复用连接,降低了连接建立和关闭的开销。
Step 2
Q:: HTTP 2.0
的多路复用是如何实现的?
A:: HTTP 2.0
的多路复用是通过将每个 HTTP 请求和响应分成多个独立的帧,并将这些帧以交错的方式通过一个 TCP 连接传输来实现的。每个帧都有一个流标识符,这样客户端和服务器可以在同一个连接上同时发送和接收多个请求和响应,而不会相互阻塞。
Step 3
Q:: HTTP 2.0
如何进行头部压缩?
A:: HTTP 2.0
采用了 HPACK 算法对 HTTP 头部进行压缩。HPACK 利用静态表和动态表来存储常用的头部字段,并用一个索引值代替头部字段名称和值,从而减少了传输的数据量。同时,HPACK 算法还会维护一个动态表,记录之前的头部字段,从而避免重复传输相同的头部信息。
Step 4
Q:: 为什么 HTTP 2.0 的二进制分帧比 HTTP 1.0
的文本传输更高效?
A:: HTTP 2.0 使用二进制分帧主要有两个优势:首先,二进制格式更紧凑,减少了数据的传输量;其次,二进制数据更容易被计算机处理和解析,可以减少客户端和服务器的 CPU 开销。相比之下,HTTP 1.0
的文本格式解析复杂且容易出错,效率较低。