一、为什么网络需要分层
网络通信是一个复杂的系统工程。分层架构的核心思想是关注点分离,每一层只负责特定功能,层与层之间通过定义良好的接口交互。
分层架构类比理解
| 网络分层 | 快递类比 | 核心功能 |
|---|---|---|
| 应用层 | 快递单内容 | HTTP请求报文,定义数据格式 |
| 传输层 | 快递分拣中心 | TCP确保可靠送达,UDP快速传输 |
| 网络层 | 物流路线规划 | IP路由选择,跨网络寻址 |
| 数据链路层 | 货车运输 | 以太网帧传输,局域网通信 |
| 物理层 | 公路和轨道 | 光纤、电缆,比特流传输 |
二、TCP三次握手详解
TCP是面向连接的协议,通信前必须建立连接。三次握手的设计目的是防止历史重复连接初始化,同时同步双方的初始序列号。
握手流程
| 步骤 | 发送方 | 接收方 | 报文内容 | 状态变化 |
|---|---|---|---|---|
| 1 | 客户端 | 服务端 | SYN seq=x | 客户端进入SYN_SENT |
| 2 | 服务端 | 客户端 | SYN-ACK seq=y ack=x+1 | 服务端进入SYN_RCVD |
| 3 | 客户端 | 服务端 | ACK ack=y+1 | 双方进入ESTABLISHED |
为什么是三次?
- 两次不够:服务端无法确认客户端是否收到自己的SYN
- 四次多余:合并ACK和SYN更高效,减少网络往返
三、TCP vs UDP 对比
| 特性 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接 | 无连接 |
| 可靠性 | 可靠传输,保证到达 | 尽力而为,可能丢包 |
| 顺序性 | 保证数据顺序 | 不保证顺序 |
| 传输效率 | 较低(有握手、确认) | 较高(无额外开销) |
| 适用场景 | 网页、文件传输、邮件 | 视频直播、DNS、游戏 |
四、学习建议
- 使用Wireshark抓包分析真实网络流量,比看书更直观
- 理解TCP状态机(TIME_WAIT、CLOSE_WAIT等)对排查连接问题至关重要
- 从实际网络问题入手,结合工具逐步深入
