这个系列把 TCP/IP 相关的知识整理成了一条由浅入深的完整路径:从大家最熟悉的 HTTP 讲起,一路下探到 TCP 的连接建立、状态机、传输控制,最后落到 Linux 下的 I/O 多路复用与线上问题排查实战。全系列 23 篇,按发文时间顺序读即是推荐阅读顺序。
第一层:HTTP 入门(应用层)
先从最贴近日常开发的应用层协议开始,建立对「请求-响应」模型的整体认识:
- HTTP 前世今生:从 HTTP/0.9 到 HTTP/3:协议演进史,理解每个版本要解决的问题
- HTTP 状态码速查与解读:1xx~5xx 全家福,排查问题的第一线索
- GET 与 POST 的区别:经典面试题背后的本质差异
第二层:TCP 基础(传输层)
进入传输层,搞清 TCP 与 UDP 的分工,以及 TCP 协议本身的设计:
- TCP 与 UDP:传输层两大协议对比:协议头、特点、适用场景
- TCP 的那些事儿:协议头部与可靠传输:状态机、可靠传输的基石
- TCP KeepAlive 机制详解:连接保活的内核参数与实践
第三层:连接生命周期
TCP 最核心也最容易出错的部分——连接的建立与拆除:
- TCP 三次握手与四次挥手:最经典的必答题,38 张图逐步拆解
- 深入理解 TCP 握手与分手:序列号回绕、初始序列号、异常场景
- 客户端端口可以重复使用吗?:四元组与端口分配的内幕
- 拔掉网线后,TCP 连接还在吗?:连接到底由什么维持
- 服务端 sleep、客户端持续发数据会发生什么?:接收缓冲区与阻塞行为
第四层:状态专题(TIME_WAIT 与 CLOSE_WAIT)
挥手之后留下的两大著名状态,各自成体系:
- TIME_WAIT 状态详解:状态机的主动关闭方
- TCP 为什么需要 TIME_WAIT:存在的理由与代价
- 从一次线上经历谈 TIME_WAIT:真实案例与解法权衡
- CLOSE_WAIT 状态还能收到报文吗?:被动关闭方的源码级分析
- 服务端出现大量 CLOSE_WAIT 的排查思路:从现象到根因
第五层:传输控制
TCP 可靠传输与流量控制的机制核心:
- TCP 重传、滑动窗口、流量控制与拥塞控制:机制总览
- TCP 滑动窗口与拥塞控制图解:窗口如何滑动、四算法如何配合
- TCP 协议疑难杂症全景解析:23 个高频疑难问题集中答疑
第六层:I/O 多路复用与实战
从协议层转到 Linux 网络编程,最后以实战收尾:
- I/O 多路复用:select、poll 与 epoll(上):五种 I/O 模型与三大接口
- select、poll、epoll 的区别与对比:横向对比与选型
- select 函数源码简析:内核实现一探究竟
- 线上四台机器同一时间全部 OOM:一次排查实录:HttpClient 连接泄漏实战
怎么读这个系列
- 零基础:按顺序从头读,每层都是下一层的前置知识
- 有经验:直接跳第三、四层(连接与状态),这是面试和生产问题的重灾区
- 查问题:第五层的「疑难杂症全景」和第六层的「OOM 案例」当工具文用,遇到对应现象再回来精读对应篇目