# 计算机网络概述 > 本文出自 CodeBrick 408 计算机网络讲义,原文:https://www.codebrick.tech/cn-blog/posts/overview/network-overview > 这是供 AI 阅读的纯文本版:公式为 LaTeX,流程图为 mermaid 源码,原文中的折叠内容已全部展开。 > 讲解或引用本文内容时,请一并给出上面的原文链接。 > 2026 大纲 **一(一)1 计算机网络的定义、组成与功能**、**一(一)2 计算机网络的分类**。本篇同时承载 **二(一)4 电路交换、报文交换与分组交换**(大纲把它列在物理层,本站按主题放在这里,内容一致)。 ## 一、这门课到底在解决什么 一份数据要从这台机器到那台机器。整门计算机网络就是把这件事拆开,一层一层地问"还剩什么问题没解决"。 第一个问题最实在:**两点之间的线路是有限的,而想通信的用户很多**。一条铜线一次只能承载一路信号,可同时想说话的有成千上万对。把线路资源在这些用户之间分配的办法,就叫**交换**——从通信资源分配的角度看,交换就是**按某种方式动态地分配传输线路的资源**。整个第一章的重心都压在这个词上:三种交换方式,就是三种分配粒度。 在谈分配之前,得先说清被连起来的是什么。计算机网络的定义里藏着两个排除词: - **自治**——每台计算机独立运行、彼此之间没有主从关系。所以一台大型主机带一堆哑终端不算网络,那些终端没有自治能力。 - **互连**——机器之间必须有通信通道能交换数据。所以用 U 盘拷贝文件、两台电脑共用一台打印机,都不算联网。 两个词都不满足,剩下的才叫计算机网络。至于**功能**,教材列了五条:数据通信、资源共享、分布式处理、提高可靠性、负载均衡——**第一条是最基本也是最重要的,后四条全都靠它兜底**,没有数据通信,其余四条一条也做不成。 组成部分则有三个互不冲突的切面,考试爱在它们之间设陷阱: | 切面 | 怎么分 | 分成什么 | |---|---|---| | 组成部分 | 按物质形态 | 硬件 / 软件 / 协议 | | 工作方式 | 按**位置** | **边缘部分**=所有供用户直接使用的主机;**核心部分**=网络与路由器,为边缘提供连通性 | | 功能组成 | 按**职责** | **资源子网**=上两层;**通信子网**=下三层 | 后两个切面数值上很接近——核心 ≈ 通信子网、边缘 ≈ 资源子网——但**它们的划分依据不同,不能划等号**。主机上 TCP/IP 协议栈的下三层就是反例:位置在边缘,职责却属于通信子网。 顺带把一个大小写的坑说掉:**internet 是通用名词**,指任意用路由器互连而成的网络,不要求用什么协议;**Internet 是专用名词**,特指全球最大的那一个,由 ARPANET 发展而来、用 TCP/IP。判据就是首字母大写且指"世界上那一个"。 ## 二、三种交换方式:差别只在一次占用的粒度 回到线路怎么分。三种办法的区别,用一句话就能概括:**一次占用多大的粒度**。 - **电路交换**占**整条通路的整段时间**; - **报文交换**占**一跳链路的一整份报文时间**; - **分组交换**占**一跳链路的一个分组时间**。 粒度越细,线路利用率越高、时延越低,代价是首部开销越大。下面这张图把三者在数据传送阶段的差别画在同一个时间轴上: ![电路交换、报文交换、分组交换在数据传送阶段的差别:横轴是四个节点 A→B→C→D,纵轴是时间。电路交换在建连之后比特流一路直达;报文交换每一跳都要把整份报文收完再发;分组交换的四个分组在相邻链路上错开重叠,形成流水线。](/textbook-figs/xxr-cn-fig1-13.jpg) > 图源:谢希仁《计算机网络》(第 8 版)图 1-11「三种交换的比较」,印刷版 **p17**。 ### 电路交换:先占住,再说话 通信必须走**建立连接(占用通信资源)→ 通话(一直占用通信资源)→ 释放连接(归还通信资源)**三步,建起来的是一条**专用物理通路**,通信期间这条路上的资源不会被别人占用。 它的优点全部来自"独占"这两个字:数据直达,**中间节点不做任何存储转发**,传输时延就是发送时延加端到端传播时延;数据按序到达不会失序;不同通信对走彼此独立的信道,**没有冲突**;通路一旦建成实时性强。 缺点也全部来自这两个字:**建立连接时间长**,而这段时间里一个比特都没传;通信期间独占线路,只要两端不说话带宽就是白白扔掉;通路上任一节点或链路故障都得重新建连;**难以实现差错控制**——中间节点根本不存数据,也就没有条件检错重传。 判据比结论有用:**凡"通信时间远大于建连时间、且期间持续有数据"的场景,电路交换都不吃亏**。打电话就是这样,话音是连续的,接通后两端几乎一直占着带宽,"独占"没有浪费;计算机数据是突发的,一次网页浏览里真正在传数据的时间可能不到 1%,独占等于把带宽扔掉。 ### 报文交换:不占线路,但每跳都要收完 发送方把整份报文(数据加上目的地址等控制信息)发给相邻节点,节点**完整接收并存储整个报文**后再查转发表送往下一节点——这就是**存储转发**。 无须建连,随时可发;线路分配灵活,可挑空闲链路、故障时可换路径;线路利用率高,报文只在实际传输时占用链路;而且因为节点缓存了整份报文,**有条件做差错控制**。 代价是**存储转发时延高**:每一跳都必须把整份报文收完才能往下发,这个"收完"的代价被跳数乘了一遍。报文长度还没有上限,节点必须准备大容量缓存;报文越长出错概率越大,一出错要整份重传。 ### 分组交换:把报文切开,让它们在链路上重叠 在报文交换的基础上加一条限制:**报文必须先切成长度受限的分组**,每个分组带上自己的控制信息(源地址、目的地址、序号等),独立地存储转发。 这一刀切下去换来三件事:分组长度受限,节点**缓存需求小且可预估**;某个分组出错只需重传该分组;最关键的是分组可以**流水线式**转发——第 1 个分组正在第 2 跳上传输时,第 2 个分组已经可以在第 1 跳上传输了。 代价是每个分组都要带首部,**开销与分组数成正比**;分组可能乱序到达(数据报方式),需在目的端重排;存储转发本身仍有时延且排队时延不可控,**无法保证端到端带宽**。 三者放在一起对照: | 对比项 | 电路交换 | 报文交换 | 分组交换 | |--------|----------|----------|----------| | 建立连接 | 需要(建连 → 通话 → 释放三步) | 不需要 | 不需要 | | 独占线路 | 是 | 否 | 否 | | 存储转发 | 否 | 是(整份报文) | 是(单个分组) | | 发送时延计几次 | **1 次** | $k$ 次 | $k+n-1$ 次(按分组时长) | | 节点缓存开销 | 无 | 高且无上限 | 低且可预估 | | 支持差错控制 | 不支持(节点不存储) | 支持 | 支持 | | 数据按序到达 | 是 | 是 | 否(数据报方式) | | 额外控制信息 | 建连时一次 | 每报文一份 | **每分组一份** | | 线路利用率 | 低 | 高 | 非常高 | | 能否保证带宽 | **能** | 不能 | 不能 | | 适用场景 | 连续大量数据、传送时间远大于建连时间 | 容忍时延的批量数据 | 突发性数据通信 | ## 三、把三种方式算出来 上表里"发送时延计几次"那一行是整张表的技术核心,也是这一章唯一需要动笔的地方。三条式子($k$ 段链路、$n$ 个分组、$H$ 为分组首部、$d$ 为每段传播时延、$D$ 为报文总长、$R$ 为链路速率): $$ T_{报文}=k\frac{D}{R}+kd,\qquad T_{分组}=(k+n-1)\frac{D/n+H}{R}+kd,\qquad T_{电路}=T_s+\frac{D}{R}+kd $$ **算例。** 主机 A 经 B、C 两个中间节点向 D 发送 $D=3000$ 比特的报文,三段链路速率均为 $R=1\ \text{Mbit/s}$,每段传播时延 $d=5\ \text{ms}$,忽略处理与排队时延,电路交换建连时间 $200\ \text{ms}$,分组交换切成 3 个分组(先忽略首部)。链路段数 $k=3$。 **报文交换**:每跳发送时延 $3000/10^6=3\ \text{ms}$,共 3 跳。报文交换的定义就是"整份收完才转发",这 3 ms 在每一跳上都要完整重来一遍,不能重叠: $$ T_{报文}=3\times 3+3\times 5=24\ \text{ms} $$ **分组交换**:每个分组 1000 比特,发送时延 1 ms。$(k+n-1)$ 里的 $k=3$ 是第一个分组走完三跳,$n-1=2$ 是后两个分组在最后一跳上依次排出——它们在前两跳上都是与第一个分组**同时**在传的,所以不重复计: $$ T_{分组}=(3+3-1)\times 1+3\times 5=20\ \text{ms} $$ **电路交换**:建连的 200 ms 是**净损失**,期间一个比特都没传;建连之后中间节点不存储,3 ms 的发送时延只出现一次: $$ T_{电路}=200+3+15=218\ \text{ms} $$ $20<24\ll 218$:数据量小的时候电路交换被建连时间彻底拖垮,分组交换靠流水线比报文交换省下 4 ms。 **边界检查。** 把报文换成 $3\times 10^7$ 比特(30 Mbit),电路交换 $=200+30000+15=30215\ \text{ms}$,报文交换 $=3\times 30000+15=90015\ \text{ms}$,**电路交换反超**。原因是**发送时延只算一次这个优势随数据量线性放大**,而 200 ms 的建连成本是固定的,会被摊薄成千分之七。教材那句"传送时间远大于连接建立时间时电路交换的传输速率较快"就是这么来的。 两句话总结这段推导,都是选项里爱设的坑:**电路交换唯一的结构性优势是发送时延只算一次**;**流水线是分组交换低时延的唯一来源**——总发送次数从 $k\cdot n$ 降到 $k+n-1$,不是"因为分组小所以快"这种含糊说法。 ### 分组不是越小越好 刚才忽略了首部。加回来会发现切得太碎反而更慢。条件同上,每个分组加 $H=40$ 比特首部: | 分组数 $n$ | 每分组长度 | 发送时延 | 系数 $k+n-1$ | 总时延 | |---:|---:|---:|---:|---:| | 3 | $1000+40=1040$ bit | 1.04 ms | 5 | $5\times 1.04+15=20.20$ ms | | 30 | $100+40=140$ bit | 0.14 ms | 32 | $32\times 0.14+15=19.48$ ms | | 300 | $10+40=50$ bit | 0.05 ms | 302 | $302\times 0.05+15=30.10$ ms | $n$ 从 3 加到 30 时延下降,再加到 300 反而暴涨——**存在一个最优分组数**。把总时延展开就看得见为什么: $$ T=\frac{1}{R}\left[\frac{(k-1)D}{n}+(k-1)H+D+nH\right]+kd $$ 方括号里只有两项与 $n$ 有关:$\dfrac{(k-1)D}{n}$ 随 $n$ 增大而减小(流水线收益),$nH$ 随 $n$ 增大而增大(首部开销)。一个降一个升,必然交出一个最低点。对 $n$ 求导置零: $$ -\frac{(k-1)D}{n^{2}}+H=0\quad\Longrightarrow\quad n^{*}=\sqrt{\frac{(k-1)D}{H}} $$ 代入数值 $n^{*}=\sqrt{2\times 3000/40}=\sqrt{150}\approx 12.25$,取 $n=12$,每分组 290 比特,总时延 $14\times 0.29+15=19.06\ \text{ms}$——低于上表任何一行。 这条式子还顺带解释了两件工程事实:**跳数 $k$ 越多则 $n^{*}$ 越大、分组该切得越小;首部 $H$ 越大则 $n^{*}$ 越小、分组该切得越大**。以太网 1500 字节的 MTU 相对 14 字节的帧首部,取的就是这个平衡。 ## 四、分组交换内部还分两种 切成分组之后还有个问题没定:这些分组各走各的路,还是先约好一条路一起走? | 对比项 | 数据报 | 虚电路 | |--------|--------|--------| | 建立连接 | 不需要 | 需要(建立虚电路) | | 路由选择 | 每个分组独立选路 | 建立时确定路径,后续分组沿同一路径 | | 分组携带的地址 | 每个分组带**完整目的地址** | 只带**虚电路号** | | 分组顺序 | 可能乱序到达 | 按序到达 | | 节点故障 | 只丢失该节点上的分组,其余绕行 | 经过该节点的**全部**虚电路失效 | | 可靠性由谁负责 | 高层协议 | 网络层 | | 代表 | IP 网络(因特网) | X.25、帧中继、ATM | **因特网采用的是数据报方式的分组交换。** 虚电路容易和电路交换混起来,但两者差着一个量级:**虚电路建的是逻辑通路,链路带宽仍然是统计复用的;电路交换建的是物理独占通路,资源被真正预留了**。判据一句话——**资源是被预留了,还是只被记了一笔路径**。两种方式的完整展开(含网络层如何为上层提供服务)在[网络层的功能](/posts/network/network-layer-functions)。 ## 五、网络的分类 分类本身不难,难的是知道每种分法的**依据**是什么——考题基本都出在依据上。 | 按覆盖范围 | 范围 | 典型技术 | |------|----------|----------| | 广域网 WAN | 几十到几千公里 | PPP | | 城域网 MAN | 一个城市范围 | 以太网技术为主 | | 局域网 LAN | 几十米到几公里 | 以太网、Wi-Fi | | 个人区域网 PAN | 几米范围 | 蓝牙 | 范围只是表象,真正的分界是**谁拥有它、用什么技术做介质访问控制**:局域网由单一组织拥有,可以用共享信道加争用协议(CSMA/CD、CSMA/CA);广域网跨越运营商,只能用点对点链路加路由。所以"交换机连起来的两栋楼"是 LAN,"运营商专线连起来的两个城市"是 WAN,哪怕后者物理距离更近。 另外三个维度:按**使用者**分公用网(电信公司运营、面向公众)与专用网(某组织自建,如军事网、铁路网);按**交换方式**分电路/报文/分组交换网络;按**传输介质**分有线(双绞线、同轴电缆、光纤)与无线(无线电、微波、红外、卫星)。 五个维度里**按传输技术分最关键**,因为它是后面两章分道扬镳的源头:**判据是信道是不是被多方共享**。共享 → 广播式 → 必须解决"同时说话怎么办",于是有了介质访问控制;独占 → 点对点 → 必须解决"该往哪走",于是有了路由算法。数据链路层与网络层两大分支就从这里分开。 | 按拓扑结构 | 特点 | 弱点 | 常用于 | |---------|------|------|-------| | 总线型 | 建网容易,增减节点方便,节省线路 | 重负载时冲突多;总线故障影响全网 | 早期以太网 | | 星型 | 便于集中控制,单条线路故障只影响一个节点 | 中央设备是单点故障源 | 局域网 | | 环型 | 信号沿环单向传输,时延可预测 | 单点故障可能断环 | 令牌环局域网 | | 网状型 | 冗余路径多,可靠性高 | 控制复杂,线路成本高 | 广域网核心 | 拓扑这里有个陷阱:**物理拓扑不等于逻辑拓扑**。集线器连成的星型网,逻辑上仍是一条总线——所有主机共享一个冲突域;换成交换机后物理上还是星型,逻辑上才真正变成点对点。 ## 本节小结 1. 计算机网络 = **自治**的计算机 + **互连**的通信通道 + 网络软件;internet 是通用名词、Internet 是专用名词。网络组成有三个正交切面,其中"边缘/核心"按位置分、"资源/通信子网"按职责分,不能划等号。 2. 交换 = **动态分配传输线路资源**,三种方式的差别全在"一次占用的粒度"。**电路交换的发送时延只算一次**是它唯一的结构性优势,随数据量线性放大;**流水线($k\cdot n \to k+n-1$)是分组交换低时延的唯一来源**,代价是每分组一份首部,因而存在最优分组数 $n^{*}=\sqrt{(k-1)D/H}$。 3. 分组交换内部分数据报与虚电路,因特网用数据报;虚电路建的是**逻辑**通路,与电路交换的**物理独占**通路不同。分类五个维度里**传输技术最关键**——共享信道推出介质访问控制、独占链路推出路由选择,这是数据链路层与网络层两大分支的源头。 ## 考点速记 本节在真题里被考过的形式: - **分层体系结构的叙述判断**(cn-2026-33):四个选项里挑错的。正确的三条是"每层都有明确的功能边界""有利于各层技术独立演化""上层无需关心下层的具体实现细节",错的那条是"**层次越多效率越高**"——每多一层就多一次封装(占带宽)与一次跨层调用(占处理时间),层数是有代价的。这道题考的是分层本身,机制在[体系结构与参考模型](/posts/overview/architecture)。 - **三种交换方式的时延计算与大小比较**:这类题在练习区显示于[性能指标](/posts/overview/performance-metrics)(它们的标签是性能指标),但用的全是本节第三部分那三条式子——存储转发网络的总时间、报文交换与分组交换的时间对比、电路/报文/分组三者的大小关系,都在那里。做题前先回到本节把 $k+n-1$ 这个系数弄明白。 > **易错**:$T_{分组}$ 里的系数是 $k+n-1$ 而不是 $k\cdot n$。$k$ 是第一个分组走完全程的跳数,$n-1$ 是后续分组在**最后一跳**上排队排出的次数;它们在前面各跳上是与第一个分组并行传输的,不能重复计。把系数写成 $k\cdot n$ 就等于退回了报文交换。 > **易错**:电路交换的建连时间是净损失,但它**是固定成本**。凡题目让比较三种方式的快慢,先看数据量:数据量小 → 分组 < 报文 ≪ 电路;数据量足够大 → 电路反而最快。只记住"分组交换最快"必错。 > **易错**:**虚电路属于分组交换,不是电路交换**。判据是资源有没有被真正预留——虚电路只是记了一笔路径,链路带宽照样统计复用。同理,"虚电路能保证带宽"是错的。 > **易错**:**边缘/核心**按位置分、**资源子网/通信子网**按职责分,两组切面不能划等号。主机协议栈的下三层位置在边缘、职责属通信子网,这个反例是设错误选项的常用素材。 **〔原文中此段为可折叠内容〕教材出处** - 谢希仁《计算机网络》(第 8 版)印刷版 **p13**(1.3.2 互联网的核心部分)给出电路交换的定义与三步骤:这种必须经过"**建立连接(占用通信资源)→ 通话(一直占用通信资源)→ 释放连接(归还通信资源)**"三个步骤的交换方式称为电路交换;同页强调"电路交换的一个重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源"。 - 同书印刷版 **p13** 定义交换本身:"从通信资源的分配角度来看,交换(switching)就是按照某种方式**动态地分配传输线路的资源**。" - 同书印刷版 **p16** 把三种方式在数据传送阶段的特点归纳为三句话:电路交换是"整个报文的比特流连续地从源点直达终点",报文交换是"整个报文先传送到相邻节点,**全部存储下来后**查找转发表,转发到下一个节点",分组交换是"**单个分组**(这只是整个报文的一部分)传送到相邻节点,存储下来后查找转发表,转发到下一个节点"。 - 同书印刷版 **p17**(图 1-11 下方)给出本篇边界检查所依据的那句结论:"若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快……由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。" - 同书印刷版 **p16**(表 1-1 分组交换的优点)把分组交换的优点归为四条:高效(动态分配传输带宽、对通信链路逐段占用)、灵活(为每一个分组独立地选择最合适的转发路由)、迅速(以分组作为传送单位,不先建立连接就能发送)、可靠(保证可靠性的网络协议 + 分布式多路由的分组交换网)。 - 同书印刷版 **p3** 说明术语来历:全国科学技术名词审定委员会将 internet、internetwork、interconnection network 的译名均推荐为"互联网",注释中说"又称互连网",并提醒"联"和"连"并不是同义字。 ## 相关知识 [体系结构与参考模型](/posts/overview/architecture)|[性能指标](/posts/overview/performance-metrics)|[数据包的网络之旅](/posts/overview/packet-journey)|[网络层的功能](/posts/network/network-layer-functions)|[信道复用技术](/posts/physical/multiplexing) ## 真题练习 ## 本节对应的历年 408 真题 - 2026 年第 33 题:https://www.codebrick.tech/practice/q/cn-2026-33