NET-01 网络体系结构
01 · 网络体系结构(Network Architecture)
📅 预计 60 分钟 | ⭐ 本章主题:把"网络"拆成一摞分工明确的层
1.0 先给直觉:网络像一套跨国邮政系统
你给国外朋友寄一个包裹,整个过程不只有一个环节:你在信封上写地址 → 邮局盖邮戳分拣 → 火车/飞机运输 → 对方城市邮局再分拣 → 快递员送上门。任何一个环节都只关心自己那一层的活:你只管写信和写地址,运输队只管把包裹从 A 城运到 B 城,快递员只管认门牌号。
计算机网络也是一样。两台电脑通信,中间涉及接口、电线、寻址、差错校验、数据打包、应用格式等一大堆事。如果让每个程序员都自己处理所有环节,通信会乱成一团。于是人们发明了一个办法:分层——把整个通信过程拆成若干层,每层只干自己的活,层与层之间靠固定的接口衔接。
本章是整门课的骨架。后面每一章(物理层、链路层、网络层、传输层)都是在填这个框架里的某一层。先把骨架立起来,后面的内容就有地方挂了。
1.1 为什么要分层 ⭐
分层 = 把大问题切成小问题,再逐层解决
想象一个快递公司的组织架构:收件部、分拣部、运输部、派件部。每个部门只对"上一部门给的件 + 下一部门要的件"负责,不需要知道其他部门内部怎么运转。
分层的直接好处,总结成四句话:
- 各层独立:某层实现改动(比如换一种传输介质),只要接口不变,其他层不用动。
- 每层只管一件事:层内只需考虑本层的协议,问题简单、好实现。
- 灵活组合:每一层可以"插拔"不同的实现,比如传输层既可以用 TCP 也可以用 UDP,网络层不变。
- 可追踪:出现问题时,可以逐层排查,定位在哪一层出的错(排查工具
ping、traceroute就是"逐层探测")。
💡 一句话记分层:分层的本质是"每一层都认为,对面那台机器跟自己是直接相连的"——中间那些绕路、转换、差错,都由下面的层悄悄处理掉了。
⚠️ 常见错误
- 把"分层"理解成物理隔离:分层只是逻辑上的职责划分,不是真的把网络拆成几根线。
- 以为层数越多越好:分层是为了降低复杂度,层过多反而增加开销(每层都要加头、都要处理)。OSI 七层是"参考模型",现实中很少完整实现。
1.2 OSI 七层模型 ⭐⭐⭐
七个各司其职的部门
OSI(Open Systems Interconnection,开放系统互联)参考模型由国际标准化组织 ISO 提出,把网络通信分成七层,从下到上是:
| 层号 | 名称 | 英文 | 一句话职责 | 典型协议/设备 |
|---|---|---|---|---|
| 7 | 应用层 | Application | 为用户提供网络服务接口 | HTTP、FTP、DNS、SMTP |
| 6 | 表示层 | Presentation | 数据格式转换、加密、压缩 | JPEG、ASCII 转换 |
| 5 | 会话层 | Session | 建立、管理、终止会话 | 登录会话、断点续传 |
| 4 | 传输层 | Transport | 端到端可靠传输、端口 | TCP、UDP |
| 3 | 网络层 | Network | 寻址与路由(跨网转发) | IP、路由器 |
| 2 | 数据链路层 | Data Link | 相邻节点间成帧、差错控制 | 以太网、交换机 |
| 1 | 物理层 | Physical | 在介质上传送原始比特流 | 网线、集线器、中继器 |
每一层的核心职责:
- 物理层:只管"1 和 0"以电信号/光信号/无线电波的形式在介质上传输。它不关心这些比特有什么含义,只关心电压高低、光有无、传输速率。单位是比特(bit)。
- 数据链路层:把比特组装成帧(frame),加 MAC 地址,做差错检测。它解决的是"相邻两台设备"之间的传输。
- 网络层:负责跨网络的寻址与路由选择——数据要从 A 网络到 B 网络,走哪条路。单位是分组(packet)/ 数据报。
- 传输层:负责端到端(进程到进程)的传输,管端口号,提供可靠(TCP)或不可靠(UDP)传输。单位是报文段(segment)/ 用户数据报。
- 会话层:管理一次"对话"的建立和结束,比如登录后保持会话不断开。
- 表示层:解决"数据长什么样"的问题——同一段文字,中文系统用 GBK、英文系统用 ASCII,表示层负责统一格式、加密、压缩。
- 应用层:离用户最近的一层,直接面向具体应用,提供网络服务接口。
💡 记忆口诀(从上到下):"应表会传网链物"。可以记成顺口溜:应(用)表(示)会(话)传(输)网(络)链(路)物(理)——"应用表示会传网,链路物理最底端"。
⚠️ 常见错误
- 层号记反:最底层是物理层(1),最顶层是应用层(7)。"7 层"指的是从上往下数。
- 把 DNS、HTTP 记到传输层:它们是应用层协议,只是"跑在 TCP/UDP 之上"。
- 以为每层都要经过物理设备:只有数据真正在线路上传输时才经过物理层;网络层的"路由"是逻辑决策,不是物理跳线。
1.3 TCP/IP 四层模型 ⭐⭐⭐
现实中真正在用的那套
OSI 是理想蓝图,而现实世界(尤其是互联网)用的是 TCP/IP 协议族,它把 OSI 七层合并成了四层:
| TCP/IP 四层 | 对应 OSI 层 | 典型协议 |
|---|---|---|
| 应用层 | 7+6+5 | HTTP、DNS、FTP、SMTP、Telnet |
| 传输层 | 4 | TCP、UDP |
| 网际层(Internet) | 3 | IP、ARP、ICMP |
| 网络接口层 | 2+1 | 以太网、Wi-Fi、PPP |
对应关系要记住:TCP/IP 的应用层 ≈ OSI 的应用层+表示层+会话层(现实中三层界限模糊,合并了);网络接口层 ≈ 链路层+物理层(现实中接口细节太多,统一收编)。
有些教材为了教学方便,把"网络接口层"再拆成"数据链路层 + 物理层",变成五层模型。考试时以你教材的定义为准,核心是:TCP/IP 的分层思想与 OSI 一致,只是合并了层。
💡 一句话区分:OSI 是"理论上的标准答案",TCP/IP 是"互联网实际用的"。背 OSI 为了懂思想、会数层;背 TCP/IP 为了会用协议、会排错。
⚠️ 常见错误
- 把 OSI 和 TCP/IP 的层数记混:OSI 七层、TCP/IP 四层(或教学版五层),不是 4 对 7 一一对应。
- 以为 OSI 七层有真实实现:现实中网络设备基本按 TCP/IP 工作,OSI 的会话层、表示层在互联网中几乎没有独立协议对应。
- 把 ARP、ICMP 记到传输层:它们在 TCP/IP 里属于网际层(IP 的辅助协议)。
1.4 协议三要素 ⭐⭐⭐
协议 = 双方约定好的"规矩"
两台设备要通信,必须事先约定好:数据长什么样、怎么理解、什么时候发。这个约定就是协议(protocol)。任何协议都由三个要素构成:
- 语法(Syntax):数据格式——报文里哪些字节是地址、哪些是数据、哪些是校验码。就像写信要遵守"称呼→正文→落款"的格式。
- 语义(Semantics):每种字段的含义和动作——收到一个"请求"该怎么应答、收到"确认"该做什么。就像"谢谢"表示感激、"再见"表示结束。
- 时序(Timing):事件的先后顺序和时间关系——先发请求还是先发确认、超时多久重发。就像对话"一问一答"的节奏。
举一个看得见的例子——HTTP 请求报文(语法、语义、时序全在这):
GET /index.html HTTP/1.1 # 语法:方法 + 路径 + 版本号
Host: www.example.com # 语义:说明要访问哪个主机
- 语法:每一行字段的顺序、空格、冒号都是规定死的格式。
- 语义:
GET表示"请求资源",服务器看到GET就返回网页内容;看到POST就执行提交。 - 时序:必须先由客户端发请求,服务器收到后才回应答——顺序不能颠倒。
💡 记忆口诀:协议三要素 = "语法管格式,语义管含义,时序管顺序"。格式、含义、顺序,缺一个协议就不成立。
⚠️ 常见错误
- 把"语法"理解成编程语言的语法:这里的语法指报文的格式结构,不是 C 语言的那种语法。
- 漏掉"时序":很多同学只记语法和语义。记住——什么时候发、多久重发也属于协议内容,TCP 的重传计时器就是时序的体现。
1.5 封装与解封装 ⭐⭐⭐
数据穿衣服:一层套一层
数据要从应用层出发发到网络上,会逐层穿上"外套",这个过程叫封装(encapsulation);到达对端后,再逐层脱掉外套,叫解封装(decapsulation)。
每一层只加自己那一层的"头"(header),就像寄快递:
应用层数据 "你好" # 原始数据(data)
↓ 传输层加 TCP 头
[TCP头][你好] # 报文段 segment
↓ 网络层加 IP 头
[IP头][TCP头][你好] # 数据报/分组 datagram
↓ 链路层加帧头帧尾
[帧头][IP头][TCP头][你好][帧尾] # 帧 frame
↓ 物理层变成电信号/光信号发出去
封装:数据从上层往下层走,每层给数据包加一个"该层专用的头"(链路层还要加帧尾)。
解封装:接收方从底层往上走,每层拆掉自己那层的头,把剩余部分交给上一层。
一个生动的比喻——寄快递:
| 环节 | 网络层 | 快递 |
|---|---|---|
| 写信 | 应用层产生数据 | 写内容 |
| 填地址、贴面单 | 网络层加 IP 头(源/目的 IP) | 贴收/寄件地址 |
| 装箱、贴运单号 | 传输层加端口号 | 运单号(找具体的人) |
| 打包、贴条码 | 链路层加帧头帧尾 | 包裹外层的条码 |
| 运输 | 物理层 | 货车运送 |
到对方手里,快递员拆条码(帧尾)、验面单(IP 头)、找收件人(端口),一层层把内容还原——这就是解封装。
💡 关键点:每一层"只认自己那层的地址"。网络层只看 IP 地址,链路层只看 MAC 地址,传输层只看端口号。谁加的谁拆,绝不越级。
⚠️ 常见错误
- 封装顺序记反:是从上到下加头(先 TCP 后 IP 再帧头),不是反过来。
- 以为每层都"修改"数据:中间层一般不修改原始数据,只是添加自己的头;到了目的端再原样还原。
- 把"加头"说成"加密":封装加的是控制信息(地址、校验),不是加密。加密属于表示层/应用层的事。
1.6 数据交换方式:电路交换 / 分组交换 ⭐⭐
网络怎么"让很多用户同时用线路"
前面讲的是"一层层怎么分工",这一节讲的是"数据在网络上到底怎么传输"——用到的底层技术叫交换(switching)。三种主流方式:
1. 电路交换(circuit switching)——电话
打电话时,从拨号到挂机,中间独占一条固定的线路:先"建立连接"(拨通),再传数据(通话),最后"释放连接"(挂断)。特征:
- 先建连、后通信、再释放,三个阶段清清楚楚。
- 通信期间独占资源——即使不说话,线路也占着,别人不能用。
- 适合实时通信(电话),但线路利用率低。
电话:拨号(建连) → 通话(传数据) → 挂断(释放) ← 全程独占一条路
2. 报文交换(message switching)——老式电报
把整个报文(整封信)作为一个整体,存储转发:每到一个节点先整个存下来,再发给下一站。不独占线路,但报文可能很大,中间节点要整份存,延迟大、不适合实时。
3. 分组交换(packet switching)——互联网的核心
把大报文拆成一个个小分组(packet),各自独立传输、可走不同路径,到目的地再重组。特征:
- 无连接:分组独立转发,不必预先建连。
- 逐段存储转发 + 排队:每个路由器把分组暂存、查路由表、转发出去。
- 动态共享线路:线路按需分配,利用率高。
- 缺点:有排队延迟,可能丢包、乱序,需要上层(TCP)负责重排和重传。
一个 9000 字节的文件,拆成 6 个 1500 字节的分组:
分组1 → 走路径 A
分组2 → 走路径 B(两条路都可以走,速度更快、更抗故障)
分组3 → 走路径 A ... 到达后按序号重组
💡 记忆口诀:"电路交换先建连、独占一条线;分组交换拆小包、各走各路重组"。互联网用分组交换,电话用电路交换。
⚠️ 常见错误
- 把"分组交换"说成"无存储转发":分组交换恰恰是存储转发——每个节点(路由器)要先把分组存下来再转发。
- 以为电路交换和分组交换都要"先建连":只有电路交换必须先建连;分组交换是无连接的,直接发。
- 把报文交换和分组交换混为一谈:报文交换传整份报文(不拆分),分组交换把报文拆小分组——拆不拆是关键区别。
1.7 一次通信的完整旅程 ⭐
浏览一个网页,数据是怎么穿过七层的
把所有概念串起来,看一个完整例子:你在浏览器输入网址,服务器把网页发给你,数据经过的完整路径。
发送端(服务器)逐层封装:
应用层:HTTP 报文("这是网页内容")
传输层:加 TCP 头(端口 80,源端口 4xxxx) → 报文段
网络层:加 IP 头(源 IP=服务器IP,目的 IP=你的IP) → 数据报
链路层:加帧头帧尾(源 MAC=服务器网卡,目的 MAC=下一跳路由器的 MAC) → 帧
物理层:变成光/电信号上线路
中间(路由器):路由器拆到网络层——只看 IP 目的地址,查路由表决定下一跳,重写链路层 MAC 头(改成下一个路由器/主机的 MAC),继续转发。IP 地址全程不变,MAC 地址逐跳更换。
接收端(你的电脑)逐层解封装:
物理层:收到电信号还原比特
链路层:去掉帧头帧尾、验 CRC → 交给网络层
网络层:去掉 IP 头,看目的 IP 是自己 → 交给传输层
传输层:去掉 TCP 头,按端口号 4xxxx 找到浏览器进程 → 交给应用层
应用层:HTTP 报文渲染成网页
💡 核心领悟:中间设备只拆到自己需要的那层——交换机拆到链路层,路由器拆到网络层,只有目的主机才拆到应用层。这正体现了分层的价值。
⚠️ 常见错误
- 以为每个路由器都拆到应用层:路由器只拆到网络层(看 IP),不拆更高层。
- 以为 IP 地址逐跳变化:IP 端到端不变;逐跳变的是 MAC 地址(每个路由器重写帧头)。
- 把"目的端口"和"目的 IP"搞混:IP 把数据送到主机,端口把数据送到主机上的具体进程,缺一个都不行。
🧠 记忆口诀
- 七层从上到下:应表会传网链物(应用、表示、会话、传输、网络、链路、物理)。
- 协议三要素:语法管格式,语义管含义,时序管顺序。
- 封装路线:应用数据 → TCP 头 → IP 头 → 帧头帧尾 → 比特流;从上往下加,从下往上拆。
- OSI 是蓝图,TCP/IP 是实物:OSI 七层重思想,TCP/IP 四层重实现。
⭐ 考点清单
- OSI 七层每层的名称、顺序、职责、代表协议/设备
- TCP/IP 四层与 OSI 七层的对应关系(应用层=7+6+5,网络接口层=2+1)
- 协议三要素:语法(格式)、语义(含义)、时序(顺序)
- 数据在各层中的名称:数据 → 报文段/数据报 → 分组 → 帧 → 比特
- 封装与解封装的顺序、各层加什么头
- 典型协议归属:HTTP/DNS 在应用层,TCP/UDP 在传输层,IP/ARP/ICMP 在网络层
- 分层的好处:独立、简化、灵活、可追踪
- 三种交换方式:电路交换(先建连、独占)、报文交换(整份存储转发)、分组交换(拆小包、独立转发)
- 封装/解封装的完整流程:中间路由器只拆到网络层,MAC 逐跳变、IP 端到端不变
📌 中英术语表
| 中文 | English | 说明 |
|---|---|---|
| 网络体系结构 | network architecture | 层次结构 + 各层协议的集合 |
| 分层 | layering | 按职责划分层次的思想 |
| 协议 | protocol | 通信双方约定的规则 |
| 语法 | syntax | 数据与控制信息的格式 |
| 语义 | semantics | 字段含义与应答动作 |
| 时序 | timing | 事件顺序与时间关系 |
| 封装 / 解封装 | encapsulation / decapsulation | 逐层加头 / 逐层拆头 |
| 应用层 | application layer | 面向应用的网络服务 |
| 表示层 | presentation layer | 格式转换、加密、压缩 |
| 会话层 | session layer | 会话的建立与管理 |
| 传输层 | transport layer | 端到端、端口、可靠传输 |
| 网络层 | network layer | 寻址与路由 |
| 数据链路层 | data link layer | 成帧、MAC、差错控制 |
| 物理层 | physical layer | 比特流的物理传输 |
| 报文段 / 数据报 / 帧 | segment / datagram / frame | 各层数据单元的称呼 |
| 参考模型 | reference model | OSI 只是参考,非强制实现 |
| 电路交换 | circuit switching | 先建连、独占线路,电话用 |
| 分组交换 | packet switching | 拆小包独立转发,互联网用 |
| 报文交换 | message switching | 整份报文存储转发 |
| 存储转发 | store-and-forward | 节点先存再发的转发方式 |