主题
第一章 分层与端到端:网络的总体设计
1. 为什么网络课必须从"分层"开始
很多人复习计算机网络,第一件事就是背"OSI 七层:物理、数据链路、网络、传输、会话、表示、应用",背完就去做题,结果一遇到"交换机工作在哪一层""TCP 和 IP 谁负责可靠性"这类题就翻车。原因很简单:只记住了层的名字,没理解每一层"为什么存在"、它"承诺解决什么问题"。
先退一步想:把一段文字从北京的一台电脑发到上海的一台手机,中间要解决多少问题?
- 文字要变成电信号或光信号,才能在线缆里跑。
- 信号在传输中可能出错,要能发现错误。
- 北京到上海要经过很多台中间设备,每一步该往哪走?
- 对方可能同时开着微信、浏览器、网易云,数据到了手机,该交给哪个程序?
- 数据可能丢、可能乱序,谁来补发、谁来排序?
- 双方的程序要约定数据格式,比如"这是一个网页请求"。
如果让一个程序把这六件事全包了,这个程序会庞大到没人能维护,而且换一种线缆、换一种应用都得推倒重来。网络设计者的答案是:把大问题切成一叠小问题,每层只解决一类问题,层与层之间只通过固定接口打交道。这就是分层。
分层带来两个决定性的好处:
- 复杂性分解。每一层只面对一个规模可控的子问题,实现者不必了解其他层的细节。写浏览器的人不需要懂光纤怎么调制信号。
- 各层独立演化。只要层间接口不变,某一层的技术可以整体替换而不影响其他层。WiFi 取代网线、HTTP/3 取代 HTTP/1.1,上下层几乎无感。这就像换手机壳不用换手机。
一句大白话点透:分层的本质是"分工加合同"——每层对上层承诺一种服务,怎么兑现承诺是自己的私事。
2. OSI 七层与 TCP/IP 四层:两套模型怎么对照
考试中两套模型都会考。OSI(开放系统互连参考模型)是国际标准组织提出的"理论蓝图",分七层,概念完整但从未大规模落地;TCP/IP 模型是互联网实际使用的"工程实践",通常划成四层。它们的对应关系如下:
| OSI 七层 | TCP/IP 四层 | 核心职责(白话) | 典型协议 | 典型设备 | 数据单元 PDU |
|---|---|---|---|---|---|
| 应用层 | 应用层 | 程序之间说什么、怎么说 | HTTP、DNS、FTP、SMTP | 网关(应用层网关) | 报文 |
| 表示层 | 应用层 | 数据格式转换、加密压缩 | JPEG、TLS 的部分职责 | — | 报文 |
| 会话层 | 应用层 | 建立、管理会话 | RPC 会话管理 | — | 报文 |
| 传输层 | 传输层 | 进程到进程、可靠性 | TCP、UDP | — | 段(TCP)/ 数据报(UDP) |
| 网络层 | 网际层 | 跨网络寻址与选路 | IP、ICMP、ARP、OSPF | 路由器 | 分组 / 包 |
| 数据链路层 | 网络接口层 | 同一链路内成帧、差错检测 | 以太网、PPP、WiFi | 交换机、网桥 | 帧 |
| 物理层 | 网络接口层 | 比特流变成物理信号 | RJ45、光纤规范 | 集线器、中继器 | 比特 |
三个必须记牢的点:
- PDU(协议数据单元)就是"每一层眼中的数据长什么样":应用层叫报文,传输层叫段,网络层叫分组(包),链路层叫帧,物理层叫比特。考试常直接考"帧是哪一层的数据单元"。
- 设备与层的绑定关系是高频考点:集线器在物理层(只会无脑复制信号),交换机在数据链路层(认 MAC 地址),路由器在网络层(认 IP 地址)。
- OSI 的会话层、表示层在 TCP/IP 里被并入应用层——实践证明这两层单独存在的必要性不大,相关功能由应用程序自己处理。
还有一种常见的"五层教学模型"(物理、链路、网络、传输、应用),是教材为了讲课方便把 TCP/IP 的网络接口层拆成两层。做题时以题目采用的模型为准。
