配套教材:谢希仁《计算机网络》第一章「概述」,课后习题 1-01 ~ 1-31。 这篇文章的目标只有一个:说人话。每个概念先给结论,再打比方,最后告诉你这类题该怎么答。


0. 先立骨架:第一章到底在讲什么

第一章的内容其实就五块:

  1. 互联网是什么、由什么组成 —— 边缘部分 + 核心部分;

  2. 数据是怎么被搬过去的 —— 三种交换方式,本章计算题的第一主战场;

  3. 它是怎么长成今天这样的 —— 发展三阶段、标准化流程、各种分类;

  4. 怎么衡量一个网络的好坏 —— 性能指标,本章计算题的第二主战场;

  5. 怎么有条理地描述一个网络 —— 分层模型、协议、五层结构。

这一章的特点是:没有复杂算法,但名词密度极高。而且几乎每个名词都是后面几章的地基——"存储转发"会一路用到网络层,"时延"会一路用到 TCP 拥塞控制。所以这一章的目标不是"算得多溜",而是每个概念都能用自己的话说清楚

下面就按这五块,一块一块过。


1. 网络能给我们什么(习题 1-01、1-04)

1-01 计算机网络可以向用户提供哪些服务?

答:两大类——连通性和共享。

  • 连通性:让上网的用户之间能互相交换信息,就像彼此直接连通一样;

  • 共享:资源共享。包括信息共享(查资料、看视频)、软件共享硬件共享(多台电脑共用一台打印机、共用一台服务器上的文件)。

大白话:网络值钱的不是那根网线,而是它把距离抹掉了。"连通"解决的是"传得过去","共享"解决的是"不用每家都备一份"。

1-04 为什么说互联网是自印刷术发明以来人类在存储和交换信息领域的最大变革?

答:因为信息流动的模式被彻底换掉了。

  • 印刷术解决的是信息的存储和批量复制,但传播是单向的——一个源头(书),很多读者;而且有延迟,规模受物理介质限制;

  • 互联网带来的是双向、实时、可交互:每个人既是信息的接收者,也是发布者;文字、语音、视频可以瞬时传到全球;成本和规模都是印刷术时代无法想象的。

大白话:判断"最大变革"就看它有没有改变信息流动的根本模式。印刷术只是把"抄书"变快了,模式仍是"一个源头 → 很多读者";互联网把模式变成了"多 ↔ 多、实时、可交互"。模式变了,才叫变革。

答题提示:这类题别死背答案,抓住"改变的是什么模式"来写,把"双向、实时、人人可发布"这几个关键词写上,分就稳了。


2. 三种交换方式:包场、寄长信、拆快递(习题 1-02、1-03、1-10、1-11)

这是第一章最"硬"的部分,两道计算大题都在这里。

1-02 分组交换的要点

答:三条。

  1. 分组:把一整份长报文切成一小段一小段(分组);

  2. 加首部:每段前面加上包含地址等控制信息的首部,构成一个"分组";

  3. 存储转发:每个分组在沿途各个路由器上"收完整 → 暂存 → 查地址 → 转发",一跳一跳走到终点,到终点再剥掉首部、拼回原样。

大白话:首部就是快递面单,没有面单,中转站不知道往哪送;"存储转发"就是整包到齐才转发——不是头到了就走。

1-03 三种交换方式从多个方面比较

对比项

电路交换

报文交换

分组交换

要不要先建立连接

不要

不要

资源占用

通信全程独占

逐段动态占用

逐段动态占用

线路利用率

低(空闲也占着)

传输单位

连续的比特流

整个报文

小分组

节点需要多大缓存

不需要

很大(整份报文)

很小

时延

建立后小、稳定

较小,但有排队抖动

可靠性

一条链路断了就断

可绕路

可绕路,抗故障更好

  • 电路交换:优——实时性强、时延小、按序到达;缺——建立时间长、线路利用率低、突发业务不适合。

  • 报文交换:优——不用建立连接、可以把一份报文发给多个目的地;缺——时延大、对节点缓存要求高。

  • 分组交换:优——高效(动态分配带宽)、灵活(每个分组独立选路)、迅速(不用建立连接)、可靠(可绕开故障点);缺——有首部开销、可能失序/丢失/拥塞,时延不确定。

三个比喻一次记住:

  • 电路交换 = 包场:进包厢前先订座,把整条线路占下来。之后哪怕你不说话,座也是你的(空闲浪费);但只要说话就是专线,绝不排队。适合打电话这种持续稳定的话音流。

  • 报文交换 = 寄一整封超长信:不用提前打招呼,但每个中转邮局都要把你整封信收完、存好才能往下送。信越长,邮局占地越大、等得越久。

  • 分组交换 = 拆成集装箱:每箱小、好存好转、各箱可以走不同路线;代价是每箱都要贴面单(首部开销),到货可能乱序,要重新拼。

为什么计算机网络不用电路交换? 因为上网是突发的:你点开网页,数据哗一下过来,然后安静半天。电路交换"先占座"的做法会把大量空闲资源死死占住,太浪费。这就是那句话——突发流量 + 预留的资源片不能借给别人用

1-10 计算题:分组交换什么时候比电路交换快?

题目:报文共 x bit,从源点到终点经过 k 段链路,每段传播时延 d 秒,数据率 b bit/s。电路交换的建立时间是 s 秒。分组交换中,分组长度为 p bit(首部开销忽略),排队时延忽略。问:什么条件下分组交换的时延比电路交换小?

第一步:画草图数节点(题目专门提示了这一步,别跳过)。

k 段链路意味着 k+1 个节点,中间的存储转发路由器有 k−1 个:

源点 ——链路1—— R ——链路2—— R —— …… ——链路k—— 终点
                ↑     ↑
             中间路由器一共 k−1 个

电路交换的时延,三笔账:

T电路 = s  +  x/b  +  k·d
        ↑      ↑        ↑
      建立电路  把整个报文发上线  k 段链路的传播

建立好电路后,比特流是连续推过去的,中间节点不存不转,所以只有一次发送时延。

分组交换的时延,也是三笔账:

T分组 = x/b  +  (k−1)·p/b  +  k·d
         ↑           ↑           ↑
    源点把 x 个比特发上线  中间 k−1 个路由器每跳每一包都要存完再转  传播

注意第一项还是 x/b:切包不改变总比特数,只不过分成了一只一只小组慢慢发。

两式一比,x/b 和 k·d 一模一样,直接抵消,剩下:

当 (k−1)·p/b < s 时,分组交换比电路交换快。

怎么理解这个结论:

  • 分组交换的先天优势是不用付建立电路的时间 s

  • 它的代价是每过一个路由器都要整包存完再转,要付 k−1 次 p/b;

  • 所以胜负就是看:省下来的 s,够不够抵掉这 k−1 次存储转发

两个极端帮你夹住结论:k = 1(没有中间路由器)时,(k−1)·p/b = 0,分组交换必赢;而链路多、分组大、电路建立又快的时候,分组交换就吃亏。

易错点:k 段链路不是 k 个节点,是 k+1 个节点;需要付存储转发代价的是中间的 k−1 个路由器——源点只管发、终点只管收,它们不付这笔钱。

1-11 进阶:分组切多大最划算?

题目:报文长度 x,分组长度 = 数据部分 p + 首部 h(h 与 p 无关),链路 k 段、数据率 b,传播时延和排队时间都忽略。问 p 取多大时,总时延最小?

关键认识首部也是比特,也要一个比特一个比特地发上线、过每一个路由器。 它带来的不是"路由器的额外处理",而是每一跳的发送时间都变长了(p 变成 p + h)。

总时延:

D = (p+h)/b × ( x/p + k − 1 )

其中:
  x/p      = 分组个数
  (p+h)/b  = 每个分组在每一跳的发送时延
  x/p + k−1 = 最后一组要经历的"发送次数"(源点发完所有组,最后那组再过 k−1 跳)

展开以后,只有两项随 p 变化,而且方向相反:

D = (1/b) × [ x  +  x·h/p  +  (k−1)·p  +  (k−1)·h ]
                    ↑             ↑
              随 p 变大而减小   随 p 变大而增大
  • p 切得越小:分组数越多,首部份数越多,"面单费"x·h/p 越大

  • p 切得越大:每个分组每跳存完再转的时间越长,"仓储费"(k−1)·p 越大

求导取零:

dD/dp = (1/b) × ( −x·h/p²  +  (k−1) ) = 0

得到:  p = √( x·h / (k−1) )

最有意思的检验:如果 k = 1(没有中间路由器),分母是 0,p → ∞,意思是"干脆别切包"。完全说得通——没有存储转发代价,只剩首部开销,那当然包越大、贴的面单越少越好。公式和直觉对上了,说明推导没错。


3. 互联网的身世和家谱(习题 1-05 ~ 1-09)

1-05 互联网基础结构发展的三个阶段

  1. 从单个网络 ARPANET 向互连网发展:1983 年 TCP/IP 成为 ARPANET 上的标准协议,人们把多个网络互连起来;

  2. 建成三级结构的互联网:NSFNET 分为主干网、地区网、校园网三级;

  3. 形成多层次 ISP 结构的互联网:出现了互联网服务提供者(ISP),今天你办的宽带,就是通过某个 ISP 接入互联网。

记忆主线:谁负责把网连起来。 军方科研单位自己连(ARPANET)→ 国家出面建主干(NSFNET)→ 商业公司运营(ISP)。答这道题,把三个阶段名、TCP/IP、NSFNET 三级、ISP 这几个词写齐就够了。

1-06 互联网标准制定的几个阶段

  1. 互联网草案(Internet Draft):有效期只有 6 个月,随时可能被改掉或作废,还不算标准

  2. 建议标准(Proposed Standard):开始分配 RFC 编号,相当于"挂上号了";

  3. 互联网标准(Internet Standard):正式转正,有标准编号(STD)。

配套关键词:制定工作主要由 IETF(互联网工程部)等机构承担,所有标准都以 RFC 文档的形式在互联网上发表。

大白话:RFC 的全称是 "Request For Comments"(请求评论)——先发出来请大家挑毛病,再一级一级转正。名字本身就说明了这套流程的精神。

1-07 internet 和 Internet 的区别

  • internet(小写 i):通用名词,泛指"把多个计算机网络互连起来形成的网络",中文叫互连网。用什么协议都行。

  • Internet(大写 I):专用名词,特指今天这个全球最大的、开放的、采用 TCP/IP 协议族的特定网络,中文叫互联网,前身是 ARPANET。

大白话:小写是普通名词("互连起来的网"这件事本身),大写是专有名词(那一个)。就像"手机"和"iPhone"的区别。

1-08 计算机网络的分类

按作用范围分:

类型

范围

特点

广域网 WAN

几十 ~ 几千 km

互联网的核心部分,负责远距离、大容量运送数据

城域网 MAN

5 ~ 50 km

覆盖一座城市,把多个局域网互连起来

局域网 LAN

约 1 km

一个校园/企业/楼内,自己单位建设维护,速率高、误码率低

个人区域网 PAN

约 10 m

围绕个人,比如蓝牙耳机(无线时叫 WPAN)

按使用者分:

  • 公用网:电信公司出资建成,向公众提供服务,交钱就能用;

  • 专用网:某个单位自建自用(军队、铁路、电力),不对外面的人开放。

大白话:按范围记就是一条"半径线"——10 米 → 1 公里 → 一座城 → 一个国家。范围越大,越没人能自己建,于是自然就有了公用/专用之分:家里网线你自己拉,跨省光缆只能电信公司拉。

1-09 主干网和本地接入网的主要区别

  • 主干网:分布在广大地区、由高速链路构成的大容量网络,任务是把不同地区、不同 ISP 的网络连接起来,进行远距离、大流量的传输;

  • 本地接入网:任务是把千家万户的端系统接入到互联网,覆盖范围小,历来是整个网络的瓶颈(俗称"最后一公里")。

大白话:主干网是省际高速公路(车流量大、车速快,比拼大容量远距离运输),接入网是你家门口那条巷子(比拼的是"能不能把每户都连进来")。你抱怨网慢,慢的往往不是主干,而是接入这一段——所以升级网络时,这两段的账要分开算。


4. 边缘部分与核心部分(习题 1-12、1-13)

1-12 互联网的两大组成部分

  • 边缘部分:所有连接在互联网上的主机(端系统)。由用户直接使用,用来进行通信和资源共享。工作方式:客户-服务器方式(C/S)对等连接方式(P2P)

  • 核心部分:由大量网络连接这些网络的路由器组成,为边缘部分提供连通性和交换。工作方式:路由器对分组存储转发——整包存下、查转发表、转发出去。

大白话:边缘是"干活的人"(所有应用都跑在端系统上),核心是"路和路口"(核心不跑你的应用,只负责把数据送过去)。核心的关键设备是路由器,关键动作就是存储转发。

1-13 客户-服务器方式与 P2P 方式的主要区别?有没有相同的地方?

区别:

  • C/S:客户是服务请求方、服务器是服务提供方;服务器一直运行、地址固定,客户之间通常不直接通信;

  • P2P:双方地位对等,每个节点既是客户又是服务器;不依赖一直在线的服务器;而且自扩展——新节点进来,既带来新请求,也带来新的上传能力(人越多,总上传带宽越大)。

相同点:有。 P2P 的每一次具体通信,本质上仍然是客户-服务器方式——一方发起(这时是 client),一方响应(这时是 server)。

大白话:C/S 和 P2P 的区别是"角色是否固定",不是"有没有 client/server"。迅雷拉电影时,它对这次传输是 client;下一秒有人从它这里拉,它就是 server。判据永远是一句话:谁先开口,谁是 client。


5. 怎么衡量一个网络好不好(习题 1-14 ~ 1-18)

1-14 常用的性能指标(七个)

  1. 速率(数据率、比特率):每秒传送多少比特,单位 bit/s;

  2. 带宽:链路能通过的最高数据率(名义上限);

  3. 吞吐量:单位时间实际通过的数据量,永远 ≤ 带宽;

  4. 时延:四段——处理时延 + 排队时延 + 发送时延 + 传播时延;

  5. 时延带宽积:传播时延 × 带宽;

  6. 往返时间 RTT:从发出数据到收到对方确认的总时间;

  7. 利用率:见下面 1-15。

大白话:前三个在说"多快"(速率是名义、带宽是上限、吞吐量是实际),第四个说"多慢",后三个是组合指标。

时延四段必须背熟:

总时延 = 处理时延 + 排队时延 + 发送时延 + 传播时延

其中两个最常考、最容易混的:

发送时延 = 分组长度 L / 发送速率 R     ← 把比特"推上线"的时间
传播时延 = 链路长度 d / 信号传播速率 v  ← 信号在链路上"跑"的时间

记住这个比喻:发送时延是装车时间(装卸工越多装得越快),传播时延是开车时间(跟装卸工人数无关,只看路程和车速)。传输 ≠ 传播,这是全章第一大坑。

1-15 利用率达到 90% 时,时延是最小值的多少倍?

公式(排队论的结果):

D = D0 / (1 − U)

其中 D0 是网络空闲时的最小时延,U 是利用率。代入 U = 0.9:

D = D0 / 0.1 = 10 × D0

答:是最小值的 10 倍。

大白话:分母 (1−U) 是"还剩多少空闲"。利用率越高,路由器队列越容易堆积,排队时延暴涨;U → 1 时 D → ∞,队伍永远排不完。所以链路不是跑得越满越好,运营商也不敢把链路跑满——流量只多一点点,时延就翻了 10 倍。

1-16 非性能特征

费用、质量、标准化、可靠性、可扩展性、易于管理和维护。

与性能指标的区别:性能指标衡量网络"快不快",是纯技术量;非性能特征从经济、服务、运营的角度评价一个网络——"值不值、稳不稳、管得住吗"。有的可量化(费用),有的偏定性(好不好管理)。

大白话:买电脑,跑分是性能,价格、售后、品牌通用性是"非性能"。选网络也一样。

1-17 发送时延 vs 传播时延(计算)

题目:收发两端距离 1000 km,信号在媒体上的传播速率 2×10⁸ m/s。计算下面两种情况的发送时延和传播时延。

先算公共量——传播时延:

传播时延 = 10⁶ m ÷ (2×10⁸ m/s) = 5 ms

(1)数据长度 10⁷ bit,发送速率 100 kbit/s:

发送时延 = 10⁷ ÷ 10⁵ = 100 s
总时延 ≈ 100.005 s(发送时延绝对主导,5 ms 不值一提)

(2)数据长度 10³ bit,发送速率 1 Gbit/s:

发送时延 = 10³ ÷ 10⁹ = 1 μs
总时延 ≈ 5.001 ms(传播时延绝对主导,发送快到可以忽略)

结论:数据率提高了一万倍,总时延并没有缩短一万倍。因为这两笔账互相独立——提高带宽只能压缩"把比特推上线"的时间,而"比特在线上跑"的传播时延只由距离和信号速率决定,带宽再大也一动不动。所以不能笼统地说"带宽越大,时延越小"。

大白话:还是那个卡车比喻。货少、装卸快的时候,全程时间几乎全是"在路上开";货多、装卸慢的时候,几乎全是"装车"。带宽管装车,距离管开车。

1-18 媒体中正在传播的比特数(计算)

题目:信号在媒体中的传播速率 2.3×10⁸ m/s,媒体长度分别为 10 cm、100 m、100 km、5000 km,数据率分别为 1 Mbit/s 和 10 Gbit/s,求媒体中的比特数。

公式就一个:

媒体中的比特数 = 数据率 × 传播时延

先算四种长度的传播时延,再乘数据率:

媒体长度

传播时延

1 Mbit/s 时

10 Gbit/s 时

10 cm

4.35×10⁻¹⁰ s

4.35×10⁻⁴ bit

4.35 bit

100 m

4.35×10⁻⁷ s

0.435 bit

4350 bit

100 km

4.35×10⁻⁴ s

435 bit

4.35×10⁶ bit(4.35 Mbit)

5000 km

2.17×10⁻² s

2.17×10⁴ bit(21.7 kbit)

2.17×10⁸ bit(217 Mbit)

两个极端最有意思:

  • 左上角:1 Mbit/s 时,10 cm 的网线接口里连一个比特都装不下(只有 0.000435 个);

  • 右下角:10 Gbit/s 横跨 5000 km 时,管子里同时躺着两亿多个比特

为什么?用"一个比特有多长"来解释(很好用,后面 1-29 ~ 1-31 全靠它):

数据率 R 表示每秒往线上推 R 个比特,所以推出一个比特要花 1/R 秒;这 1/R 秒里,信号的"头"已经跑了 v × (1/R) 米。于是:

一个比特在链路上的物理长度 = v / R
  • 1 Mbit/s 时,一个比特长 2.3×10⁸ ÷ 10⁶ = 230 米——10 cm 的接口当然塞不下一个比特;

  • 10 Gbit/s 时,一个比特只有 2.3×10⁸ ÷ 10¹⁰ = 2.3 厘米——10 cm 里能排下 4.35 个。

结论一句话:数据率越高 → 每个比特被压得越短 → 同一根管子塞得下越多比特。"时延带宽积"(管中比特数)其实就是管长 ÷ 每个比特的长度,只是换了个角度数数而已。


6. 分层、协议与五层模型(习题 1-19 ~ 1-27)

1-20 网络体系结构为什么要采用分层?

:因为复杂系统一把抓做不了。分层的好处:

  1. 各层独立:把庞大复杂的问题分解成若干局部小问题,各层只解决自己那一小块;

  2. 灵活性好:某层内部实现改了,只要接口不变,上下层都不受影响;

  3. 结构上可分割:各层可以用最合适的技术来实现;

  4. 易于实现和维护

  5. 能促进标准化:每层功能和服务定义清楚,不同厂商才能互通。

日常生活最贴切的例子——邮政系统: 你只管写信、写地址(上层的事);邮局负责分拣、盖戳、转运(下层的事);你不需要知道信是坐火车还是飞机来的,邮局也不用懂你信里写了啥。换一种运输方式,寄信人毫无感知——这正是"某一层实现变了,其他层不受影响"。

1-21 协议与服务有何区别?有何关系?

  • 协议:控制两个对等实体进行通信的规则的集合。是水平的——A 主机的第 n 层 ↔ B 主机的第 n 层;

  • 服务:下层通过层间接口向上层提供的功能。是垂直的——第 n−1 层 → 第 n 层。

关系:本层协议的实现,要靠下面一层提供的服务来支撑;同时本层又向上层提供更高级的服务。上层只能看见服务看不见下面的协议(协议对上层是透明的)。

大白话:你(上层)享受的是"包裹送到"这个服务,走的是固定的接口(填单、取件);而快递公司内部网点之间怎么交接、怎么核对,那是它们之间的协议,你完全不用知道。协议是同行之间的规矩,服务是对客户的承诺。

1-22 网络协议的三要素

  1. 语法:数据与控制信息的结构或格式——报文长什么样、字段怎么排;

  2. 语义:需要发出何种控制信息、完成何种动作、做出何种响应——每个字段是什么意思、该干什么

  3. 同步(时序):事件实现顺序的详细说明——先做什么后做什么、多快做

大白话:拿两个人打电话对号入座——语法 = 说同一种语言、句子得有条理;语义 = "喂"是打招呼、"几点"是在问时间;同步 = 先喂一声再谈事,一方说完另一方再说,不能两个人同时抢着说。

1-23 为什么一个网络协议必须把各种不利的情况都考虑到?

:因为网络环境天生不可靠:数据可能出错、丢失、重复、失序、延迟过大;节点可能宕机;网络可能拥塞。协议如果只规定"一切顺利时怎么走",一遇到这些情况通信就失败。所以协议必须把各种不利情况都考虑到,并规定好应对办法(确认、超时重传、序号、校验……),通信才有健壮性。

大白话:只写"你交货我付款"的合同是废纸,违约条款才是合同的精华。后面第 3 章那一整章的可靠数据传输(rdt、TCP),几乎全都在讲"出错了怎么办"——就是这道题的展开版。

1-24 具有五层协议的体系结构的要点

先看结构的三条要点:

  1. 每一层都完成一项特定功能,并使用下层提供的服务向上层提供服务

  2. 对等层之间(A 主机的第 n 层 ↔ B 主机的第 n 层)遵守本层的协议——这个"对话"是虚的,数据并没有真的横向飞过去;

  3. 真正干活的过程是:发送端从上往下逐层加首部(封装),接收端从下往上逐层剥首部(解封),最底下才是实打实的比特传输。

各层的主要功能与数据单元:

主要功能

数据单元

5 应用层

通过应用进程间的交互完成特定网络应用(HTTP、DNS、SMTP……)

报文

4 运输层

为两台主机中的进程提供通信(TCP/UDP、端口号在这一层)

报文段

3 网络层

为不同主机提供通信,负责选路和转发,让分组找到目的主机

分组(IP 数据报)

2 数据链路层

把网络层交下来的数据组装成,在相邻两节点的链路上传

1 物理层

透明地传送比特流

比特

大白话记法(服务范围一层层收缩):

应用管内容,运输管进程到进程,网络管主机到主机,链路管相邻节点,物理管比特上线。

进程 → 主机 → 相邻节点 → 比特。记不住的时候就从"管到哪一级"想。

1-19 封装与传输效率(计算)

题目:应用层数据交给运输层,加 20 字节 TCP 首部;再交给网络层,加 20 字节 IP 首部;再交给数据链路层(以太网),加首部加尾部共 18 字节。求传输效率。若应用层数据为 1000 字节,效率又是多少?

效率 = 应用层数据 ÷ 实际发送的总数据。

固定开销 = 20 + 20 + 18 = 58 字节(每一层套一层"信封",总共套 58 字节)。

  • 数据 100 字节:效率 = 100 ÷ 158 ≈ 63.3%

  • 数据 1000 字节:效率 = 1000 ÷ 1058 ≈ 94.5%

大白话:这就是套娃快递——商品装盒(TCP 首部)、盒装箱(IP 首部)、箱缠膜贴单(以太网首部尾部)。规律一眼可见:开销是固定的 58 字节,数据越大,分摊越薄。100 字节时近四成带宽在运"面单",1000 字节时就只占 5.5% 了——这也是为什么实际协议都倾向用大一点的分组。

1-25 日常生活中有关"透明"的例子

网络里的"透明" = 某个东西实际存在,但看起来像不存在、感觉不到它。 例子:

  • 戴眼镜:眼镜明明架在鼻子上,但你看东西时感觉不到它——眼镜对你是"透明"的;

  • 打电话:中间的交换机、光缆、一次次转接真实存在,但通话双方只感觉"在跟对方说话",中间过程完全看不见;

  • 物理层透明传输比特流:不管底下是铜线还是光纤,比特都原样到达,上层毫无感觉。

大坑预警:日常汉语说"透明"是"公开、看得清内部"(财政透明、流程透明);网络术语里的"透明"恰恰相反,是"看不见、感觉不到"。考试特别爱在这里设坑。

1-26 名词解释

  • 协议栈:一台主机上各层协议的集合,一层摞一层像叠盘子(TCP/IP 协议栈就是 TCP、IP 这一堆协议的总称);

  • 实体:任何可发送或接收信息的硬件或软件进程——网卡是实体,跑在你机器里的 TCP 模块也是实体;

  • 对等实体:不同机器上位于同一层次的实体(A 主机的运输层 ↔ B 主机的运输层),它们之间的对话规则就是该层协议;

  • 协议数据单元(PDU):对等层之间传送的数据单位,就是前面表里那一列——报文、报文段、分组、帧、比特;

  • 服务访问点(SAP):同一系统中相邻两层实体交换信息的逻辑接口。最典型的例子:运输层向应用层提供的 SAP 就是端口号

  • 客户、服务器、客户-服务器方式:按"谁先发起这次通信"判定——发起方是客户进程,等待连接的是服务器进程。

1-27 everything over IP 和 IP over everything 的含义

  • everything over IP:当今互联网上的各种应用(Web、邮件、DNS、视频、游戏……)都建立在 IP 之上、通过 IP 网络互联——上面的应用什么都有

  • IP over everything:IP 可以架设在各种底层网络之上(以太网、WiFi、光纤、4G/5G……),不管底层是什么技术,IP 都能跑——下面的网络什么都有

这就是著名的沙漏模型——IP 是沙漏的细腰:

   应用:Web   邮件   DNS   视频   游戏   …      ← everything
          \    |     |     |    /
           \   |     |    |   /
            \  |     |   |  /
             [     IP 细腰     ]                 ← IP
            /  |     |   |  \
           /   |     |    |   \
          /    |     |     |    \
   底层:以太网  WiFi  光纤  4G/5G  …            ← everything

上面万千应用、下面万千网络,全都收敛到腰上这一个 IP。互联网能一统天下,靠的就是这种"中间统一、两头百花齐放"的设计。


7. 四道硬核计算题(习题 1-28 ~ 1-31)

1-28 四种发送方式,收完 1.5 MB 各要多久?(本章最重要的一道大题)

题目:传送 1.5 MB 的文件,分组长度 1 KB,RTT = 80 ms,建立 TCP 连接需要 2×RTT = 160 ms。分别计算四种情况下,接收方收完最后一个比特所需的时间。

先把底账算清楚(四种情况共用):

1.5 MB = 1.5 × 2²⁰ B = 1 572 864 B = 12 582 912 bit
分组数 = 1.5 MB ÷ 1 KB = 1536 个
10 Mbit/s 下,把所有比特发上线的总发送时延 = 12 582 912 ÷ 10⁷ ≈ 1.258 s
建立连接 = 2RTT = 0.16 s

(1)连续发送:链路一直满载

分组一个接一个发,中间不休息,发送时延一口气付完:

t = 2RTT + 总发送时延 = 0.16 + 1.258 ≈ 1.42 s

(2)停等:每发完一个分组等一个 RTT

发送的总时间没变(还是 1.258 s),但每两个分组之间要干等一个 RTT。1536 个分组需要等 1535 次(最后一个不用等):

t = 0.16 + 1.258 + 1535 × 0.08
  = 0.16 + 1.258 + 122.8
  ≈ 124.2 s

等待时间占了 98%,链路几乎全程在"晒太阳"。

(3)每个 RTT 最多发 20 个分组(发送极快,发送时延忽略)

1536 ÷ 20 = 76.8 → 需要约 77 个 RTT 窗口

t = 0.16 + 76.8 × 0.08 ≈ 6.30 s
(若把最后一个不满的窗口也补满算一个整 RTT,则为 77 × 0.08 + 0.16 = 6.32 s)

(4)慢启动式:第 n 个 RTT 发 2ⁿ⁻¹ 个

第 1 个 RTT 发 1 个、第 2 个发 2 个、第 3 个发 4 个……前 n 个 RTT 一共能发:

1 + 2 + 4 + … + 2ⁿ⁻¹ = 2ⁿ − 1  (个分组)

要发 1536 个:

2¹⁰ − 1 = 1023  < 1536   (不够)
2¹¹ − 1 = 2047  ≥ 1536   (够了)

所以需要 11 个 RTT(第 11 个窗口里只需要发 1536 − 1023 = 513 个):

t = 2RTT + 11 × RTT = 0.16 + 0.88 = 1.04 s

这道题的灵魂:四种情况的链路一模一样(10 Mbit/s)、文件一模一样,结果从 124.2 s 到 1.04 s 相差 120 倍。 差在哪?不在带宽,而在"允许多少数据同时在路上":

  • 停等:发一个、眼看着它走完全程才发下一个,链路 98% 的时间空着;

  • 连续发送:把管道填满,一路满载;

  • 慢启动:从 1 开始指数增长,几步就把管道灌满。

这个"每轮允许发多少"就是窗口。第 (4) 问的发送方式,正是 TCP 慢启动的雏形——第 5 章拥塞控制会再见到它。

口径小贴士:这道题不同资料在数值上可能有一点点出入,来源就两处:① 是否把最后一个比特在链路上还要跑的半个 RTT(40 ms) 也算进去;② 第 (3) 问不满的那个窗口是否补满算一个整 RTT。差异都在 0.04 s 以内,方法完全一致,不影响任何结论。另外注意教材取 1 MB = 2²⁰ B(所以是 1536 个分组);如果按 1 MB = 10⁶ B 算会得到 1500 个分组,数字会略有不同。

1-29 让发送时延等于传播时延,需要多大带宽?

题目:50 km 的点对点链路,信号传播速率 2×10⁸ m/s。链路的带宽应为多少,才能使传播时延和发送一个分组的发送时延一样大?分组取 100 字节和 512 字节两种情况。

先算传播时延:

t传播 = 5×10⁴ m ÷ (2×10⁸ m/s) = 2.5×10⁻⁴ s = 0.25 ms

令发送时延 = 传播时延(L / R = 0.25 ms):

100 字节 = 800 bit:   R = 800 ÷ 2.5×10⁻⁴ = 3.2×10⁶ bit/s = 3.2 Mbit/s
512 字节 = 4096 bit:  R = 4096 ÷ 2.5×10⁻⁴ ≈ 1.64×10⁷ bit/s ≈ 16.4 Mbit/s

物理图像(很漂亮):3.2 Mbit/s 时,一个比特长 v/R = 2×10⁸ ÷ 3.2×10⁶ = 62.5 米;800 个比特 × 62.5 米 = 50000 米 = 50 km,正好铺满整条链路

也就是说:第一个比特刚到达终点,最后一个比特刚离开起点,整个分组头尾相连、不多不少铺满全程——这就是"发送时延 = 传播时延"的物理含义。

至于分组变大(512 字节)反而需要更大带宽:因为要在同样长的时间(0.25 ms)里把更多比特推上线,接口就得吐得更快——比特被压得更短(12.2 米一个),4096 个正好还是铺满 50 km。

1-30 把链路上的比特画出来(1 kbit/s)

题目:链路长 20000 km,传播速率 2×10⁸ m/s,数据发送速率 1 kbit/s,要发送 100 bit。画出(1)100 bit 刚发送完时、(2)再经过 0.05 s 后,链路上比特的样子。

先算两个数,这题的精髓就在它俩相等:

发送时延 = 100 bit ÷ 1000 bit/s = 0.1 s
传播时延 = 2×10⁷ m ÷ (2×10⁸ m/s) = 0.1 s

两个都是 0.1 s,所以"最后一个比特刚发完"的那一刻,恰好就是"第一个比特刚到接收端"的那一刻。

一个比特的长度 = v/R = 2×10⁸ ÷ 10³ = 2×10⁵ m = 200 km

图一:100 bit 刚发送完(t = 0.1 s)

发送端 ●─────────────────────────────────────────────────────────● 接收端
      x=0                                                    x=20000 km

        [1][2][3][4] ······················ [97][98][99][100]
        ←———— 100 个比特,每个 200 km,100 × 200 = 20000 km ————→
                     整条链路被铺满,一个不多一个不少

图二:再经过 0.05 s(t = 0.15 s)

比特以 2×10⁸ m/s 继续前进,0.05 s 又走了 v × 0.05 = 10000 km。最先出发的 50 个比特已经进入接收端,剩下的 50 个(第 51 ~ 100 个)走在链路的后半段,前半段已经空了:

发送端 ●─────────────────────────────────────────────────────────● 接收端
      x=0                                                    x=20000 km

        ( 前面 10000 km 已经空了 )     [51][52] ····· [99][100]
                                          ←— 剩 50 个比特 —→

为什么这么巧? 这一问本质上就是 1-18 的"管子里有多少比特":链路容量 = 传播时延 × 带宽 = 0.1 s × 1000 bit/s = 100 bit,而我们要发的正好是 100 bit——刚好把管子填满,所以你能同时在一整条 20000 km 的链路上看见 100 个比特排着队跑。

1-31 换成 1 Mbit/s 再比较

题目:条件同上,数据发送速率改为 1 Mbit/s,和第 1-30 题结果比较,能得出什么结论?

发送时延 = 100 bit ÷ 10⁶ bit/s = 10⁻⁴ s = 0.1 ms  (比传播时延小 1000 倍)
传播时延 = 0.1 s                                  (不变,只看距离和速度)
一个比特的长度 = v/R = 2×10⁸ ÷ 10⁶ = 200 m

发完的那一刻,第一个比特只走了 v × 0.0001 s = 20 km——只占 20000 km 链路的 0.1%:

发送端 ●─────────────────────────────────────────────────────────● 接收端
      x=0                                                    x=20000 km

        [1]···[100]
        |← 只占 20 km →|   ←———— 剩下 19980 km 全是空的 ————→

两题对比:

1-30(1 kbit/s)

1-31(1 Mbit/s)

一个比特多长

200 km

200 m

发完 100 bit 用了多久

0.1 s

0.1 ms

发完时第 1 个比特到哪

正好到终点

只走了 20 km

100 bit 占用链路

100%(铺满)

0.1%

链路"容量"(时延带宽积)

100 bit

100000 bit

三条结论:

  1. 一个比特在链路上的物理长度 = v / R,与数据率成反比——速率高一万倍,比特短一万倍。同一根链路,慢时像一条塞满货的传送带,快时像几颗芝麻撒在空荡荡的大路上;

  2. 一段数据占多长的链路 = v × 发送时延,与数据率成反比、与距离无关

  3. 高速长距链路极难填满——它的"管子"又粗又长(容量 10 万比特),你只发 100 比特,利用率 0.1%。要让这样的链路物尽其用,就必须持续发送足够多的数据。这正是第 5 章 TCP 窗口存在的理由。


8. 公式速查表

公式

含义

相关习题

发送时延 = L / R

把比特"推上线"的时间(装车)

1-10、1-11、1-17、1-28、1-29

传播时延 = d / v

信号在链路上"跑"的时间(开车)

1-17、1-18、1-29

总时延 = 处理 + 排队 + 发送 + 传播

四段时延

1-14

时延带宽积 = 传播时延 × 带宽

管子里同时飞着的比特数

1-18、1-30

一个比特的长度 = v / R

比特在链路上占多长

1-18、1-29、1-30、1-31

D = D0 / (1 − U)

利用率对时延的放大

1-15

效率 = 数据 ÷(数据 + 开销)

封装效率

1-19

分组交换更快 ⟺ (k−1)·p/b < s

两种交换方式的时延对比

1-10

p = √(x·h / (k−1))

最优分组长度

1-11

前 n 轮共发 2ⁿ − 1 个

慢启动累计发送量

1-28(4)


9. 习题-考点对照表

题号

考点

一句话答案

1-01

网络提供的服务

连通性 + 共享

1-02

分组交换要点

分组、加首部、存储转发

1-03

三种交换方式对比

电路 = 包场,报文 = 寄长信,分组 = 拆快递

1-04

互联网的历史地位

信息流动从单向变成双向、实时、可交互

1-05

互联网发展三阶段

ARPANET → 三级结构 NSFNET → 多层次 ISP

1-06

标准制定三阶段

互联网草案 → 建议标准 → 互联网标准(IETF/RFC)

1-07

internet vs Internet

泛称"互连网" vs 专指 TCP/IP 全球互联网

1-08

网络的分类

按范围 WAN/MAN/LAN/PAN;按使用者公用/专用

1-09

主干网 vs 接入网

省际高速 vs 最后一公里瓶颈

1-10

两种交换方式的时延

(k−1)·p/b < s 时分组交换更快

1-11

最优分组长度

p = √(x·h/(k−1)),k=1 时不切包

1-12

边缘 vs 核心

主机(C/S、P2P)vs 网络与路由器(存储转发)

1-13

C/S vs P2P

角色是否固定;谁先开口谁是 client

1-14

七个性能指标

速率、带宽、吞吐量、时延、时延带宽积、RTT、利用率

1-15

利用率与时延

D = D0/(1−U),90% → 10 倍

1-16

非性能特征

费用、质量、标准化、可靠性、可扩展性、易管理维护

1-17

发送时延 vs 传播时延

提高带宽只缩短发送时延,传播时延看距离

1-18

媒体中的比特数

数据率 × 传播时延;比特长度 v/R

1-19

封装与效率

固定开销 58 字节;100 B→63.3%,1000 B→94.5%

1-20

为什么要分层

独立、灵活、可分割、易维护、促标准化(邮政例子)

1-21

协议 vs 服务

协议水平(对等实体间),服务垂直(上下层间)

1-22

协议三要素

语法、语义、同步

1-23

为何考虑不利情况

网络天生不可靠,出错/丢失/乱序都得有对策

1-24

五层体系结构

应用/运输/网络/链路/物理,及各层数据单元

1-25

透明

实际存在但感觉不到(与日常汉语的"公开"相反)

1-26

名词解释

协议栈、实体、对等实体、PDU、SAP、客户/服务器

1-27

沙漏模型

everything over IP + IP over everything,IP 是细腰

1-28

四种发送方式对比

1.42 s / 124.2 s / 6.3 s / 1.04 s

1-29

发送时延 = 传播时延求带宽

3.2 Mbit/s(100 B)、16.4 Mbit/s(512 B)

1-30

画出链路上的比特

1 kbit/s:比特长 200 km,100 bit 铺满 20000 km

1-31

高速链路的对比

1 Mbit/s:比特长 200 m,只占 20 km,链路 99.9% 空着


10. 避坑清单:最容易错的十个点

  1. 分组交换不是"头到了就转发"——每一跳都是整包到齐才转发,只是"包"比"报文"小。头到了就走是另一种东西,不是分组交换。

  2. k 段链路 = k+1 个节点。要付存储转发代价的是中间的 k−1 个路由器;源点只管发、终点只管收。

  3. 发送时延 ≠ 传播时延。带宽只管发送时延(装车),传播时延只看距离和信号速度(开车)。"带宽越大时延越小"是错的。

  4. 首部开销不是"路由器的处理开销",而是多出来的比特要占线路时间——每个分组每跳都要多花 h/b 的发送时间。

  5. "透明"不是"公开"。网络术语里的透明 = 存在但感觉不到(眼镜、电话线路),跟日常汉语说"财政透明"正好相反。

  6. 利用率不是越高越好。90% 的利用率意味着时延是最小值的 10 倍,U → 1 时时延趋于无穷。

  7. internet ≠ Internet。小写是泛称,大写专指用 TCP/IP 的那一个。

  8. 协议 ≠ 服务。协议是水平的(对等实体之间),服务是垂直的(下层给上层)。

  9. P2P 里也有 client 和 server。区别是"角色是否固定",不是"有没有"。谁先开口谁是 client。

  10. 计算题的两个口径:教材取 1 MB = 2²⁰ B(于是 1.5 MB 是 1536 个 1 KB 分组,不是 1500 个);慢启动累计是 2ⁿ−1,2 MB 文件要 12 个 RTT 而不是 11 个(因为 2¹¹−1 = 2047 < 2048,差一个不够)。


11. 自测 10 问(附答案)

先自己做,再对答案。

  1. 用一句话解释"存储转发",并说明它和"头到了就转"的区别。

  2. 1-11 的最优分组长度公式里,分母为什么是 k−1 而不是 k?

  3. 发送时延和传播时延分别取决于什么?提高带宽能缩短哪一个?

  4. 利用率从 90% 降到 50%,时延从最小值的多少倍变成多少倍?

  5. 一条带宽 10 Mbit/s、传播时延 10 ms 的链路,"管子"里同时装着多少比特?

  6. 网络术语里的"透明"和日常说的"透明"有什么不同?

  7. 分组交换比电路交换快,条件是什么?

  8. 2 MB 文件、1 KB 分组,按 1-28(4) 的慢启动方式发送,需要几个 RTT?

  9. 为什么首部开销会让分组交换的总时延变大?这笔时间付在哪里?

  10. 一条 5000 km、10 Gbit/s 的链路(v = 2×10⁸ m/s),管子里有多少比特?一个比特在链路上有多长?

答案:

  1. 每个节点必须收完整包、暂存、查地址后再转发;"头到了就转"不需要等整包到齐,那是另一回事。差别就是"整包到齐才走"。

  2. 因为源点发送的数据量已经算在第一项 x/b 里了,终点只收不转,所以整条路上只有中间 k−1 个路由器各付一次存储转发代价。

  3. 发送时延 = L/R,取决于分组长度和带宽;传播时延 = d/v,取决于距离和信号传播速率。提高带宽只能缩短发送时延。

  4. 90% 时是 10 倍(D = D0/0.1);50% 时是 2 倍(D = D0/0.5)。从 10 倍降到 2 倍,改善 5 倍。

  5. 10 Mbit/s × 10 ms = 10⁷ × 10⁻² = 0.1 Mbit(十万比特)。

  6. 网络里的"透明"是"存在但感觉不到"(像眼镜);日常的"透明"是"公开、看得见内部"。两者意思相反。

  7. (k−1)·p/b < s:存储转发的额外代价小于电路建立时间时,分组交换更快。

  8. 需要 n 满足 2ⁿ − 1 ≥ 2048。2¹¹ − 1 = 2047 < 2048 不够,2¹² − 1 = 4095 ≥ 2048,所以要 12 个 RTT(第 12 个窗口只发 1 个)。小心这个边界!

  9. 因为首部是多出来的比特,它们也要在源点和每一个路由器上花时间发送,每一跳的发送时延从 p/b 变成 (p+h)/b——这笔钱付在线路上,不是付在路由器里

  10. 传播时延 = 5×10⁶ ÷ (2×10⁸) = 25 ms;管中比特 = 10¹⁰ × 0.025 = 2.5×10⁸ bit(250 Mbit);一个比特长 = 2×10⁸ ÷ 10¹⁰ = 0.02 m = 2 cm


12. 一页纸总结(考前最后一眼)

  1. 网络给两样东西:连通性 + 共享;它是双向、实时、多对多的信息革命。

  2. 三种交换方式:电路(包场)、报文(寄长信)、分组(拆快递);分组交换的核心是存储转发:整包到齐才转发

  3. 分组交换 vs 电路交换:当 (k−1)·p/b < s 时分组更快;首部是"多出来的比特要占线路时间",最优分组长度 p = √(x·h/(k−1))。

  4. 发展三阶段:ARPANET → 三级结构 NSFNET → 多层次 ISP;标准三阶段:互联网草案 → 建议标准 → 互联网标准(IETF / RFC)。

  5. 边缘(主机,C/S 与 P2P)与核心(网络与路由器,存储转发);P2P 中依然有客户和服务器,谁先开口谁是 client。

  6. 七个性能指标 + 四段时延;发送时延看带宽,传播时延看距离,两笔账互不相干。

  7. D = D0/(1−U):利用率 90% → 时延是最小值的 10 倍。

  8. 分层(独立、灵活、促标准化);协议(水平)与服务(垂直);协议三要素(语法、语义、同步);五层模型及各自的数据单元。

  9. 封装开销固定 58 字节,数据越大效率越高;"透明"= 存在但感觉不到。

  10. 计算题的口诀:发送 = 装车,传播 = 开车,带宽管装车,距离管开车,管子里装多少 = 传播时延 × 带宽。


本文根据谢希仁《计算机网络》第一章教材内容与课后习题(1-01 ~ 1-31)整理,用于复习与交流,如有疏漏欢迎指正。