01 · 网络分层与 TCP / UDP 职责
网络分层是"把复杂问题切成能独立替换的层"。本篇讲清每一层解决什么问题、前后端各自在哪一层打交道,以及 TCP 与 UDP 的本质差别——"可靠 vs 快"到底换来了什么。
速览卡
| 项 | 内容 |
|---|---|
| 一句话定位 | 建立网络分层心智,理解前后端各自站哪一层 |
| 核心内容 | 五层模型、每层解决什么、TCP vs UDP、端口/套接字 |
| 读完能回答 | 为什么丢包重传是 TCP 的事不是 HTTP 的事?UDP 什么时候反而更好? |
| 相关板块 | N02 TCP 握手与挥手 | A04 浏览器与网络 | N12 IO 模型 |
一、五层模型:每层只解决一件事
| 层 | 例子 | 解决什么 | 前后端在哪打交道 |
|---|---|---|---|
| 应用层 | HTTP/HTTPS、DNS、WebSocket | 业务协议 | 前后端的主要战场 |
| 传输层 | TCP、UDP | 端到端的可靠/不可靠传输 | 后端常关心 |
| 网络层 | IP | 跨网络寻址与路由 | 一般不管 |
| 数据链路层 | 以太网/WiFi | 同一链路内的帧传输 | 不管 |
| 物理层 | 网线/信号 | 比特传输 | 不管 |
关键认知:HTTP 是"应用层协议",它假设传输层已经可靠。 丢包重传、乱序重组是 TCP 的事;HTTP 不关心。这也是为什么"一次请求慢"要往 TCP 层找原因。
二、TCP 与 UDP:可靠 vs 快,不是"谁更好"
| 维度 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(先握手) | 无连接(发就完了) |
| 可靠 | 确认重传、有序 | 不保证 |
| 头部 | 20 字节起 | 8 字节 |
| 典型场景 | HTTP/HTTPS、文件传输 | 视频/语音/游戏实时、DNS 查询 |
| 代价 | 握手/重传/拥塞控制带来延迟 | 可能丢包、乱序 |
判断框架:数据丢了要重来 → TCP;数据过了就作废(实时音视频、位置) → UDP。 视频通话用 UDP 不是因为"不在乎",而是"晚了就没用"——重传一个 200ms 前的帧没意义。
三、端口与套接字:应用怎么被找到
text
IP 找到"哪台机器"
端口 找到"机器上的哪个进程"
套接字 一条"IP:端口 ↔ IP:端口"的连接两端常见端口:
| 端口 | 服务 |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 53 | DNS |
| 22 | SSH |
| 3306 | MySQL |
| 6379 | Redis |
四、前后端分别在哪些层
| 关注点 | 前端 | 后端 |
|---|---|---|
| HTTP 语义(方法/状态码/头) | ✅ 天天见 | ✅ 设计接口 |
| TLS 证书 | ✅ 报错常见(NET::ERR_CERT_...) | ✅ 配置与校验 |
| TCP 握手/TIME_WAIT | 不直接见 | ✅ 连接池/高并发时关心 |
| DNS/CDN | 现象(慢、解析失败) | ✅ 设计 |
| IP/路由 | 几乎不管 | 部署时关心 |
前端看到的大多数"网络问题"是应用层表现;排障往往要往下追,这就是 N11 抓包 的价值。
五、自检清单
- [ ] 能画出五层模型,说出每层解决什么
- [ ] 知道 HTTP 不负责可靠性,重传是 TCP 的事
- [ ] 能说清 TCP/UDP 各自的代价与典型场景
- [ ] 知道 IP/端口/套接字三者关系
- [ ] 知道前后端各自主要在哪层打交道
六、常见误区
| 误区 | 事实 |
|---|---|
| "HTTP 会重传" | 重传是 TCP 的职责,HTTP 假设传输可靠 |
| "UDP 比 TCP 落后" | UDP 适合"过了就没用"的实时数据 |
| "慢就是后端慢" | 可能卡在 TCP 握手、TLS、DNS、拥塞 |
| "端口就是协议" | 端口只定位进程,用哪个协议取决于应用 |
| "分层越多越慢" | 分层让每层可独立优化与替换 |
七、动手练习
练习 A:追一次"页面加载慢"
打开浏览器的 Network 面板,看一次资源加载的 Timing 分段(DNS/TCP/TLS/下载),说出每个阶段属于哪一层。
练习 B:判断协议
给五个场景选 TCP 还是 UDP:网页浏览、在线会议、DNS 查询、文件上传、多人游戏位置同步。说出理由。
练习 C:讲给前端同事听
用一句话向不懂网络的前端解释"为什么直播卡顿不靠重传解决"。
相关文档
本区
- 02 · TCP 握手与挥手 —— 可靠性的具体机制
- 04 · HTTP 深入 —— 应用层协议细节
- 12 · IO 模型 —— 服务端怎么高效处理连接
其他域
- 04 · 浏览器与网络 —— 浏览器侧表现
- N · 网络计划