☰
报文交换与分组交换时延对比:存储转发与流水线深度解析
2026/10/8 19:58:28 网站建设 项目流程

2010年统考的计算机网络卷子里,有一道第34题,考的是报文交换和分组交换的时延对比。这道题当年把不少考生绕晕了,后来也成了很多模拟卷、辅导书反复引用的经典母题。说实话,第一次做这类题的人十有八九会怀疑自己:报文交换看起来就是一个大报文一路传,分组交换是把它切碎了传,怎么算出来的时间能差这么多?其实计算本身并不复杂,难的是没把“存储转发”和“流水线”这两个概念在脑子里转起来。这篇文章就拿一道和2010年34题高度类似的完整题目,把报文交换和分组交换的时延从原理到推导重新走一遍,再把最容易踩的坑逐个拆开。不管你是408复习刚起步,还是二刷真题想搞明白底层逻辑,都建议把这套思路吃透,因为时延计算题的套路就那么几发,翻来覆去换汤不换药。

1. 这道题为什么让历届考生又爱又恨

1.1 2010年34题到底在考什么

2010年统考第34题,核心考点就是报文交换和分组交换在存储转发网络中的时延对比。放在408的计算机网络里,这个考点非常典型,分值不高,但每年都有不少人在上面栽跟头。究其原因,倒不是公式难记,而是很多同学复习时把精力都放在TCP、IP这些“大块头”上,忽略了交换技术这种最基础的内容。等题目里甩出一堆链路、分组、传播时延的数字,就不知道该往哪个公式里套了。

这道题真正考察的核心有三个。第一是存储转发机制,也就是每个路由器必须完整接收一个报文或分组之后才能开始转发,这一点直接决定了时延公式里为什么要乘以链路数。第二是时延的构成,发送时延、传播时延、处理时延、排队时延,这“四兄弟”里题目给了哪些、没给哪些,心里要有数。第三是分组交换的流水线效应,多个分组可以在不同链路上同时传输,这是它区别于报文交换的根本优势。只要把这三个点吃透,这道题基本就拿下了。

1.2 存储转发机制是整道题的地基

存储转发这个词,听起来高大上,其实特别生活化。想象一个快递转运中心:一辆货车到了,中心不会说“车还没卸完我就开始装下一辆”,而是要等整个车上的包裹清点入库、重新分配装车之后,下一程运输才开始。网络里的路由器干的就是这个活,它先把一个报文或分组完整收下来,放在缓冲区里,然后才向下一跳转发。好处是灵活、可靠,坏处就是每一跳都引入一个完整的发送时延。

做题前必须先确认节点是不是存储转发。408题目里默认都是存储转发,除非题目明确说“采用直通转发”或者“边收边发”。直通转发则完全不同,节点收到一部分数据就开始往外转,所以不存在“每跳都要完整发一遍”的累加效果,公式要另算。不少人丢分,就是没看清这个默认前提。

1.3 为什么这道题值得反复做

很多同学觉得这题才2分,随便看看就过了。但实际上,这道题背后牵出的是一整类计算题:时延组成、带宽、吞吐量、电路交换与分组交换对比、存储转发与直通转发对比,都跟它有关。近几年的408真题虽然不再原样照搬2010年的数字,但换汤不换药,考察逻辑完全一致。把这道类似题彻底算清,相当于给整个交换时延计算模块打好了一个稳定的框架,后面遇到任何变体都不会慌。

2. 报文交换和分组交换的本质区别

2.1 报文交换:一个大箱子逐站转运

报文交换的思路很朴素:待发送的数据整体作为一个报文,沿路径每一站都完整接收、完整存储、再完整转发。中间经过多少个节点,源节点就要把这个报文“重发”多少次。你可以理解为寄一个超大的行李箱,从北京发到广州,行李在每一个中转站都要被卸下来、扫码、再重新装车,整个箱子没到,下一站的车就不能出发。

这种方式的优点是实现简单,整个报文作为一个整体,不容易乱序,接收端不用重组,而且可以在中途节点存储起来等待合适线路。缺点也非常明显:时延大。尤其是大报文,每跳都要花同样的时间传输,经过n个中间节点就要(n+1)倍的单跳发送时间,链路利用率被严重拉低。如果链路很长、报文很大,这个时延会成倍放大。

2.2 分组交换:拆成小包裹流水线运输

分组交换的核心思想是“切割+流水线”。源节点先把完整报文切成若干个大小固定的分组,然后逐个发送出去。关键点在于:分组1还在中间路由器上转发的时候,分组2已经在源节点开始发送了,分组3紧随其后。于是整个传输过程就像一个管道,多个分组同时在不同链路上跑,而不是像报文交换那样“同一时刻只有一段链路在工作”。

用快递打比方:一个超大箱子拆成5个小包裹,第一个包裹到达中转站时,第二个包裹已经搭上了开往中转站的另一辆车。车和车之间错开时间出发,但整条运输线上始终有包裹在流动。这种并行流水线,是把时延降下来的核心原因。

2.3 时延公式的通用写法

任何一个时延计算题,先明确四类时延怎么处理:

  • 发送时延(传输时延):数据长度 / 发送速率,代表一个数据块从第一个bit到最后一个bit发出所花的时间。
  • 传播时延:链路长度 / 信号传播速率,或者题目直接给出,代表一个bit在链路上跑过去的时间。
  • 处理时延:路由器检查、分析分组所花的时间,408计算题里基本默认忽略。
  • 排队时延:分组在路由器出口队列里等待的时间,无拥塞时忽略,题目会单独说明。

报文交换的总时延可以写成:

T报文 = k × (L / R) + k × τ

其中k是链路数,也就是“跳数”;L是报文总长度;R是链路发送速率;τ是每段链路的传播时延。因为报文每跳都要完整发送一次,所以发送时延要乘跳数;传播时延每段都有,也要乘跳数。

分组交换在理想流水线无拥塞情况下:

T分组 = (k + N - 1) × (p / R) + k × τ

其中N是分组数,p是每个分组长度。这里(k + N - 1)是很多同学容易记错的地方:第一个分组要经过k跳,所以它是k个发送时延;后面N-1个分组只需要在源节点依次发出,每个额外占用一个p/R。流水线把中间节点的大部分发送时延“重叠”掉了,所以总时延并不是k×N×p/R,而是(k+N-1)×p/R。

3. 类似题完整手算:15.3ms和7.3ms是怎么来的

3.1 类似题题干与隐含条件

原题通常是选择题,这里我整理成一道计算题,参数结构和2010年34题非常接近:

源主机H1与目的主机H2之间通过两台路由器R1、R2连接,形成3段链路。每段链路带宽均为10Mbps,每段链路的传播时延均为0.1ms。H1要发送一个总长度为50000bit的报文给H2。若采用报文交换,整个报文作为一个整体逐跳转发;若采用分组交换,报文被等分为5个分组,每个分组长度为10000bit,分组首部长度忽略不计。路由器均采用存储转发方式,忽略处理时延和排队时延。请分别计算报文交换和分组交换下,最后一个数据bit到达H2的总时延。

先做单位换算,10Mbps = 10^7 bit/s,所以:

  • 报文发送时延 L/R = 50000 / 10^7 = 0.005s = 5ms
  • 分组发送时延 p/R = 10000 / 10^7 = 0.001s = 1ms
  • 每段传播时延 τ = 0.1ms

这里要特别记住:中间是两台路由器,但链路是3段。链路数k = 路由器数 + 1,这一步错了后面全错。

3.2 报文交换时延计算全过程

报文交换下,报文作为一个整体从H1发出,经过R1完整接收,再完整发往R2,R2完整接收后再发往H2。

第一步,H1发出整个报文需要5ms。第二步,R1收到完整报文后,向R2转发又需要5ms。第三步,R2收到完整报文后,向H2转发又需要5ms。所以发送时延总共是3 × 5 = 15ms。

传播时延是3段链路各0.1ms,总共0.3ms。处理时延和排队时延题目说忽略,不用管。

T报文 = 15 + 0.3 = 15.3ms

也就是说,从H1开始发送报文第一个bit,到最后一个bit到达H2,一共是15.3ms。注意最后加传播时延时,是把3段链路的传播都算上了,因为最后一个bit确实要从R2传到H2;更严谨地说,最后一个bit经过每段链路时都产生了对应的传播时延,所以三段全加。

3.3 分组交换时延计算全过程

分组交换下,5个分组依次从H1发出,路由器边收边转,流水线起来之后时间大幅压缩。

单个分组发送时延是1ms。第一个分组从H1出发,走完3段链路,每段链路都要完整发送一次,所以第一个分组的发送时延是3 × 1 = 3ms,再加上3段传播时延0.3ms,第一个分组到达H2的时刻是3.3ms。

接下来,第二个分组在第一个分组出发之后1ms才开始从H1发出。在理想流水线无拥塞情况下,每个后续分组到达H2的时间,都比前一个分组晚1ms。所以最后一个也就是第5个分组,比第一个分组晚了(5 - 1) × 1 = 4ms。

T分组 = 3.3 + 4 = 7.3ms

也可以直接套之前写的公式:

T分组 = (k + N - 1) × (p / R) + k × τ = (3 + 5 - 1) × 1 + 3 × 0.1 = 7 + 0.3 = 7.3ms

这里的7ms由两部分组成:H1依次发完5个分组需要5ms(N×p/R),最后一个分组还要在R1、R2上各完成一次转发,也就是额外的2ms((k-1)×p/R)。5 + 2 = 7,正好对应公式里的(k+N-1)×p/R。

3.4 时间轴对比:两种方案的差距在哪里

把两种方式的链路占用情况摊开看,差距一目了然。

报文交换下,H1发出报文占用链路的时间是0~5ms,R1向R2转发占用5~10ms,R2向H2转发占用10~15ms。整个传输过程里,同一时刻只有一段链路在传输数据,其余链路干等着。

分组交换下,H1从0ms开始依次发送5个分组,每个1ms,到5ms时5个分组全部发完。R1收到分组1后立即转发,R2收到后立即转发。因为分组足够小,分组2到达R1时R1刚发完分组1,链路几乎无缝衔接。于是在任意一个时间段,3段链路上都有数据在流动,传输过程变成了管道式的流水线。

用一个简单时间表来看:

  • H1发送:分组1在0~1ms,分组2在1~2ms,分组3在2~3ms,分组4在3~4ms,分组5在4~5ms。
  • R1转发:分组1在1~2ms,分组2在2~3ms,分组3在3~4ms,分组4在4~5ms,分组5在5~6ms。
  • R2转发:分组1在2~3ms,分组2在3~4ms,分组3在4~5ms,分组4在5~6ms,分组5在6~7ms。

再加上每段链路的0.1ms传播时延,最后一个分组最终在7.3ms到达H2。这就是分组交换的核心优势:不是传输总量变小了,而是通过流水线让多条链路同时忙碌,压缩了总时间。

3.5 两种结果的直观对比

交换方式发送时延传播时延总时延
报文交换3段链路 × 5ms = 15ms0.3ms15.3ms
分组交换(3 + 5 - 1) × 1ms = 7ms0.3ms7.3ms

差值8ms,接近节省了一半时间。做题时如果算出来两种方式时延几乎一样,基本可以断定公式用错了。

4. 这些细节最容易丢分,请对着检查

4.1 链路数、路由器数、跳数,到底该用哪个

这是最基础也最冤枉的失分点。题目说“经过两个路由器”,很多同学条件反射地认为k=2,最后按两跳算,差了整整一跳的发送时延。记住一条铁律:源主机到目的主机之间,中间有n个路由器,链路数就是n+1。这台类似题里两台路由器,所以k=3。

报文交换里少算一段链路,会少掉一个完整的报文发送时延5ms,答案从15.3ms变成10.3ms,选项里可能恰好有这个干扰项。分组交换里少算一段链路,也会少掉一个分组的发送时延1ms。这种错误属于“读题不画图”,没有任何难度,但考场上非常容易犯。我自己的习惯是,拿到题先在草稿纸上把H1、R1、R2、H2画出来,再在它们之间标出每段链路的带宽和传播时延,数一遍再动笔。

4.2 分组首部开销不能想当然

很多题目不会像这道类似题一样说“首部忽略不计”。如果每个分组有首部,比如h bit,那么每个分组实际在线路上传输的长度是p + h,而不是数据部分p。计算时要用(p + h)/R作为单个分组的发送时延。

还有一种情况是题目给的是“报文总长度L”和“每个分组数据部分长度p”,没说分几组。这时候分组数N = ceil(L / p),最后一个分组可能装不满,实际传输的最后一个分组长度可能小于p。如果题目变态一点,还可能问你“最后一个分组的发送时延是多少”,那就得单独算,不能用平均分组长度直接带公式。这些细节,越往后考越是重点。

4.3 传播时延别加错了位置

分组交换的公式里,传播时延加的是k×τ,也就是一条路径上所有链路传播时延之和。有些同学会把每个分组的传播时延都加一遍,写成了(k + N - 1) × (p/R + τ),结果多算了(5-1)×0.1 = 0.4ms,答案变成7.7ms。看起来差别不大,但选择题里这种数值经常作为陷阱出现。

为什么传播时延只加一次?因为所有分组走过的路径相同,传播时延总和都一样。第一个分组到达H2的时间包含了3段链路传播时延,后续分组与它的时间差只取决于源节点发送的间隔p/R,跟传播时延无关。所以公式里传播时延部分不能乘以N,只能出现一次总和。

4.4 典型错误速查表

错误类型错误算式错误结果错在哪里
把路由器数当链路数2 × 5 + 0.310.3msk应为3,不是2
报文交换忘了每跳转发5 + 0.35.3ms漏了R1、R2的转发发送时延
分组交换按报文交换算3 × 5 + 0.315.3ms没理解流水线重叠
分组交换漏掉中间转发5 × 1 + 0.35.3ms第一个分组还需在R1、R2上转发
传播时延乘以分组数7 × (1 + 0.1)7.7ms传播时延只能沿路径加一次

每次做完这类题,可以对照这个表自查一下,看看自己是不是中了其中某一条。

4.5 别把多径时延和这个搞混

复习时偶尔会看到“多径时延”这个词,有些人第一次接触容易慌,以为和分组多跳转发有关。其实多径时延属于无线通信里的概念,指的是信号经过不同路径到达接收端的时间差,会导致符号间干扰。408统考的计算题里很少深入这个,通信原理方向才会重点讲。做题时看到“多径”两个字,先判断是不是物理层无线信道的内容,别硬往存储转发公式里套。至少对这篇讨论的交换时延计算,多径时延是完全不同的概念,放一边就行。

5. 换几个条件你还认识吗:三道变形题实战

5.1 变形一:分组带首部开销怎么办

继续用刚才那道题的数据,假设每个分组都有200bit的首部,分组交换还划算吗?

每个分组的数据部分是10000bit,加上首部后实际传输长度是10200bit,单个分组发送时延变成1.02ms。报文交换时延还是15.3ms,因为报文不需要额外加首部。分组交换时延变成:

T = (3 + 5 - 1) × 1.02 + 0.3 = 7.14 + 0.3 = 7.44ms

仍然比15.3ms快不少。这就是为什么实际网络中分组交换是主流:首部开销虽然存在,但相对流水线带来的时间收益来说很小。但要是把报文切得很碎,比如每组长100bit、首部也有100bit,额外开销翻倍,总传输量变大,分组交换的优势就会被稀释。这种“开销与并行收益的取舍”是好的出题方向,做综合题时值得留意。

5.2 变形二:链路带宽不相同

如果三段链路带宽不同,比如10Mbps、10Mbps、100Mbps,报文交换简单,发送时延逐段相加:

T报文 = 50000/10^7 + 50000/10^7 + 50000/10^8 + 0.3 = 5 + 5 + 0.5 + 0.3 = 10.8ms

分组交换呢?每个分组在三段链路上一共要花1 + 1 + 0.1 = 2.1ms的发送时延,第一个分组到达H2的时间是2.1 + 0.3 = 2.4ms。后续每个分组仍以源节点发送一个分组的时间(1ms)为间隔依次到达,所以:

T分组 = 2.4 + (5 - 1) × 1 = 6.4ms

这里有个隐含前提:中间链路速率不能低于源节点链路速率,否则分组会在某个路由器排队等待,时间间隔就不再是源节点的发送间隔了。408题目一般不会把这种情况做成复杂计算,但如果题干明确说“队列为空”“忽略排队时延”,那就默认理想流水线成立。

5.3 变形三:电路交换、报文交换、分组交换三方对比

把电路交换加进来,题目难度会往上走一点。假设建立电路需要0.5ms,之后路径独占,整条报文一次性连续发完,中间交换机不存储转发。那么电路交换的总时延为:

T电路 = 0.5 + 50000 / 10^7 + 0.3 = 0.5 + 5 + 0.3 = 5.8ms

比上面的报文交换15.3ms和分组交换7.3ms都要快。那为什么电路交换没有完全取代分组交换?因为电路交换建立时间长、独占信道、线路利用率低,一旦没有数据要传,信道依然被占着;分组交换则允许多个用户共享链路,统计复用效率高。408如果考这个对比,一般是问“为什么分组交换更适合突发数据传输”,答案指向共享带宽和按需分配。

6. 408备考时延计算题的实用复习建议

6.1 时延计算的公式武器库

把常用的公式整理在一起,考前过一遍很快:

  • 发送时延 = 数据块长度 / 发送速率
  • 传播时延 = 链路长度 / 信号传播速率,或题目直接给定
  • 报文交换(存储转发):T = k × (L/R) + 每段传播时延之和
  • 分组交换(存储转发,理想流水线):T = (k + N - 1) × (p/R) + 每段传播时延之和
  • 分组首部开销存在时,p要换成(p + h)
  • 分组数N = ceil(数据部分总长 / 每个分组数据部分长度)

单位换算是另一个隐形考点。408里经常出现Mbps、Kbps、ms、μs混在一起的情况。Mbps里的M是10^6,1Mbps = 10^6 bit/s,不是2^20。很多同学算到最后差个数量级,就是栽在单位进制上。建议动笔第一步就把所有单位统一成bit、s、Mbps。

6.2 做这类题的四步套路

第一步,画图。把源主机、所有路由器、目的主机按顺序画出来,标出每段链路的带宽和传播时延,数清链路数k。第二步,明确交换方式和节点类型,是存储转发还是直通转发,有无排队时延,有无首部开销。第三步,算单个参数,比如L/R、p/R、τ,注意单位统一。第四步,套公式或按流水线推理写出总时延表达式,最后再算数。

这里我想多说一句:套公式不是最稳的办法,理解流水线才是。如果你能把时间轴画出来,把每个分组在每台路由器上的发送窗口标上,那么就算考场紧张忘了公式,也能从第一个分组开始一步步推出来。公式是帮你提速的,不是帮你保命的。

6.3 复习节奏和资料选择

408科目的特点是范围广、深度有限,计算机网络这部分尤其重视概念和计算基本功。时延计算题建议放到第二轮复习时集中突破,因为第一轮还没建立起“发送时延vs传播时延”“存储转发vs直通转发”的对比框架,容易吸收不良。

资料方面,教材加上真题足够。很多同学喜欢看视频课帮助理解,湖科大教书匠这类把计算机网络概念讲得很细的课程,对建立直观印象确实有帮助,但看完一定要回归到自己动手计算。真题从2010年开始往后刷,只要碰到交换时延的题,就停下来用本文的方法完整算一遍,不要只看解析觉得“懂了”就跳过。我见过太多人,眼睛会了,手不会,一到考场就露馅。

最后分享一个我自己的做题习惯:拿到这道题先把报文交换算出来,再把分组交换算出来,两个结果一定要做个减法比较一下。如果分组交换时间和报文交换几乎一样,先别急着怀疑题目,回头检查一下自己是不是把分组数当成了1,或者错误地把每个分组都乘了一遍跳数。这种自查习惯,考场上真的能救回不少分。这类时延题,本质上就是一道“画清楚、列明白、算仔细”的送分题,别让它成为你的失分题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询