Skip to content

第7章:DNS、HTTP 与安全传输

DNS 的层次与缓存

DNS 将域名映射到记录集合。递归解析器替客户端查询,权威服务器提供某个区域的记录。根和顶级域的委派使名字空间可以分散管理,不要求一台服务器保存全部域名。

TTL 限制缓存使用时间,但不保证修改记录后所有客户端立即使用新值。应用自己的缓存、连接复用和中间解析器状态都会影响切换速度。

DNS 解析结果是通信入口信息,不是业务身份的充分证明。DNSSEC 可验证签名覆盖的数据来源与完整性,不负责把 DNS 内容加密,也不能代替网站的 TLS 身份验证。

HTTP 消息与连接

HTTP 用方法、目标、头部和消息体表达请求。状态码描述协议层结果;200 是否意味着某项业务完成,还取决于 API 的语义。

HTTP/1.1 可以复用连接,但响应顺序等限制会影响并发。HTTP/2 在一个 TCP 连接中复用多个流,消除部分应用层排队,但 TCP 字节丢失仍会阻止后续字节交付,可能影响多个流。

HTTP/3 使用 QUIC。QUIC 在 UDP 之上实现可靠流、拥塞控制和安全握手等机制;一个流缺少数据通常不阻止其他流交付已到达的数据,但它们仍共享链路和拥塞控制资源。

缓存与条件请求

缓存要区分“还新鲜”与“需要重新验证”。资源可以带版本标识 ETag,客户端携带条件请求,服务器在内容未变时返回 304,避免重传正文。

缓存键也影响正确性。若响应随用户身份或语言变化,却只按 URL 缓存,可能返回错误内容。HTTP 缓存规则是应用语义的一部分,不能只当作网络提速选项。

TLS 建立什么保证

TLS 握手协商密钥和算法,并按照所选认证方式验证对端。常见 HTTPS 中,客户端验证证书链和域名,确认所持公钥被授权用于目标身份;后续记录使用认证加密保护内容。

证书不是服务器私钥,也不是“这个网站永远可信”的证明。TLS 保护传输中的机密性与完整性,但服务器本身仍能读到明文。使用临时密钥交换的握手可提供前向安全,实际保证还依赖密钥管理和协议模式。

练习

  1. DNS 记录已经更新,旧服务器为什么仍可能收到请求?
  2. 为什么 HTTP/2 的多路复用不能完全消除 TCP 丢包造成的等待?
  3. 证书验证成功,能否证明服务器返回的数据在业务上正确?

上次更新: