HTTP 协议是后端面试的基础题。
HTTP 的演进
HTTP 1.0:每个请求一个 TCP 连接,用完就关。效率低。
HTTP 1.1:长连接(Connection: keep-alive)+ 管道化(Pipelining)。但还是有队头阻塞的问题。
HTTP 2.0:多路复用(一个 TCP 连接并发多个请求)、头部压缩、服务器推送。但 TCP 的队头阻塞还在。
HTTP 3.0:基于 QUIC(UDP),彻底解决队头阻塞。
常见状态码
- 200:OK
- 301:永久重定向(搜索引擎会更新 URL)
- 302:临时重定向
- 304:Not Modified(缓存有效,不用重传)
- 400:请求参数错误
- 401:未认证(需要登录)
- 403:没有权限
- 404:资源不存在
- 500:服务器内部错误
- 502:网关错误(上游服务器挂了)
- 503:服务不可用(过载或维护)
HTTPS = HTTP + TLS
TLS 握手过程(简化版):
- 客户端发送支持的加密套件
- 服务端选择加密套件 + 发证书
- 客户端验证证书 + 生成对称密钥(用服务端公钥加密发送)
- 双方用对称密钥加密通信
缓存头
- Cache-Control: max-age=3600:缓存 1 小时
- ETag:资源版本标识,配合 If-None-Match 做条件请求
- Last-Modified:最后修改时间,配合 If-Modified-Since
面试话术
HTTP 1.1 到 2.0 的核心改进是多路复用——一个 TCP 连接承载多个请求。2.0 到 3.0 的核心改进是 QUIC 协议——基于 UDP 彻底解决了 TCP 的队头阻塞。HTTPS 通过 TLS 握手交换对称密钥,之后用对称加密保护通信内容。
记状态码和缓存策略,实际开发中每天都会遇到。
评论
评论已关闭。