Skip to content
阅读进度

TCP/IP、DNS、TLS、HTTP,怎样串成一次请求? ​

返回 架构与 SDK 目录

标准回答 ​

可以把网络分层理解:DNS 帮你找地址,IP 负责寻址和转发,TCP 提供可靠有序的字节流,TLS 在其上保护连接,HTTP 规定请求和响应怎么表达。这里描述常见的 HTTPS over TCP;HTTP/3 使用 QUIC。

  • TCP 有序传递字节,不替应用划分业务消息边界;自定义协议需要长度、分隔或明确编码。
  • TCP 连接建立不等于业务可用,也不保证请求已经被服务端执行。
  • 复用连接时可能省掉 DNS、建连和握手阶段,比较性能要区分首次连接与复用。

通俗例子 ​

车机加载天气超时,可能是域名没解析出来,也可能 TCP 连不上、TLS 证书验证失败,或者服务器迟迟没返回。把各阶段耗时拆开,才能知道该查网络、证书还是后端。

深入解释 ​

**每一层交付什么:**DNS 把域名解析为地址;IP 负责寻址转发;TCP 提供可靠有序的字节流;TLS 保护连接;HTTP 再定义方法、状态和消息含义。它们是分工关系。

**为什么会有粘包的说法:**TCP 没有“这次 read 恰好对应一条业务消息”的承诺,一次读取可能拿到半条或多条。自定义协议需要长度、分隔符等边界,不能按读取次数数消息。

易混淆点 ​

把所有网络失败都叫“HTTP 超时”,会漏掉 HTTP 之前就失败的情况。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。