Golang HTTP 面试题集 - HTTP协议历代发展
1. HTTP协议基础问题
Q1: 请描述 HTTP 1.0、1.1 和 2.0 在连接管理上的主要区别?
参考答案:
主要区别:
- HTTP 1.0: 每个请求需要建立新的TCP连接,请求完成后关闭连接
- HTTP 1.1: 引入Keep-Alive,允许在同一TCP连接上发送多个请求,但请求必须串行处理
- HTTP 2.0: 多路复用,单个连接可并行处理多个请求
Q2: 什么是队头阻塞(Head-of-line blocking)?HTTP/2 如何解决这个问题?
参考答案:
HTTP/2 解决方案:
- 二进制分帧:将请求分解为更小的帧
- 多路复用:帧可以乱序发送,通过Stream ID重新组装
- 流独立性:一个流的阻塞不影响其他流