我们已经习惯各种 App 带来的便利:聊天、订外卖、叫车、刷抖音。其实看是简单的操作比如打开一个网站,发送一个表情,都涉及大量网络请求。完成一次网络请求其实也挺难的,我相信所有用户量大的 App 一定都做了很多应用层面的网络优化。

网络请求流程

先看一下一个网络请求需要经历哪些流程,现在绝大多数的网站 / App 都是 https, 所以这里只描述 https 请求的流程。
首先是域名解析,通过域名查询对应的 host IP 地址;然后就是 TCP 连接这个 IP 地址;最后是 TLS 握手建立安全的数据通道,而后就可以收发数据了。
看上去整个流通也挺简单的,但是这里面每一步都有可能出现问题。

DNS

  • 运营商劫持
  • 域名污染
  • 本地配置 host
  • DNS 服务配置有问题

TCP

  • 防火墙限制

TLS

  • SSL Inspector
  • 自签名证书
  • 抓包工具
  • 代理服务器

Proxy

配置

  • PAC

认证

  • BASIC
  • Digest
  • NTLM
  • Kerberos