浅聊“没有 TLS 会怎样”

0 阅读4分钟

计算机网络基础与移动开发中的 TLS

本文核心说明:没有 TLS 会怎样既然 TCP 已建连为何仍需要 TLS


问题结论
没有 TLS 会怎样?明文 HTTP 易被窃听与篡改;无法可靠验证对端是否为预期服务器,MITM 风险高。
TCP 三次握手验证服务端身份吗?不验证「网站/服务身份」;只建立传输层会话,不涉证书与加密身份。
TCP 已经连上了,为什么还需要 TLS?TCP 只保证传输语义(可靠、有序);身份、保密、完整性由 TLS 在 TCP 之上提供;二者解决不同层面的问题。

一、计算机网络入门:和「分层」打交道

1.1 为什么谈「层」

网络协议常被画成栈状:上层依赖下层提供的能力,每一层只解决自己的问题。常见两套说法:

模型分层(自顶向下)备注
TCP/IP 四层(工程里最常用)应用层 → 传输层 → 网际层 → 网络接口层与实现、排障最贴近
OSI 七层(教学)应用、表示、会话、传输、网络、数据链路、物理概念更细,可与 TCP/IP 对照理解

对移动端开发,最常打交道的是:应用层(HTTP 等)传输层(TCP/UDP)、以及「下面能通」背后的 IP 与路由

1.2 各层在做什么(极简)

  • 应用层:进程之间的「业务协议」——HTTP、HTTPS、DNS、FTP、SMTP 等;关心 URL、方法、Header、Body。
  • 传输层端到端——用 端口号 把数据交给主机上的哪个应用;TCP 提供可靠有序字节流,UDP 提供尽力交付。
  • 网际层(IP)主机到主机——寻址与路由(IPv4/IPv6);不负责可靠传输。
  • 链路层及以下:同一链路/局域网上的帧传输(以太网、Wi‑Fi 等)。

HTTPS 不是和 TCP「并列」的另一层协议,而是:HTTP 运行在 TLS 之上,TLS 再运行在 TCP 之上HTTP over TLS over TCP)。


二、IP、端口与「谁在和谁说话」

  • IP 地址:标识网络中的一台主机(或一个接口)。
  • 端口:标识主机上的应用/服务(逻辑概念,如 443 常给 HTTPS)。
  • Socket:常指 (IP, 端口) 这一对端点;「建立 TCP 连接」即两端点之间形成一条逻辑管道

三、TCP:可靠字节流与三次握手

3.1 TCP 提供什么

在 IP 之上提供:面向连接、有序、可靠的字节流(确认、重传、拥塞控制等)。适合 HTTP、HTTPS、WebSocket(底层也是 TCP)等需要完整、按序交付的场景。

3.2 三次握手在验证「身份」吗?

不验证「你是不是 example.com」这种身份。

三次握手(SYN → SYN-ACK → ACK)完成的是:

  • 双方同步初始序列号,协商出可传输的 TCP 状态;
  • 确认「对端有一个进程在监听该端口、且愿意建立连接」。

既不校验 TLS 证书,也不解决「对端是不是你信任的那台服务器」——它只保证在当前 IP:端口上有一条可用的 TCP 会话。若链路上有攻击者,只要能把流量引到自己机器上,TCP 照样能「握手成功」。


四、没有 TLS(仅用 HTTP)会怎样?

在「已建立 TCP、但不用 TLS」的典型场景(明文 HTTP)下:

  1. 无保密性:路径上任意可见位置的设备(恶意热点、运营商设备、局域网嗅探等)可能读到请求/响应中的密码、Token、隐私内容。
  2. 无完整性保证(对 HTTP 负载而言):攻击者可篡改页面或 API 响应而用户难以察觉(除非应用层再做签名,且密钥分发仍是难题)。
  3. 无强身份绑定:客户端无法密码学地证明「我正在和真正的 api.example.com 对话」;容易遭受 中间人(MITM)——攻击者分别与客户端、真实服务器各建一条 TCP,在中间解密/再加密或篡改明文。

因此:TCP 解决「连上、传得对」;TLS 解决「跟谁连、别人能不能读/改」


五、TLS 在 TCP 之后补上了什么?

顺序是:DNS(常为 UDP)→ TCP 建连 → TLS 握手 → HTTP 或 WebSocket 等应用数据

TLS 握手在 TCP 已连通之后进行,主要完成:

  1. 身份:通过 X.509 证书链等机制,让客户端验证服务端身份(及可选的客户端证书双向认证)。
  2. 密钥协商:生成仅会话双方知道的密钥,用于后续对称加密。
  3. 算法与参数:协商加密套件、协议版本等。

TLS 1.3 常见特点:更少往返、更早加密、废弃弱算法。


六、HTTPS、证书与移动开发中的库

  • HTTPS = HTTP + TLS。证书校验用于防 MITM,并在可信对端上提供加密通道。
  • AFNetworkingAFHTTPSessionManager 配合 AFSecurityPolicy(含 SSL Pinning 等策略)。
  • AlamofireServerTrustManager 等,表达「信任谁、是否 Pin」。
  • Reachability(如 AFNetworkReachabilityManager / NWPathMonitor)只反映链路是否可用不能替代 TLS 证书校验。

七、WebSocket、UDP、DNS(对照)

话题要点
WebSocket常由 HTTP(S) Upgrade 建立,之后在同一条 TCP 上双向传帧;wss:// 即 WebSocket over TLS。
UDP无连接、不保证顺序与到达;DNS、部分实时业务、QUIC/HTTP3 会用到。
DNS域名解析为 IP;多数由系统代劳,排障时需会看解析是否异常。