这本书读下来和大学三年级时候学的那门「计算机网络」的内容大多相似,不过着重于性能方面,讲得浅显易懂。
带宽和延时
- 带宽问题容易解决,观察一下整个链路的瓶颈,多拉几条光纤就可以了。
- 延时问题不容易解决,物理定律确定了传输速度的上限是光速。静态文件可以通过 CDN 分发解决延时的问题,动态请求要从协议或者设计上优化。。
TCP
- TCP 三次握手增加了一次 RTT。
- TCP 每个新连接都需要经历慢启动的过程。
综合上面两个问题,尽量减少并复用 TCP 连接。
- TCP 的吞吐量由拥塞窗口(cwnd)的大小决定,带宽延迟积(BDP)是带宽 * 端到端延时,是在途未确认数据的最大数据量。
TLS
TLS 基于 TCP 协议为上层协议(HTTP,SMTP 等)提供了加密,身份验证,和完整性的保证。
- TLS 握手需要三个 RTT,分别为 TCP 握手,ClientHello 和交换证书。
- 如果使用 TLS 会话恢复,在后续的 TLS 连接可以复用之前的加密套件和密钥,整个 TLS 握手降低到两个 RTT。
- 如果使用上面提到的 TLS 会话恢复,服务器需要储存大量的 TLS 会话状态,浪费大量的内存且不利于水平拓展。类似 JWT 的做法,Session Ticket 将会话状态用服务器的密钥加密后存放到客户端中,这样只要负载均衡的服务器拥有相同的密钥,就可以复用 TLS 会话。