HTTP 是客户端与服务器之间的请求—响应协议。浏览器请求一个资源,服务器返回状态码、响应头和内容。GET 常用于读取资源,POST 常用于提交数据;Host、Content-Type 等头部则补充请求或内容的元信息。

连接和缓存

早期 HTTP/1.0 常为每次请求建立新 TCP 连接;持久连接让多个请求复用同一连接,减少重复握手。HTTP/2 仍运行在 TCP 上;HTTP/3 使用 QUIC(基于 UDP),不能简单概括成“所有 HTTP 都在 TCP 上”。

浏览器可以缓存资源,代理缓存和内容分发网络(CDN)则能让多个用户复用靠近他们的内容副本。缓存是否可用、保留多久,主要由 Cache-Control 等响应头约束;缓存不是任意中间设备都能擅自长期保存内容。

Anycast 允许多个地点宣告相同的 IP 前缀,路由系统通常把用户带到拓扑上较近的服务节点。它适合无连接查询或可在不同节点间独立处理的服务;如果一个有状态连接被路由到另一台没有该连接状态的服务器,连接就可能中断。

图中客户端原本经 R1、R2 连到 S1;链路变化后,路由改经 R3 到 S2。由于 S2 没有原 TCP 连接的状态,原连接无法仅靠改道继续工作。

Anycast 路由变化导致有状态连接落到另一台服务器的示意图

HTTPS 与 TLS

HTTPS 是使用 TLS 保护的 HTTP。TLS 握手会协商密钥并验证服务器证书,之后用加密和完整性校验保护应用数据。可以把 TLS 理解为浏览器与网站之间的防窃听、防篡改信封;它不负责选择 IP 路径,也不能保证网站内容本身可信。