就绪 t=0
一次 HTTPS 请求,整台机器发生了什么?
看左侧:客户端内核结构(TCB、队列、缓冲) 看中间:网络拓扑与报文飞行 看右侧:服务端内核镜像

TCP 控制块 (client)

CLOSED

发送队列

Socket 缓冲区

网络拓扑

封装标尺

?%
真实载荷占帧的比例,调整 MTU 或 TCP 选项立即更新

请求时序

TCP 控制块 (server)

CLOSED

半/全连接队列

Socket 缓冲区 (server)

一个域名怎么变成一个 IP?
看递归树:从浏览器缓存到权威 DNS 看报文位域:12 字节 DNS 头逐位拆解 操作:清缓存、改 TTL、切协议,观察耗时变化
四级缓存命中 报文位域 压缩指针

递归解析树

DNS 报文头(12 字节)

QNAME 编码

缓存统计

包怎么一跳一跳走到对面?
看路由表:最长前缀匹配选出胜者 看逐跳转发:MAC 变但 IP 不变 看 NAT/分片/TTL/PMTUD:DF=1 + ICMP → 降 MSS

路由表 + 最长前缀匹配

目的网段网关接口度量

NAT 连接跟踪表

内网外网(映射)协议TTL

IP 头部位域

分片动画

为什么是三次握手、四次挥手?
看梯形图:真实 seq/ack/flags + 滑动窗口三指针实时移动 看 TCP 报头位域 + cwnd 实时曲线:每个事件的拥塞响应 看状态机:11 态迁移 + 连接队列,SYN Flood → SYN Cookie

握手/挥手梯形图

发送序列窗口

TCP 报头字段

TCP 状态机

cwnd 实时

CUBIC

连接队列

发多快?丢了怎么办?
看滑动窗口:SND.UNA/SND.NXT/SND.WND 三指针实时移动 看 cwnd 曲线:来自真实离散事件仿真,不是画出来的 看 RTO:SRTT/RTTVAR/RTO 每个 ACK 一次真实更新

滑动窗口

cwnd 曲线

CUBIC

RTO 面板

SACK 记分板

凭什么相信对面,密钥怎么来的?
看握手:1.2 (2-RTT) vs 1.3 (1-RTT) 同屏对照 看密钥树:HKDF 每一级真实 label 看证书链:叶 → 中间 CA → 根,逐级验签

握手梯形图

密钥推导树

证书链

HTTP 1.1 / 2 / 3 到底差在哪?
看三协议并排:队头阻塞肉眼可见 看 HPACK:第二个请求头只剩1字节 看缓存:304 从哪来

三协议对比

H2 帧

HPACK

静态表
动态表

缓存决策

数据包在内核里走了什么路?
看 RX 路径:NIC → skb → socket buffer 看 SKB 链:frag、clone、copy 的区别 看 zero-copy:sendfile/splice 少了哪些拷贝

RX 路径

Ring Buffer

SKB 链

epoll

Zero-copy

这个包里到底有什么?
看包列表:过滤任意字段 看十六进制:字节 ↔ 字段高亮对应 看解码条:逐层协议折叠展开

包列表

十六进制视图

解码条

图例