一次打开网页的全旅程
在地址栏敲下 https://note.example.com 回车,半秒后页面出来。这半秒里,一个请求把网络栈从上到下又从下到上走了两遍:
// 一次 HTTPS 请求的完整旅程(括号里是典型耗时)
// 1. DNS 解析 note.example.com → 203.0.113.10 (几十 ms,命中缓存就近乎为 0)
// 2. TCP 三次握手 SYN → SYN+ACK → ACK (1 个 RTT)
// 3. TLS 握手 交换密钥、验证证书 (TLS1.2 要 2 个 RTT,1.3 压到 1 个)
// 4. 发送请求 GET / + 请求头 (几乎为 0)
// 5. 服务端处理 CDN → 网关 → 应用 → DB (取决于你)
// 6. 接收渲染 HTML → CSS/JS → 首屏 (浏览器的事)注意一个残酷的事实:业务代码还没开始跑,前面三步已经花掉了一两个 RTT。优化网络,先优化这几步——这也是后面长连接复用、TLS 会话恢复、CDN 之所以值钱的原因。
分层不是玄学,是分工
课本上的七层模型背了就忘,实际有用的记住四层就够。每层只回答一个问题,出问题时按层剥,比瞎猜快十倍:
| 层级 | 回答的问题 | 代表协议 | 排错工具 |
|---|---|---|---|
| 链路层 | 这一跳怎么交给邻居 | 以太网 / ARP | arp -a |
| 网络层 | 整体路径怎么走 | IP / ICMP | ping / traceroute |
| 传输层 | 连接可靠吗、丢了吗 | TCP / UDP | tcpdump / ss |
| 应用层 | 内容对不对、语义对不对 | HTTP / DNS | curl -v |
排查口诀:ping 得通是网络层健康,端口不通看传输层,能连上但 500 看应用层。层层递进,每层都有对应的工具,这个系列会把工具一个一个用起来。
为什么后端工程师必须懂这些
三条理由,每条都疼过:第一,线上排错——502、间歇超时、大量 TIME_WAIT,这些问题的答案不在应用代码里,在 TCP 状态机里;第二,性能优化——接口快不快,一半取决于连接复用、拥塞窗口这些你从没配置过的东西;第三,看懂基础设施——Nginx、CDN、K8s Service、服务网格,全是网络层和传输层知识的组合应用。之前写的限流、缓存、网关系列,底层都是这套协议在支撑。
这个系列的路线图
二十篇分四段:寻址与连接(IP、ARP、三次握手、四次挥手)、传输的精髓(滑动窗口、拥塞控制、Nagle)、应用层演进(HTTP/1.1 到 HTTP/2、TLS、证书、DNS、CDN)、实战排错(tcpdump、Wireshark、故障手册、收官地图)。每篇都带着真实命令和抓包输出——网络是用来抓包看的,不是用来背的。下一篇从最底层的问题讲起:一台机器怎么在茫茫网络里找到另一台。
评论 (0)