第二章:网络分层模型(只讲你需要的)
网络世界很复杂,但聪明的前辈们把它分成了好几层,每层只管自己的事。
你不需要全部掌握——我们只挑和 AI 开发最相关的两层讲。
2.1 先讲个故事:一次快递的旅程
假设你要从北京寄一本书给上海的朋友,整个过程是这样的:
你(发件人)做的事:
第 1 步:把书装进包裹里,写一张纸条"这是你要的 Python 书"
→ 对应【应用层】:准备要传的内容
第 2 步:填快递单,写上单号、收件人、发件人
→ 对应【传输层】:标记发送方和接收方的端口,保证送达
第 3 步:写上收件地址"上海市浦东新区 xxx 路 xxx 号"
→ 对应【网络层】:确定目标 IP 地址和路由
第 4 步:把包裹交给快递员,快递员开车运输
→ 对应【链路层】:物理传输
你朋友(收件人)做的事:
完全反过来——拆包裹、核对快递单、拿出书、读纸条。
这就是网络分层的核心思想:每一层各司其职,层层配合。
2.2 网络四层模型
互联网实际使用的是 TCP/IP 四层模型(教科书上的 OSI 七层模型了解即可,实际用不到):
┌─────────────────────────────────────────────────┐
│ │
│ 应用层(Application Layer) │
│ → 你要发什么内容?用什么格式? │
│ → HTTP、HTTPS、DNS、FTP ... │
│ │
├─────────────────────────────────────────────────┤
│ │
│ 传输层(Transport Layer) │
│ → 数据怎么可靠地从 A 送到 B? │
│ → TCP、UDP │
│ │
├─────────────────────────────────────────────────┤
│ │
│ 网络层(Network Layer) │
│ → 数据走哪条路?目的地在哪? │
│ → IP │
│ │
├─────────────────────────────────────────────────┤
│ │
│ 链路层(Link Layer) │
│ → 数据怎么在物理媒介上传输? │
│ → 以太网、Wi-Fi ... │
│ │
└─────────────────────────────────────────────────┘
用一张对照表加深理解
| 层级 | 快递类比 | 网络对应 | 关心的问题 | 你需要了解的程度 |
|---|---|---|---|---|
| 应用层 | 包裹里的物品和纸条 | HTTP | 传什么数据、什么格式 | ⭐⭐⭐ 必须掌握 |
| 传输层 | 快递单号 + 签收确认 | TCP | 数据可靠送达 | ⭐⭐ 需要理解 |
| 网络层 | 收件地址 + 路线规划 | IP | 数据往哪走 | ⭐ 了解即可 |
| 链路层 | 快递员 + 运输车辆 | 以太网/Wi-Fi | 物理传输 | 不用管 |
2.3 数据是怎么”套娃”的?
当你发送一个 HTTP 请求时,数据会像套娃一样被层层包装:
你的数据("你好,请帮我翻译这段话")
│
▼ 应用层包装
┌──────────────────────────────┐
│ HTTP 头 │ 你的数据 │ ← HTTP 报文
└──────────────────────────────┘
│
▼ 传输层包装
┌──────────────────────────────────────┐
│ TCP 头 │ HTTP 头 │ 你的数据 │ ← TCP 数据段
└──────────────────────────────────────┘
│
▼ 网络层包装
┌──────────────────────────────────────────────┐
│ IP 头 │ TCP 头 │ HTTP 头 │ 你的数据 │ ← IP 数据包
└──────────────────────────────────────────────┘
│
▼ 链路层包装
┌──────────────────────────────────────────────────────┐
│ 帧头 │ IP 头 │ TCP 头 │ HTTP 头 │ 你的数据 │ 帧尾 │ ← 数据帧
└──────────────────────────────────────────────────────┘
到了接收方,再一层一层拆开,最终拿到你的原始数据。
这个过程叫封装(Encapsulation)和解封装(Decapsulation)。
你不需要手动做这些,操作系统和网络库会帮你搞定。但理解这个过程,有助于你排查问题时知道”错在哪一层”。
2.4 本教程只聚焦两层
在后续的学习中,我们只深入两个协议:
TCP(传输层)
职责:保证数据可靠传输
特点:建立连接 → 传输数据 → 断开连接
类比:打电话——先拨号接通,才能通话
HTTP(应用层)
职责:定义请求和响应的格式
特点:一问一答(请求-响应模式)
类比:写信——按固定格式写信封和信纸
它们的关系:
HTTP 是信的内容和格式
TCP 是把信可靠送到对方手里的快递服务
没有 TCP,HTTP 的内容送不出去
没有 HTTP,TCP 不知道要送什么内容
一句话记住:HTTP 负责”说什么”,TCP 负责”说到、说全”。
2.5 常见疑问解答
Q:UDP 是什么?和 TCP 有什么区别?
UDP 也是传输层协议,但它不保证可靠传输——发出去就不管了,不确认、不重传。
| 特性 | TCP | UDP |
|---|---|---|
| 可靠性 | 保证送达 | 不保证 |
| 速度 | 较慢(有确认开销) | 较快(没有确认) |
| 应用场景 | 网页、API 调用 | 视频直播、游戏 |
AI 应用开发中,调用 API 都用的 TCP(因为 HTTP 基于 TCP),所以我们重点学 TCP。
Q:DNS 是什么?
DNS(Domain Name System)是域名系统,负责把域名翻译成 IP 地址:
api.openai.com → DNS 查询 → 104.18.7.192
就像通讯录——你记住名字(域名),通讯录帮你查电话号码(IP 地址)。
Q:OSI 七层模型要学吗?
不需要。面试可能会问,但实际开发中用的是 TCP/IP 四层模型。如果以后需要,再去了解即可。
本章小结
- 网络通信被分成了多层,每层各司其职
- TCP/IP 四层模型:应用层 → 传输层 → 网络层 → 链路层
- 数据发送时层层包装(封装),接收时层层拆开(解封装)
- 我们只需重点学习 TCP(传输层) 和 HTTP(应用层)
- HTTP 负责”说什么”,TCP 负责”说到、说全”
下一章,我们深入 TCP 协议——看看它是怎么保证数据可靠传输的。
← 上一章:为什么要学网络协议 | 下一章:TCP 协议 →