连载中 1/20

网络开篇:从敲下回车到页面打开,中间发生了什么

2026-10-01 · 32 阅读 · 0 评论 · 0 赞

一次打开网页的全旅程

在地址栏敲下 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 之所以值钱的原因。

分层不是玄学,是分工

课本上的七层模型背了就忘,实际有用的记住四层就够。每层只回答一个问题,出问题时按层剥,比瞎猜快十倍:

层级回答的问题代表协议排错工具
链路层这一跳怎么交给邻居以太网 / ARParp -a
网络层整体路径怎么走IP / ICMPping / traceroute
传输层连接可靠吗、丢了吗TCP / UDPtcpdump / ss
应用层内容对不对、语义对不对HTTP / DNScurl -v

排查口诀:ping 得通是网络层健康,端口不通看传输层,能连上但 500 看应用层。层层递进,每层都有对应的工具,这个系列会把工具一个一个用起来。

为什么后端工程师必须懂这些

三条理由,每条都疼过:第一,线上排错——502、间歇超时、大量 TIME_WAIT,这些问题的答案不在应用代码里,在 TCP 状态机里;第二,性能优化——接口快不快,一半取决于连接复用、拥塞窗口这些你从没配置过的东西;第三,看懂基础设施——Nginx、CDN、K8s Service、服务网格,全是网络层和传输层知识的组合应用。之前写的限流、缓存、网关系列,底层都是这套协议在支撑。

这个系列的路线图

二十篇分四段:寻址与连接(IP、ARP、三次握手、四次挥手)、传输的精髓(滑动窗口、拥塞控制、Nagle)、应用层演进(HTTP/1.1 到 HTTP/2、TLS、证书、DNS、CDN)、实战排错(tcpdump、Wireshark、故障手册、收官地图)。每篇都带着真实命令和抓包输出——网络是用来抓包看的,不是用来背的。下一篇从最底层的问题讲起:一台机器怎么在茫茫网络里找到另一台。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#网络基础#分层模型#HTTP请求#TCP握手#系列开篇

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10100 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9872 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9293 阅读 · 21 评论 · 287 赞