传输层职责
传输层在 IP 之上提供 端口 multiplex 与 端到端语义。TCP 可靠、有序、面向连接;UDP 无连接、尽力交付、报文边界保留。
后端面试几乎必问握手挥手与 粘包半包(TCP 字节流无边界,需 length prefix 或 delimiter)。
TCP 三次握手
半连接队列 / SYN flood:SYN cookie、限流。为何不能两次:无法确认客户端收能力,可能浪费服务端资源。
四次挥手
TIME_WAIT 保证迟到的报文不会污染新连接;大量短连接需 SO_REUSEADDR、连接池。
可靠机制
- 序号与 ACK: cumulative acknowledgment。
- 重传:超时 RTO、快速重传(3 duplicate ACK)。
- 滑动窗口:流量控制,接收方 rwnd。
- 拥塞控制:慢启动、拥塞避免、快恢复;cwnd 与 ssthresh。
UDP 特点
无连接、无重传、头部 8 字节轻量。QUIC 在 UDP 上实现可靠 + 多路复用(HTTP/3)。
选型:要可靠有序 → TCP(或 QUIC)
要广播/组播、实时 → UDP
与工程实践
- Go
net.Dial("tcp")、连接池、Keep-Alive 减少握手。 - 粘包:定长头 + body length;Protobuf/JSON line-delimited。
/chapters/computer-network 有交互演示,配合 week04-http-https 形成应用层闭环。
面试追问链
TCP 与 HTTP 关系?HTTP 长连接复用 TCP。HTTPS 在 TCP 之上 TLS。下一篇讲 HTTP;DNS 见 week04-dns-load-balance。
实战巩固与面试表达
本篇属于 8 周冲刺 week04-tcp-udp 主题。复习时先闭卷回答 frontmatter 中三张 flashcard,再展开口述两个「为什么」:为什么这种方案能 work、边界失败时如何降级。与相邻章节对照:算法篇强调复杂度与模板,Go 篇强调工程默认写法,中间件篇强调线上故障案例。
动手与自检清单
用 25 分钟限时做 1 道相关练习题或画出一张架构/数据结构示意图;用 5 分钟写 STAR 片段说明你在项目里是否用过类似技术。记录 3 个面试追问及你的标准答法,存入 /zh/notebook/master-plan 笔记。若某点不熟,回到对应 /chapters 交互 Lab 重新走一遍流程,比死记卡片更有效。
易错点提醒
避免只背名词不会画图;避免只说优点不谈 trade-off(性能、一致性、运维成本至少提一项);避免把学习 Demo 说成百万 QPS 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。
自检
画握手挥手时序图;解释 SYN_SENT、ESTABLISHED、CLOSE_WAIT 含义;说明为何「两次 ACK 丢包」会重传。