客户端与服务器:一次请求的旅程(HTTP、DNS)
这一集讲了什么
在浏览器里敲下网址,到页面开始显示,请求要依次经过六站:用 DNS 把域名换成 IP,用 TCP 和服务器握手,用 TLS 商量加密,然后才是发请求、服务器干活、返回结果。这一集里的毫秒数是为了演示取的典型值,真实的数字会随网络远近和服务器而变,但结构是一样的:前三站和“干活”本身无关,却常常占掉大头。
于是有两个最常见的优化:把 DNS 结果缓存起来,以及复用已经建立的连接,让握手和加密只做一次。再让任意一站变慢,总时间会同样地增加,这就是为什么优化前要先问:时间花在哪一站。
先修
没有先修,可以直接看。
现实里用在哪
- 浏览器的预解析和预连接 Chrome 等浏览器会在你点链接之前,先把页面里的域名解析好、把连接建好,就是在偷前三站的时间。
- 公共 DNS(如 1.1.1.1、8.8.8.8) 它们替千万用户缓存域名的解析结果,所以大多数查询不用一路问到源头。
- HTTP/2 和 HTTP/3 HTTP/2 让一条连接同时跑多个请求;HTTP/3 把传输握手和加密握手合在一起,进一步缩短前面几站。
接着看
- API 设计:REST 与 RPC 即将推出
- 负载均衡:流量怎么分给多台机器 即将推出
- 缓存与 CDN:命中率和新鲜度的取舍 即将推出
第 1 集
本集是《系统设计》系列的第 1 集(计划共 29 集)。