StackSense ← 回到地图
系统基础 / NET

网络与 RPC

网络是后端工程师每天都在用、却很少真正读过 RFC 的一层。这个模块的目标不是把你训练成协议专家,而是让你能看懂抓包、能解释一次 HTTPS 请求发生了什么、能判断一个性能问题是出在握手、拥塞控制还是应用层。

网络是后端工程师每天都在用、却很少真正读过 RFC 的一层。这个模块的目标不是把你训练成协议专家,而是让你能看懂抓包、能解释一次 HTTPS 请求发生了什么、能判断一个性能问题是出在握手、拥塞控制还是应用层。

学完后你应该能回答

TCP / 传输层

  1. 为什么三次握手够了、两次不行?四次挥手中的 TIME_WAIT 存在的意义是什么?
  2. 一条新建的 TCP 连接从慢启动进入拥塞避免的临界点是什么?丢包时 Reno 和 CUBIC 的反应有何不同?
  3. BBR 和 CUBIC 的核心差异?为什么 BBR 更适合长肥管道,却在短连接主导的场景可能更差?
  4. Nagle 算法与 delayed ACK 组合会导致什么延迟 anti-pattern?TCP_NODELAY 什么时候该开、什么时候别开?
  5. MSS / MTU / Path MTU Discovery 的关系?MTU 1500 的链路叠加 VPN 后为什么会卡在 1400 多?
  6. 在 Wireshark 里如何一眼识别重传、乱序、零窗口这三种常见的 TCP 异常?
  7. Linux 的 tcp_wmem / tcp_rmem / tcp_mem 三层缓冲区怎么协作?高 BDP 链路上如何调?

HTTP / QUIC

  1. HTTP/2 的多路复用解决了 HTTP/1.1 的什么问题?为什么它仍然受 TCP 队头阻塞影响,而 HTTP/3 不会?
  2. QUIC 为什么建在 UDP 上而不是新建一个传输层协议?它如何实现连接迁移?
  3. 一次 curl https://example.com 从 DNS 查询到收到首字节,依次经过哪些系统调用和网络往返?
  4. HTTP/1.1 的 chunked、keep-alive、pipelining 分别解决什么问题?pipelining 为什么没有流行?
  5. HTTP/3 的 0-RTT resumption 和 TLS 1.3 0-RTT 有什么关系?应用层要怎么防 replay?

TLS / 加密

  1. TLS 1.3 相比 1.2 少了哪一轮 RTT?0-RTT 的安全代价是什么?
  2. mTLS 相比单向 TLS 多做了什么?service mesh 里 sidecar 自动注入 mTLS 的典型流程是什么?
  3. TLS 握手里 ECDHE、certificate、Finished 分别在做什么?PFS(前向安全)具体由哪一步保证?
  4. 证书吊销的 CRL / OCSP / OCSP stapling 路径分别有什么延迟 / 可用性问题?

RPC / 应用层

  1. gRPC 是如何利用 HTTP/2 的 stream 和 trailer 实现双向流和状态码的?
  2. HTTP retry 的幂等性:哪些方法天然幂等?为什么客户端无脑重试可能引发雪崩?
  3. gRPC 的 deadline 怎么穿透到所有下游?metadata / header / context 的传播机制是什么?
  4. 客户端负载均衡(lookaside / proxyless xDS)和经典 L4/L7 代理相比各有什么取舍?

内核网络 / 负载均衡

  1. Proxy protocol 解决的是什么问题?L4 负载均衡下真实客户端 IP 如何穿透到后端?
  2. ip_conntrack 表项打满的典型症状?什么场景适合干脆关掉 conntrack?
  3. Cilium / eBPF 替代 kube-proxy 相比 iptables / IPVS 在性能和可观测性上优势在哪?
  4. SO_REUSEPORT 和传统 bind 的区别?多进程监听同一端口时内核按什么策略分发?
  5. Linux 网卡的 RSS / RPS / RFS / XPS 分别在哪一层做流量分发?高 pps 场景怎么调?
  6. DPDK / XDP / AF_XDP 三条用户态收包路径的性能和编程模型差在哪?

核心概念

Lab

资料

工具