第一章:计算机网络与因特网
习题
P1. 设计并描述在自动柜员机和银行的中央计算机之间使用的一种应用层协议。你的协议应当允许验证用户卡和口令,查询账目结算(这些都在中央计算机系统中进行维护),支取账目(即向用户支付钱)。你的协议实体应当能够处理取钱时账目中钱不够的常见问题。通过列出自动柜员机和银行中央计算机在报文传输和接收过程中交换的报文和采取的动作来定义你的协议。使用类似于图1-2所示的图,拟定在简单无差错取钱情况下该协议的操作。明确地阐述在该协议中关于底层端到端运输服务所作的假设。

答案:
(1)协议:ATM-Bank Central Computer Application Layer Protocol
- 协议概述: 本协议旨在定义自动柜员机(ATM)与银行中央计算机(BCC)之间在应用层的数据交换格式与流程,以支持用户身份验证、账目查询、取款等操作。协议需确保数据的安全性、完整性和有效性,同时处理取款时余额不足的情况。
- 协议实体
ATM: 负责与用户交互,收集用户输入(如卡号和密码),向BCC发送请求,并显示结果。
BCC: 维护用户账户信息,处理ATM的请求,验证用户身份,执行账目查询和取款操作,并返回结果给ATM。 - 报文类型与格式
1. 身份验证请求(AuthRequest):
ATM → BCC:包含卡号、密码加密后的哈希值。
2.身份验证响应(AuthResponse):
BCC → ATM:包含验证结果(成功/失败)、用户ID(验证成功时)。
3.账目查询请求(BalanceRequest):
ATM → BCC:包含用户ID。
4.账目查询响应(BalanceResponse):
BCC → ATM:包含用户当前余额。
5.取款请求(WithdrawRequest):
ATM → BCC:包含用户ID、取款金额。
6.取款响应(WithdrawResponse):
BCC → ATM:包含取款结果(成功/失败,如失败则包含失败原因,如余额不足)。
ATM BCC
| |
|---- AuthRequest(卡号, 密码哈希) ----|
| |
|<---- AuthResponse(成功, 用户ID) ----|
| |
|---- BalanceRequest(用户ID) -------|
| |
|<---- BalanceResponse(余额) -------|
| |
|---- WithdrawRequest(用户ID, 金额) -|
| |
|<---- WithdrawResponse(成功) ------|
| |
|(显示取款成功及余额更新) |
| |
(协议结束)
(2)处理余额不足情况
在取款请求阶段,若BCC检查到用户余额不足以完成取款,将发送包含“余额不足”失败原因的WithdrawResponse报文给ATM,ATM随后显示相应的错误信息给用户。
(3)底层端到端运输服务假设
1.可靠性: 底层运输服务应保证报文的无丢失、无重复、无乱序传输。若报文丢失或损坏,需有重传机制。
2.安全性: 报文在传输过程中应加密,以防止信息泄露。特别是身份验证报文中的密码哈希,需确保即使被截获也无法轻易还原原始密码。
3.完整性: 每个报文应包含校验和或数字签名,以确保报文在传输过程中未被篡改。
4.顺序性: 报文应按发送顺序被接收和处理,以确保协议的正确执行。
5.及时性: 报文传输应有合理的延迟上限,以确保用户操作的实时性。
P2. 式(1-1)给出了经传输速率为R的N段链路发送长度L的一个分组的端到端时延。对于经过N段链路连续地发送P个这样的分组,一般化地表示出这个公式。
(1) 明确该公式含义:
当一个分组经过由N段链路组成的网络,且每段链路的传输速率都是R时,该分组的端到端时延。
但这里有一个需要纠正的地方: 实际上,如果每段链路的传输速率相同,那么分组的端到端时延应该只与分组的长度L和链路的传输速率R有关,而与链路的段数N无关(假设没有额外的处理或排队时延)。因此,更准确的公式应该是:

然而,题目中的公式可能是想表达的是,如果考虑每段链路都有固定的时延(尽管这种表述方式不准确),或者是在某种特定上下文下的简化表示。
(2) 经过N段链路连续地发送P个这样的分组,一般化地表示出这个公式。
我们已经知道单个分组的端到端时延是 L/R ,那么对于连续发送的P个分组,如果它们之间没有间隔(即一个接一个地发送),则总的端到端时延将是单个分组的时延乘以分组的数量P。

需要注意的是,如果每段链路的传输速率不同,或者存在额外的处理或排队时延,那么这个问题将变得更加复杂,需要分别计算每段链路上的时延并求和(可能还需要考虑分组在节点处的处理时间等)。但在本题目的上下文中,我们假设每段链路的传输速率是相同的,且没有额外的时延。
P3.考虑一个应用程序以稳定的速率传输数据(例如,发送方每k个时间单元产生一个N比特的数据单元,其中k较小且固定)。另外,当这个应用程序启动时,它将连续运行相当长的一段时间。回答下列问题,简要论证你的回答:
a.是分组交换网还是电路交换网更为适合这种应用?为什么?
b.假定使用了分组交换网,并且该网中的所有流量都来自如上所述的这种应用程序。此外,假定该应用程序数据传输速率的总和小于每条链路的各自容量。需要某种形式的拥塞控制吗?为什么?
答案:
(1) 明确分组交换网和电路交换网的特性:
-
电路交换网:在电路交换中,通信的两个终端之间建立一条专用的物理连接,数据沿着这条连接传输。这种连接是在通信开始前建立的,通信结束后才被释放。电路交换的优点是传输数据的速率稳定、数据传输的可靠性高、传输的延迟较小,适用于需要高速、可靠传输的场合,如电话通信、视频会议等。然而,它也存在资源利用率较低的问题,因为即使在没有数据传输时,电路也是被占用的。
-
分组交换网: 分组交换中,数据被分割成多个小的数据包(称为分组),然后在网络中传输这些分组。每个分组都包含一些头部信息,用于指示该分组的源地址、目的地址、序号、长度等信息。分组交换的主要特点是高效性和低成本,因为它可以在网络中并行传输多个分组,共享带宽,从而减少网络硬件设备的需求,降低网络建设和维护的成本。此外,分组交换还具有一定的容错能力,当出现数据包丢失或损坏时,可以通过重新发送数据包来保证数据的完整性。
对于以稳定速率传输数据且连续运行时间较长的应用程序,我们需要考虑以下几个因素:
- 数据传输的稳定性: 电路交换网提供专用的物理连接,保证了数据传输的稳定性。而分组交换网虽然也具有较高的可靠性(通过重新发送数据包来保证数据的完整性),但在数据传输过程中可能会遇到分组失序、丢失或重复等问题,需要额外的处理机制。
- 资源利用率: 电路交换网在通信过程中始终占用一条物理连接,资源利用率较低。而分组交换网可以动态地分配和释放带宽资源,提高资源利用率。然而,在这个特定场景中,由于应用程序以稳定的速率传输数据且连续运行时间较长,因此资源利用率可能不是首要考虑的因素。
- 网络延迟: 电路交换网由于建立了专用的物理连接,因此网络延迟较小。而分组交换网由于需要分组、路由选择和重组等处理过程,可能会引入额外的延迟。然而,随着网络技术的发展和优化,分组交换网的延迟已经得到了显著的降低。
综合考虑以上因素,电路交换网可能更适合这种以稳定速率传输数据且连续运行时间较长的应用程序。 因为电路交换网可以提供稳定的数据传输速率和较小的网络延迟,满足应用程序对数据传输质量和实时性的要求。
(2)即使应用程序数据传输速率的总和小于每条链路的各自容量,仍然需要某种形式的拥塞控制。原因如下:
-
网络瓶颈: 虽然每条链路的容量都大于应用程序的数据传输速率总和,但网络中可能存在其他瓶颈点,如路由器、交换机等设备的处理能力有限,或者某些链路的带宽虽然足够但延迟较高。这些因素都可能导致网络拥塞的发生。
流量波动: 虽然应用程序以稳定的速率传输数据,但网络中的其他流量可能会发生变化。例如,其他用户或应用程序可能会突然增加数据传输量,导致网络流量波动。这种波动可能导致某些链路或节点出现拥塞。
分组丢失和延迟: 在分组交换网中,如果网络出现拥塞,可能会导致分组丢失或延迟增加。这对于需要实时传输数据的应用程序来说是非常不利的。
拥塞控制机制可以检测网络中的拥塞状态,并采取相应的措施来避免或减轻拥塞的影响。例如,可以通过限制发送方的发送速率、丢弃部分分组或重新路由等方式来降低网络负载。这些措施可以确保网络在面临突发流量或流量波动时仍然能够保持稳定和高效运行。
因此,即使应用程序数据传输速率的总和 < 每条链路的各自容量,也需要实施拥塞控制来确保网络的稳定性和高效运行。
P4.考虑在图1-13中的电路交换网。回想在每条链路上有4条链路,以顺时针方向标记四台交换机A、B、C和D。
a.在该网络中,任何时候能够进行同时连接的最大数量是多少?
b.假定所有连接位于交换机A和C之间。能够进行同时连接的最大数量是多少?
c.假定我们要在交换机A和C之间建立4条连接,在交换机B和D之间建立另外4条连接。我们能够让这些呼叫通过这4条链路建立路由以容纳所有8条连接吗?

答案:
P5.回顾在1.4节中的车队的类比。假定传播速度还是100km/h,默认10辆车,每辆车经过收费站的服务时间12s(处理时延)。
- a.假定车队旅行150km:在一个收费站前面开始,通过第二个收费站,并且在第三个收费站后面结束。其端到端时延是多少?
- b.重复(a),现在假定车队中有8辆汽车而不是10辆。
答案:
(1)
- 计算传播时延: 传播时延 = 距离 / 速度 = 150km / 100km/h = 1.5小时 = 90分钟。
- 计算传输时延: 传输延 = 车辆数 × 收费站数 × 每辆车处理时间 = 10 × 3 × 12秒 =6分钟。
端到端时延 = 传播时延 + 处理时延 = 90分钟 + 6分钟 = 96分钟。
(2)端到端时延 = 传播时延 + 处理时延 = 90分钟 + 4.8分钟 = 94.8分钟。
P6.这个习题开始探讨传播时延和传输时延,这是数据网络中的两个重要概念。考虑两台主机A和B由一条速率为Rbps的链路相连。假定这两台主机相隔m米,沿该链路的传播速率为sm/s。主机A向主机B发送长度L比特的分组。
- a. 用m和s来表示传播时延d(prop)。
- b. 用L和R来确定该分组的传输时间d(trans)。
- c. 忽略处理和排队时延,得出端到端时延的表达式。
- d. 假定主机A在时刻t = 0开始传输该分组。在时刻t = d(trans),该分组的最后一个比特在什么地方?
- e. 假定d(prop) 大于 d(trans)。在时刻t=d(trans),该分组的第一个比特在何处?
- f . 假定d(prop) 小于d(trans)。在时刻t=d(trans),该分组的第一个比特在何处?**
- g. 假定=2.5*10^8,L = l20比特,R = 56kbps。求出使d(prop)等于d(trans)的距离m。
答案:
(a): 传播时延 m/s 秒
(b): 传输时间 L/R 秒
(c): m/s+L/R秒
(d): 刚刚离开A(时间小于传播时延)
(e):已经到达B(时间大于传播时延)
(f) :由题目知道传输时间=传播时间推出公式:120/56*10^3 = m / (2.5 * 10 ^ 8), 推出m = 5.36 * 10^5 m
P7.在这个习题中,我们考虑从主机A向主机B通过分组交换网发送语音(ValP)。主机A将模拟语音转换为传输中的64kbps数字比特流。然后主机A将这些比特分为56字节的分组。A和B之间有一条链路:它的传输速率是2Mbps,传播时延是10ms。一旦A收集了一个分组,就将它向主机B发送。
一旦主机B接收到一个完整的分组,它将该分组的比特转换成模拟信号。从比特产生(从位于主机A的初始模拟信号起)的时刻起,到该比特被解码(在主机B上作为模拟信号的一部分),花了多少时间?
答案:
- (1): 计算分组所需的时间:
产生分组所需的时间= 发送速率(比特每秒)/ 分组大小(比特)
56×8 / 64,000 比特每秒 = 7ms - (2): 计算传输时延:
传输时延 = 448比特 / 2,000,000比特每秒 = 0.000224秒 = 0.224毫秒
总时延 = 分组时间+传输时延+传播时延 = 7 + 0.224 +10 =17.224 ms
P8.假定用户共享一条3Mbps的链路。又设每个用户传输时要求150kbps,但是每个用户仅有10%的时间传输。(参见1.3节中关于“分组交换与电路交换的对比”的讨论。)
答案:
- a.当使用电路交换时,能够支持多少用户?
由于每个用户仅有10%的时间传输,因此每个用户实际占用的平均带宽为0.1 * 0.15 Mbps = 0.015 Mbps。
能够支持的用户数:3 Mbps / 0.015 Mbps = 200个用户。
- b.对于本习题的后续小题,假定使用分组交换。求出给定用户正在传输的概率。
由于每个用户仅有10%的时间传输,因此某给定用户正在传输的概率为10%,即0.1。
-
c.假定有120个用户。求出在任何给定时刻,实际有n个用户在同时传输的概率。(提示:使用二项式分布。)
二项式扩展:


-
d.求出有21个或更多用户同时传输的概率。

P9.考虑在 1. 3节 “分组交换与电路交换的对比” 的讨论中,给出了一个具有 1Mbps 链路的例子。用户在忙时以 100kbps 速率产生数据。但忙时仅以p=0.1 的概率产生数据。假定用 1Gbps 链路替代 1Mbps 的链路。
-
a. 当采用电路交换技术时,能被同时支持的最大用户数量 N 是多少?
由于电路交换是独占链路的,因此每个用户在被分配到电路时,将独占整个链路的带宽。但是,由于用户并非始终在传输数据(只有10%的时间在传输),我们可以计算每个用户实际占用的平均带宽B。
B= PR(用户忙时数据产生速率)=0.1100kbps = 10 kbps
N=1000Mbps / 10 kbps = 100000 -
b. 现在考虑分组交换和有 N 个用户的情况。给出多于 N 用户发送数据的概率公式(用p、M、N表示)
设总用户数为 M,每个用户在忙时发送数据的概率为 p,则同时有 k 个用户发送数据的概率为二项分布:

要求多于 N 个用户同时发送数据的概率,即求 P(X>N),这可以通过计算从 N+1 到 M 所有可能 k 值的概率之和来得出:

将二项分布的概率公式代入上式,得到:

P10.考虑一个长度为 L 的分组从端系统 A 开始,经 3 段链路传送到目的端系统。令did_idi、sis_isi、RiR_iRi、表示链路 i 的长度、传播速度和传输速率 (i=1,2,3) 。该分组交换机对每个分组的时延为 dproc。假定没有排队时延,用did_idi、sis_isi、RiR_iRi、(i=1,2,3) 和 L 表示,该分组总的端到端时延是什么?现在假定该分组是1500 字节,在所有 3 条链路上的传播时延是 2.5 ∗ 10810^8108 m/s, 所有 3 条链路的传输速率是 2Mbps,分组交换机的处理时延是 3ms,第一段链路的长度是5000km,第二段段链路的长度是4000km, 井且最后一段链路的长度是 1000km, 对于这些值,该端到端时延为多少?
**
-
(1)该分组总的端到端时延是什么?
传播时延: dproc = ∑i=13(disi)\sum_{i=1}^{3}(\frac{d_i}{s_i})∑i=13(sidi) = d proc1 + d proc2 + d proc3 = 5∗105m2.5∗108m/s\frac{5*10^{5}m} {2.5*10^{8}m/s}2.5∗108m/s5∗105m + 4∗105m2.5∗108m/s\frac{4*10^{5}m} {2.5*10^{8}m/s}2.5∗108m/s4∗105m + 1∗105m2.5∗108m/s\frac{1*10^{5}m} {2.5*10^{8}m/s}2.5∗108m/s1∗105m = 20ms +16ms +4 ms = 40ms传输时延: dtrans = ∑i=13(LRi)\sum _{i=1}^{3}(\frac{L}{R_i})∑i=13(RiL) = d trans1 + d trans2 + d trans3 = 120002.5∗106比特/秒\frac{12000} {2.5*10^{6}比特/秒}2.5∗106比特/秒12000 + 120002.5∗106比特/秒\frac{12000} {2.5*10^{6}比特/秒}2.5∗106比特/秒12000 + 120002.5∗106比特/秒\frac{12000} {2.5*10^{6} 比特/秒}2.5∗106比特/秒12000 = 6ms +6ms +6 ms = 18ms
总时延 =dproc +dtrans + 2 dpd_pdp=40+18+6=64ms
-
(2)对于这些值,该端到端时延为多少?
总时延 = (传播时延1传播时延_1传播时延1+传输时延1传输时延_1传输时延1)+(传播时延2传播时延_2传播时延2+传输时延2传输时延_2传输时延2)+(传播时延3传播时延_3传播时延3+传输时延3传输时延_3传输时延3)+ 2dpd_pdp = 64毫秒
P11 .在上述习题中,假定 R1=R2=R3=R 且 dpd_pdp=0。进一步假定该分组交换机不存储转发分组 ,而是在等待分组到达前立即传输它收到的每个比特。这时端到端时延为多少?
分组交换机不采用存储转发方式,而是在等待分组到达前立即传输它收到的每个比特,这意味着交换机引入的额外时延可以忽略不计。由于传输速率在所有链路上都是相同的,我们可以统一使用 R 来表示传输速率,并且由于处理时延为0,我们不需要再考虑交换机引入的时延。在这种情况下,总时延 dtotal 主要由 传播时延 和传输时延组成,并且由于交换机不引入额外时延,公式可以简化为:
总时延 =dproc +dtrans =58ms
P12.一台分组交换机接收一个分组并决定该分组应当转发的出链路。当某分组到达时,另一个分组正在该出链路上被发送到一半,还有4个其他分组正等待传输。这些分组以到达的次序传输。假定所有分组是1500字节并且链路速率是2Mbps。该分组的排队时延是多少?在更一般的情况下,当所有分组的长度是L,传输速率是R,当前正在传输的分组已经传输了x比特,并且已经在队列中有n个分组,其排队时延是多少?
思路: 需要计算正在被发送的分组剩余部分的传输时间,以及队列中所有等待分组的传输时间之和。然后,我们将这些时间相加,得到该分组的总排队时延。
-
(1)该分组的排队时延为多少?
剩余部分的传输时间: 750*8比特 / 2Mbps =3毫秒。
每个分组传输用时: 1500比特 / 2Mbps = 6毫秒。
总排队时延: 4 * 6毫秒 + 3 ms= 27毫秒。 -
(2)一般情况
a. 剩余比特数是L - x。剩余传输时间是 (L - x) / R。
b. 队列中等待分组的总传输时间:n * (L / R)
总排队时延:(L - x) / R + n * (L / R)
P13.
a.假定有N个分组同时到达一条当前没有分组传输或排队的链路。每个分组长为L,链路传输速率为R。对N个分组而言,其平均排队时延是多少?
分析: 虽然所有分组都是同时到达的,但它们并不能同时开始传输,因为链路一次只能传输一个分组。因此,除第一个分组外,其他分组都会有一个排队时延。
总体排队时延: 根据求和公式Sn=n2S_n = \frac{n}{2}Sn=2n ✖️ (2 a1a_1a1 +(n-1)*d)= N(N−1)2\frac{N(N-1)}{2}2N(N−1)✖️LR\frac{L}{R}RL 。
平均排队时延: 总体排队时延n\frac{总体排队时延}{n}n总体排队时延= (N-1)L/2R
b.现在假定每隔LW/R秒有N个分组同时到达链路。一个分组的平均排队时延是多少?
分析:
-
服务时间:
链路传输速率 R,每个分组长 L,所以每个分组的处理时间 (服务时间) 为LR\frac{L}{R}RL 。 -
系统状态: 系统可以看作是一个 M/D/1 队列,其中 M 表示到达是随机的(但在这里是周期性的,但我们可以将其视为随机到达的近似,因为到达间隔远大于分组传输时间),D 表示服务时间是确定的(每个分组的服务时间都是 LR\frac{L}{R}RL,1 表示单服务通道。
-
排队模型:
由于到达是周期性的,且每个周期到达的分组数 N 可能大于1,因此会有排队现象。
我们需要计算的是在一个周期内,一个分组平均需要等待多长时间才能开始传输。 -
计算平均排队时延:
在一个周期内,第一个到达的分组不需要等待,但后续的分组需要等待前面的分组传输完毕。
因此,第 k 个到达的分组(k 从 2 到 N)需要等待 (k−1)× LR\frac{L}{R}RL 秒。
平均等待时间可以通过计算所有分组等待时间的总和然后除以 N 来得到。
计算:
所有分组的等待时间总和为:∑k=2N(k−1)(LR)\sum_{k=2}^{N}(k-1)(\frac{L}{R})∑k=2N(k−1)(RL)=LR\frac{L}{R}RLx ∑k=1N−1k\sum_{k=1}^{N-1}k∑k=1N−1k=LR\frac{L}{R}RLxN(N−1)2\frac{N(N-1)}{2}2N(N−1)
平均排队时延: LR\frac{L}{R}RLxN(N−1)2\frac{N(N-1)}{2}2N(N−1) /N=(N−1)L2R\frac{(N-1)L}{2R}2R(N−1)L秒。
P14.考虑路由器缓存中的排队时延。令I表示流量强度;即l=La/R。假定排队时延的形式为IL/R(1-I),其中I<1。
- a.写出总时延公式,即排队时延加上传输时延。
- b.以L/R为函数画出总时延的图。
I∗LR(1−I)\frac{I*L}{R(1-I)}R(1−I)I∗L
回答:
-
a:总时延D=排队时延+传输时延= ILR(1−I)\frac{IL}{R(1-I)}R(1−I)IL+LR\frac{L}{R}RL=LR\frac{L}{R}RL * 1+I1−I\frac{1+I}{1-I}1−I1+I
-
b总时延图示
解析:
(1) 为了画出总时延 D 作为 LR\frac{L}{R}RL 的函数图,我们需要考虑不同的流量强度 I 值。由于 I= La/R,我们可以将 a 看作是一个常数(即分组到达的平均速率),这样 I 就与 LR\frac{L}{R}RL 成正比。
(2) 由于总时延公式D=LR\frac{L}{R}RL * 1+I1−I\frac{1+I}{1-I}1−I1+I 中包含了 LR\frac{L}{R}RL,为了简化图示,我们可以令 LR\frac{L}{R}RL =1(即假设一个标准的分组长度和带宽比例)然后绘制 D 随 I 变化的曲线。这样,纵轴将表示总时延 D(在 LR=1\frac{L}{R}=1RL=1的条件下),横轴将表示流量强度 I。
(3)图像描述
- 当 I=0 时,D=1
- 当 I 在 0 和 1 之间增加时,D 也逐渐增加,并且增加的速度越来越快(因为分母 1−I 在减小)。 当 I
- 接近 1 时,D 趋于无穷大,表示网络将变得极度拥塞。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# 设置matplotlib支持中文显示
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为SimHei(或其他支持中文的字体)
matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题
# 定义计算总时延的函数
def total_delay(I):
return (1 + I) / (1 - I)
# 设定I的取值范围
I_values = np.linspace(0, 0.99, 400)
D_values = total_delay(I_values)
# 绘制图像
plt.figure(figsize=(10, 6))
plt.plot(I_values, D_values, label='总时延 D(I)')
plt.title('总时延与流量强度I的函数关系图')
plt.xlabel('流量强度 I')
plt.ylabel('总时延 D')
plt.grid(True)
plt.legend()
# 设置y轴的刻度范围,确保D=1附近的值能够清晰显示
# 由于D在I接近1时会急剧增加,我们可以设置一个合理的上限来避免图像过于拥挤
y_max = 20 # 这个值可以根据需要调整,以确保图像清晰且不显得过于拥挤
plt.ylim(0, y_max)
# 在I=0, D=1处添加一个标记,以便更清晰地显示这一点
plt.scatter([0], [1], color='red', zorder=5) # 使用scatter添加红色点标记
plt.text(0, 1, 'D=1 (I=0)', ha='right', va='bottom', fontsize=10, color='red') # 添加文本注释
# 添加一条垂直虚线表示I=1(虽然不在图中,但可以作为参考)
plt.axvline(x=1, color='gray', linestyle='--', linewidth=0.5)
# 展示图像
plt.show()

P15.令a表示在一条链路上分组的到达率(以分组/秒计),令u表示一条链路上分组的传输率(以分组/秒计)。基于上述习题中推导出的总时延公式(即排队时延加传输时延),推导出以a和u表示的总时延公式。
参数解释:
-
a:分组到达率,表示单位时间内到达链路的分组数量(单位:分组/秒)。
-
u:分组传输率,表示链路每秒能够传输的分组数量(单位:分组/秒)。它是链路带宽 R 和平均分组长度 L 的比值,即 u= LR\frac{L}{R}RL 。
总时延公式推导:
DDD total = ILR(1−I)\frac{IL}{R(1-I)}R(1−I)IL+LR\frac{L}{R}RL将I=LaRI=\frac{La}{R}I=RLa代入上述公式,推出:
DDD total = L2aR2(1−(La/R))+\frac{L^2a}{R^2(1-(La/R))}+R2(1−(La/R))L2a+ LR\frac{L}{R}RL
将R=uLuLuL代入上述公式,推出:
DDD total = au(1−a/u))+\frac{a}{u(1-a/u))}+u(1−a/u))a+ 1u\frac{1}{u}u1。
这个公式表示了链路上的总时延,包括排队时延和传输时延。其中,排队时延与流量强度 III(通过 a 和 u 间接表示)和链路容量(通过 u 表示)有关;传输时延则与分组长度 L 和链路容量(通过 u 表示)有关。由于u=RLu=\frac{R}{L}u=LR,因此总时延公式实际上是以 a(分组到达率)和 R(链路带宽,通过 u 间接表示)为参数的。这个公式可以用于分析网络性能,特别是在评估链路拥塞和传输能力时非常有用。
Pl6.考虑一台路由器缓存前面的一条出链路。在这个习题中,将使用李特尔(Little)公式,这是排队论中的一个著名公式。令N表示在缓存中的分组加上被传输的分组的平均数。令a表示到达链路的分组速率。令d表示一个分组历经的平均总时延(即排队时延加传输时延)。李特尔公式是N=a×d。假定该缓存平均包含10个分组,并且平均分组排队时延是10ms。该链路的传输速率是100分组/秒。使用李特尔公式,在没有丢包的情况下,平均分组到达率是多少?
李特尔公式讲解:
想象你去了一家餐厅,餐厅里有一个排队系统。顾客们依次进入餐厅,等待服务,然后离开。我们可以用李特尔公式来描述这个场景。
公式:N=a×d
- N:餐厅里平均有多少顾客(包括正在排队的和正在被服务的)。
- a:顾客到达餐厅的平均速率(比如每小时到达多少人)。
- d:顾客在餐厅里停留的平均时间(从进门到离开)。
通俗解释: 李特尔公式告诉我们:“餐厅里平均有多少顾客” 等于 “顾客到达的速率” 乘以 “顾客停留的平均时间”。
换句话说,如果你想知道餐厅里平均有多少人,只需要知道:
每小时有多少人进来(到达速率 a)。
每个人平均在餐厅里待多久(停留时间 d)。
公式就是:平均顾客数 = 到达速率 × 停留时间。
网络中的应用:
在路由器的例子中:
N 是缓存里平均有多少数据包。
a 是数据包到达的速率。
d 是数据包在路由器里停留的平均时间(排队时间 + 传输时间)。
公式仍然是:平均数据包数 = 到达速率 × 停留时间。
回答:
首先,我们需要计算一个分组的平均总时延 d。总时延 d 包括排队时延和传输时延。排队时延已知为10ms,传输时延可以通过链路的传输速率计算得出。由于链路的传输速率是100分组/秒,所以传输一个分组的时间是 1100\frac{1}{100}1001 秒,即10ms。
总时延 d 为:d=10ms(排队时延)+10ms(传输时延)=20ms=0.02s
N=a×d 推出===> 10 = a×0.02s
a= 100.02s\frac{10}{0.02s}0.02s10 =500分组/秒
P17.
a.对于不同的处理速率、传输速率和传播时延,给出1.4.3节中式(1-2)的一般表达式dend-end =N(dproc+dtrans+dprop)。
b.重复(a),不过此时假定在每个结点有平均排队时延dproc。
回答a:
(1)处理时延dproc,这是每个节点处理数据包的时间。如果每个节点的处理时延不同,我们可以用dprocid_{\text{proc}}^idproci表示第 i 个节点的处理时延。
(2)传输时延同理表示为:传输时延dtransid_{\text{trans}}^idtransi = LRi\frac{L}{R^i}RiL
(3)传播时延同理表示为:传输时延dprocid_{\text{proc}}^idproci= diRi\frac{d^i}{R^i}Ridi
因此
dend-to-end=∑i=1N(dproci+dtransi+dpropi)d_{\text{end-to-end}} = \sum_{i=1}^{N} (d_{\text{proc}}^i + d_{\text{trans}}^i + d_{\text{prop}}^i)dend-to-end=∑i=1N(dproci+dtransi+dpropi)
回答b:
dend-to-end=∑i=1N(dproci+dqueue+dtransi+dpropi)d_{\text{end-to-end}} = \sum_{i=1}^{N} (d_{\text{proc}}^i + d_{\text{queue}} + d_{\text{trans}}^i + d_{\text{prop}}^i)dend-to-end=∑i=1N(dproci+dqueue+dtransi+dpropi)
P18.在一天的3个不同的小时内,在同一个大陆上的源和目的地之间执行Traceroute。
- a.在这3个小时的每个小时中,求出往返时延的均值和方差。
- b.在这3个小时的每个小时中,求出路径上的路由器数量。在这些时段中,该路径发生变化了吗?
- c.试图根据源到目的地Traceroute分组通过的情况,辨明ISP网络的数量。具有类似名字和/或类似的IP地址的路由器应当被认为是同一个ISP的一部分。在你的实验中,在相邻的ISP间的对等接口处出现最大的时延了吗?
- d.对位于不同大陆上的源和目的地重复上述内容。比较大陆内部和大陆之间的这些结果。
解答步骤
a. 计算每个小时的往返时延的均值和方差
步骤:
1.收集数据: 在一天的3个不同小时内,执行 Traceroute,记录每个跳的往返时延(RTT)。
2.计算均值: 对于每个小时,计算所有跳的 RTT 的平均值。
均值=∑i=1nRTTin\text{均值} = \frac{\sum_{i=1}^{n} \text{RTT}_i}{n}均值=n∑i=1nRTTi。其中 n 是该小时内所有跳的总数。
3.计算方差: 对于每个小时,计算所有跳的 RTT 的方差。
方差=∑i=1n(RTTi−均值)2n\text{方差} = \frac{\sum_{i=1}^{n} (\text{RTT}_i - \text{均值})^2}{n}方差=n∑i=1n(RTTi−均值)2
b. 计算每个小时的路径上的路由器数量,并检查路径是否变化
1.记录路由器数量: 在每个小时内,记录Traceroute显示的路由器数量。
2.比较路径: 比较不同小时内的路径,检查是否有变化。
c. 辨明ISP网络的数量,并检查最大时延是否出现在相邻ISP间的对等接口
1.识别ISP: 根据路由器的IP地址和名字,识别属于同一ISP的路由器。
2.计算ISP数量: 统计不同ISP的数量。
3.检查最大时延: 分析Traceroute结果,检查最大时延是否出现在相邻ISP间的对等接口。
d. 对位于不同大陆的源和目的地重复上述内容,并比较结果
1.执行Traceroute: 在一天的3个不同小时内,对位于不同大陆的源和目的地执行Traceroute。
重复步骤a、b、c: 对于不同大陆的源和目的地,重复步骤a、b、c。
比较结果: 比较大陆内部和大陆之间的结果,分析差异。
解答
a. 往返时延的均值和方差

b.路由器数量和路径变化
假设在3个不同小时内,Traceroute显示的路由器数量如下:
- 小时1:路由器数量 = 10
- 小时2:路由器数量 = 10
- 小时3:路由器数量 = 10
路径没有变化。
c. ISP 网络数量和最大时延
1.通过 IP 地址的归属地:
- 每个 ISP 通常会分配一个或多个 IP 地址段(CIDR 块)。通过查询 IP 地址的归属地,可以确定它属于哪个 ISP。
- 例如,192.168.1.1 和 192.168.1.2 可能属于本地网络或某个特定的 ISP。
2.通过域名解析:
- 如果 Traceroute 能解析出域名,域名通常会包含 ISP 的信息。
- 例如:
192.168.1.1 → router.home(可能是本地网络)
10.0.0.1 → edge.router.telecom.cn(可能是中国电信)
203.0.113.1 → core.router.unicom.cn(可能是中国联通)
3. 计算 ISP 数量
通过上述方法识别出每个跳的 ISP 后,我们可以统计不同 ISP 的数量。例如:
- ISP A:路由器 = [192.168.1.1, 192.168.1.2]
- ISP B:路由器 = [10.0.0.1, 10.0.0.2]
- ISP C:路由器 = [203.0.113.1, 203.0.113.2]
在这个例子中,我们识别出 3 个不同的 ISP。
4. 检查最大时延
2 10.0.0.1 (10.0.0.1) 2.3 ms [ISP B]
3 10.0.0.2 (10.0.0.2) 3.4 ms [ISP B]
4 203.0.113.1 (203.0.113.1) 10.5 ms [ISP C]
5 203.0.113.2 (203.0.113.2) 15.6 ms [ISP C]
(1).计算每跳之间的时延变化:
- 跳 2 到跳 3:3.4ms−2.3ms=1.1ms
- 跳 3 到跳 4:10.5ms−3.4ms=7.1ms
- 跳 4 到跳5:15.6ms−10.5ms=5.1ms
(2).确定最大时延的位置:
从上述计算可以看出,最大时延变化出现在跳 3 到跳 4 之间,即从 10.0.0.2 到 203.0.113.1。
d. 不同大陆的源和目的地

**比较结果:**比较大陆内部和大陆之间的结果,可以发现大陆之间的 RTT 均值和方差都较大,表明跨大陆的网络连接可能更不稳定。
P19.
- a.访问站点www.traceroule.org,并从法国两个不同的城市向位于美国的相同的目的主机执行Taceroute。在这两个Traceroute中,有多少条链路是相同的?大西洋沿岸国家的链路相同吗?
- b.重复(a),但此时选择位于法国的一个城市和位于德国的另一个城市。
- c.在美国挑选一个城市,然后向位于中国的两个不同城市的主机执行Traceroute。在这两次Traceroute中有多少链路是相同的?在到达中国前这两个Traceroule分开了吗?
回答
a. 从法国两个不同城市到美国同一目的主机的 Traceroute
- 相同链路数量: 从法国两个不同城市到美国同一目的主机的 Traceroute
中,可能会有若干条链路是相同的,尤其是在跨大西洋的链路部分。具体数量取决于网络拓扑和路由选择,但通常会有多个共同的链路。 - 大西洋沿岸国家的链路: 大西洋沿岸国家的链路通常是相同的,因为这些国家之间的网络连接主要通过海底电缆,这些电缆的路由相对固定。
b. 从法国一个城市和德国一个城市到美国同一目的主机的 Traceroute
- 相同链路数量: 从法国一个城市和德国一个城市到美国同一目的主机的 Traceroute 中,也会有若干条链路是相同的,尤其是在跨大西洋的链路部分。具体数量同样取决于网络拓扑和路由选择,但通常会有多个共同的链路。
- 大西洋沿岸国家的链路: 大西洋沿岸国家的链路通常是相同的,因为这些国家之间的网络连接主要通过海底电缆,这些电缆的路由相对固定。
c. 从美国一个城市到中国两个不同城市的 Traceroute
- 相同链路数量: 从美国一个城市到中国两个不同城市的 Traceroute 中,可能会有若干条链路是相同的,尤其是在跨太平洋的链路部分。具体数量取决于网络拓扑和路由选择,但通常会有多个共同的链路。
- 链路分离点: 在这两次 Traceroute 中,链路可能会在到达中国之前分开,具体分离点取决于网络拓扑和路由选择。通常,链路会在进入中国境内的不同入口点分开。
P20.考虑对应于图1-20b吞吐量的例子。现在假定有M对客户-服务器而不是10对。用RsR_{\text{s}}Rs、RCR_{\text{C}}RC和R分别表示服务器链路、客户链路和网绪链路的速率。假设所有的其他链路都有充足容量,并且除了由这M对客户-服务器产生的流量外,网络中没有其他流量。推导出由RsR_{\text{s}}Rs、RCR_{\text{C}}RC、R和M表示的通用吞吐量表达式。
回答
-
确定瓶颈:
吞吐量 T 受到服务器链路速率RsR_{\text{s}}Rs、客户端链路速率RcR_{\text{c}}Rc、和网格链路速率RR_{\text{}}R 中的最小值的限制。 -
每对客户端-服务器的吞吐量TiT_{\text{i}}Ti:
TiT_{\text{i}}Ti = min(Rs、Rc、R)min(R_{\text{s}}、R_{\text{c}}、R_{\text{}})min(Rs、Rc、R) -
考虑共享的网格链路:
网格链路速率 R 是所有 M 对共享的,因此每对的可用网格链路速率为 RM\frac{R}{M}MR
每对的吞吐量TiT_{\text{i}}Ti =min(Rs、Rc、RM)min(R_{\text{s}}、R_{\text{c}}、\frac{R}{M})min(Rs、Rc、MR) -
系统的总吞吐量为T 为所有 M 对的吞吐量之和:
TiT_{\text{i}}Ti =MM_{\text{}}M X min(Rs、Rc、RM)min(R_{\text{s}}、R_{\text{c}}、\frac{R}{M})min(Rs、Rc、MR)
P21.考虑图1-19b。现在假定在服务器和客户之间有M条路径。任两条路径都不共享任何链路。路径(k=1,…,M)是由传输速率为R1kR_{\text{1}}^kR1k、R2kR_{\text{2}}^kR2k……RNkR_{\text{N}}^kRNk的N条链路组成。如果服务器仅能够使用一条路径向客户发送数据,则该服务器能够取得的最大吞吐量是多少?如果该服务器能够使用所有M条路径发送数据,则该服务器能够取得的最大吞吐量是多少?
问题1 服务器仅使用一条路径:
考虑服务器和客户端之间有 M 条路径,每条路径由 N 条链路组成,链路的传输速率分别为Rk,1R_{\text{k,1}}Rk,1、Rk,2R_{\text{k,2}}Rk,2、… Rk,NR_{\text{k,N}}Rk,N 任两条路径不共享任何链路。
-
每条路径 TkT_{\text{k}}Tk的吞吐量 受到该路径上最小链路速率的限制:
TkT_{\text{k}}Tk=min(Rk,1R_{\text{k,1}}Rk,1、Rk,2R_{\text{k,2}}Rk,2、… Rk,NR_{\text{k,N}}Rk,N)
-
服务器选择所有路径中吞吐量最大的那条路径:
Tmax-sigleT_{\text{max-sigle}}Tmax-sigle=max(min(Rk,1R_{\text{k,1}}Rk,1、Rk,2R_{\text{k,2}}Rk,2、… Rk,NR_{\text{k,N}}Rk,N))【取k中的最大值】
问题2 服务器可以使用所有 M 条路径:
- 每条路径 k的吞吐量TkT_{\text{k}}Tk仍为:
TkT_{\text{k}}Tk=min(Rk,1R_{\text{k,1}}Rk,1、Rk,2R_{\text{k,2}}Rk,2、… Rk,NR_{\text{k,N}}Rk,N) - 服务器可以同时使用所有路径,总吞吐量为各路径吞吐量之和:
TtotalT_{\text{total}}Ttotal = ∑i=1nmin(Rk,1、Rk,2、…Rk,N\sum_{i=1}^{n}min(R_{\text{k,1}}、R_{\text{k,2}}、…R_{\text{k,N}}∑i=1nmin(Rk,1、Rk,2、…Rk,N)
P22.考虑图1-19b。假定服务器与客户之间的每条链路的丢包概率为p,且这些链路的丢包率是独立的。一个(由服务器发送的)分组成功地被接收方收到的概率是多少?如果在从服务器到客户的路径上分组丢失了,则服务器将重传该分组。平均来说,为了使客户成功地接收该分组,服务器将要重传该分组多少次?
知识点补充:
-
伯努利试验
定义: 伯努利试验是一个只有两种可能结果的随机试验,通常称为“成功”和“失败”。例子: 抛一枚硬币,正面朝上为成功,反面朝上为失败;数据包通过链路传输,成功传输为成功,丢失为失败。
-
几何分布
定义: 几何分布用于计算在一系列独立的伯努利试验中,第一次成功所需的试验次数。
期望值: 几何分布的期望值 E 表示第一次成功所需的平均试验次数,公式为:E= 1p\frac{1}{p}p1。其中 p 是每次试验成功的概率。
问题1 数据包成功传输的概率:
步骤1:链路独立性:假设从服务器到客户端的路径上有 N 条链路,每条链路的丢包概率为 p,且这些链路的丢包率是独立的。
步骤2: 成功传输概率:每条链路成功传输数据包的概率为 1−p。
整个路径上数据包成功传输的概率为:psuccessp_{\text{success}}psuccess=(1−p)N(1-p)^N(1−p)N
问题2 服务器平均需要重传的次数
步骤1 :几何分布应用 每次服务器发送数据包可以看作是一个伯努利试验,成功概率为psuccessp_{\text{success}}psuccess。
步骤2:期望值计算 所需的总传输次数 (包括第一次传输) 的期望值为:
$E_{\text{总传输次数}}$= $(\frac{1}{1-p})^n$
- 重传次数: 减去1以排除第一次传输,得到重传次数的期望值:
E重传次数E_{\text{重传次数}}E重传次数=(11−p)n(\frac{1}{1-p})^n(1−p1)n -1
P23.考虑图1-19a。假定我们知道沿着从服务器到客户的路径的瓶颈链路是速率为RsR_{\text{s}}Rs bps的第一段链路。假定我们从服务器向客户发送紧接着的一对分组,且沿这条路径没有其他流量。假定每个分组的长度为L比特,两条链路具有相同的传播时延dprocd_{\text{proc}}dproc。
a.在目的地,分组的到达间隔时间有多大?也就是说,从第一个分组的最后一个比特到达到第二个分组最后一个比特到达所经过的时间有多长?
b.现在假定第二段链路是瓶颈链路(RcR_{\text{c}}Rc<RsR_{\text{s}}Rs)。第二个分组在第二段链路输入队列中排队是可能的吗?请解释原因。现在假定服务器在发送第一个分组T秒之后再发送第二个分组。为确保在第二段链路之前没有排队,T必须要有多长?试解释原因。
a回答:目的地收到分组的间隔时间是多少?
分析:由于瓶颈链路的速率为RsR_{\text{s}}Rs ,且两个分组均需通过此链路,因此服务器发送每个分组所需的传输时延为 LRs\frac{L}{R_s}RsL。
步骤1:第一个分组的总时延
- 传输时延: LRs\frac{L}{R_s}RsL
- 传播时延: dprop{d_{\text{prop}}}dprop
- 总时延: LRs\frac{L}{R_s}RsL +Ldprop\frac{L}{d_{\text{prop}}}dpropL
步骤2:第二个分组的总时延
- 传输时延:服务器在第一个分组传输完毕后立即开始发送第二个分组,因此第二个分组的传输时间也是 LRs\frac{L}{R_s}RsL
- 传播时延: dprop{d_{\text{prop}}}dprop
- 总时延: LRs\frac{L}{R_s}RsL +Ldprop\frac{L}{d_{\text{prop}}}dpropL
步骤 3 :两个分组到达目的地的间隔时间
- 第一个分组的最后一个比特在 t =LRs\frac{L}{R_s}RsL +Ldprop\frac{L}{d_{\text{prop}}}dpropL时到达目的地。
- 第二个分组的最后一个比特在 t =2LRs\frac{2L}{R_s}Rs2L +dprop{d_{\text{prop}}}dprop到达目的地。
- 间隔时间为:(2LRs\frac{2L}{R_s}Rs2L +dprop{d_{\text{prop}}}dprop)- (LRs\frac{L}{R_s}RsL +Ldprop\frac{L}{d_{\text{prop}}}dpropL)= LRs\frac{L}{R_s}RsL
b回答:第二段链路是瓶颈链路(即(RcR_{\text{c}}Rc<RsR_{\text{s}}Rs))目的地收到分组的间隔时间是多少?
步骤1:第一个分组的总时延
- 通过第一段链路的传输时延:LRs\frac{L}{R_s}RsL
- 通过第二段链路的传输时延:LRc\frac{L}{R_c}RcL
- 传播时延:dprop{d_{\text{prop}}}dprop
- 总时延:LRs\frac{L}{R_s}RsL +LRc\frac{L}{R_c}RcL+dprop{d_{\text{prop}}}dprop
步骤2: 第二个分组的总时延
- 服务器在 T 秒后发送第二个分组。
- 第二个分组通过第一段链路的传输时延:LRs\frac{L}{R_s}RsL
- 第二个分组通过第二段链路的传输时延:LRc\frac{L}{R_c}RcL
- 总时延:T+LRs\frac{L}{R_s}RsL +LRc\frac{L}{R_c}RcL+dprop{d_{\text{prop}}}dprop
步骤3: 防止排队的条件
- 第二个分组在到达第二段链路之前不应排队。
- 第一个分组在LRs\frac{L}{R_s}RsL +LRc\frac{L}{R_c}RcL+dprop{d_{\text{prop}}}dprop离开第二段链路
- 第二个分组在T+LRs\frac{L}{R_s}RsL +dprop{d_{\text{prop}}}dprop到达第二段链路
- 为防止排队:T+LRs\frac{L}{R_s}RsL +dprop{d_{\text{prop}}}dprop≥LRs\frac{L}{R_s}RsL +LRc\frac{L}{R_c}RcL+dprop{d_{\text{prop}}}dprop,最后得出T≥LRc\frac{L}{R_c}RcL
P24.假设你希望从波士顿到洛杉矶紧急传送40×101240×10_{\text{}}^{12}40×1012 字节数据。你有一条100Mbps专用链路可用于传输数据。你是愿意通过这条链路传输数据,还是愿意使用FedEx一夜快递?解释你的理由。
步骤 1:将数据量转换为比特。
40×101240×10_{\text{}}^{12}40×1012 字节 =40×101240×10_{\text{}}^{12}40×1012 *8 比特 = 320∗1012320*10_{\text{}}^{12}320∗1012 比特
步骤 2:计算通过 100 Mbps 链路传输时延。
t=DR\frac{D}{R}RD = 数据量链路速度\frac{数据量}{链路速度}链路速度数据量 =320∗1012比特100∗106比特/秒\frac{320*10_{\text{}}^{12}比特}{100*10_{\text{}}^{6}比特/秒}100∗106比特/秒320∗1012比特 = 3.2∗106秒3.2*10_{\text{}}^{6}秒3.2∗106秒(约37天)
结论:使用 FedEx 一夜快递是更好的选择。
P25.假定两台主机A和B相隔20000km,由一条直接的R=2Mbps的链路相连。假定跨越该链路的传播速率是2.5×10^8m/s
- a.计算带宽一时延积(传播时延)R▪tpropR▪ t_{\text{prop}}R▪tprop。
- b.考虑从主机A到主机B发送一个800000比特的文件。假定该文件作为一个大的报文连续发送。在任何给定的时间,在链路上具有的比特数量最大值是多少?
- e.给出带宽一时延积的一种解释。
- d.在该链路上一个比特的宽度(以米计)是多少?它比一个足球场更长吗?
- e.根据传播速率s、带宽R和链路m的长度,推导出一个比特宽度的一般表示式。
分析:
带宽一时延积是计算机网络中的一个重要概念,用于衡量网络链路的性能。它表示在给定的传播时延内,链路能够传输的数据量,反映了传播时延内链路的传输能力。具体来说,带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop 的含义如下:
- 带宽 R:链路的传输速率,单位是比特每秒(bps)。它表示链路每秒可以传输的数据量。
- 传播时延 tpropt_{\text{prop}}tprop:信号在链路中传播所需的时间,单位是秒(s)。它表示信号从发送端到达接收端所需的时间。
- 带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop是一个重要的网络性能指标,用于衡量在给定的传播时延内链路能够传输的数据量。它与传播时延直接相关,与传输时延间接相关。带宽一时延积越大,说明链路在传播时延内能够传输更多的数据,从而可能减少总延迟。通过计算带宽一时延积,我们可以更好地理解和优化网络的性能
a回答:计算带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop
步骤 1:计算传播时延tpropt_{\text{prop}}tprop
tpropt_{\text{prop}}tprop = 链路距离d传播速率s\frac{链路距离d}{传播速率s}传播速率s链路距离d= 2∗107m2.5∗108m/s\frac{2*10^7m}{2.5*10^8m/s}2.5∗108m/s2∗107m=0.08s=80ms
步骤 2:计算带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop
已知:
- R=2Mbps=2×106{10^6}106bps
- tpropt_{\text{prop}}tprop = 0.08s
- R▪tpropR▪ t_{\text{prop}}R▪tprop = 2×106{10^6}106bps x 0.08s =1.6 x 105{10^5}105bps
b回答:计算链路上具有的比特数量最大值
在任何给定的时间,链路上具有的比特数量最大值就是带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop。因此,最大值为:1.6 x 105{10^5}105bps 。
c回答: 给出带宽一时延积的一种解释
带宽一时延积 R▪tpropR▪ t_{\text{prop}}R▪tprop表示在传播时延tpropt_{\text{prop}}tprop内,链路能够传输的数据量。它反映了链路在传播时延内能够传输的最大数据量,是评估网络链路性能的重要指标。带宽一时延积越大,说明链路在传播时延内能够传输更多的数据,从而可能减少总延迟。
d回答: 在该链路上一个比特的宽度(以米计)是多少?它比一个足球场更长吗?
步骤 :计算一个比特的宽度:
一个比特的宽度是指信号在链路中传播一个比特所需的距离。计算公式为:
比特宽度 = sR\frac{s}{R}Rs
- s 是传播速率,单位为米每秒(m/s)
- e.R 是链路的带宽(传输速率),单位为比特每秒(bps)。
- 比特宽度 = sR\frac{s}{R}Rs =2.5∗108m/s2∗106bps\frac{2.5*{10^8}m/s}{2 * {10^6}bps}2∗106bps2.5∗108m/s = 125m
- 结论 :一个标准足球场的长度通常为 100 米左右。因此,一个比特的宽度 125 米比一个足球场更长。
e回答: 推导出一个比特宽度的一般表示式。
比特宽度的一般表示式为 比特宽度= sR\frac{s}{R}Rs
P26.对于习题P25,假定我们能够修改R。对什么样的R值,一个比特的宽度能与该链路的长度一样长?
比特宽度等于链路长度的条件:
- 要使一个比特的宽度等于链路长度 d,需要满足:
- R= sd(链路长度)\frac{s}{d (链路长度)}d(链路长度)s =2.5∗108m/s2∗107m\frac{2.5*{10^8}m/s}{2 * {10^7}m}2∗107m2.5∗108m/s=12.5bps
- 结论: 当传输速率 R 为 12.5 bps 时,一个比特的宽度等于链路长度 20000 km
P27.考虑习题P25,但现在链路的速率是R=1Gbps。
- a.计算带宽一时延积R·dpropd_{\text{prop}}dprop
- b.考虑从主机A到主机B发送一个800000比特的文件。假定该文件作为一个大的报文连续发送。
在任何给定的时间,在链路上具有的比特数量最大值是多少? - c.在该链路上一个比特的宽度(以米计)是多少?
a回答:计算带宽一时延积
步骤 1:计算传播时延tpropt_{\text{prop}}tprop
tpropt_{\text{prop}}tprop = 链路距离d传播速率s\frac{链路距离d}{传播速率s}传播速率s链路距离d= 2∗107m2.5∗108m/s\frac{2*10^7m}{2.5*10^8m/s}2.5∗108m/s2∗107m=0.08s=80ms
步骤 2:计算带宽一时延积R▪tpropR▪ t_{\text{prop}}R▪tprop
已知:
- R=1Gbps=2×106{10^6}106bps
- tpropt_{\text{prop}}tprop = 0.08s
- R▪tpropR▪ t_{\text{prop}}R▪tprop = 1×109{10^9}109bps x 0.08s =8 x 107{10^7}107bits
b回答:在链路上具有的比特数量最大值是多少
在任何给定的时间,链路上具有的比特数量最大值就是带宽一时延积 ,因此最大值为8 x 107{10^7}107bits
c回答:在该链路上一个比特的宽度(以米计)是多少?
- 计算一个比特的宽度公式:比特宽度 = sR\frac{s}{R}Rs =2.5∗108m/s1∗109bps\frac{2.5*{10^8}m/s}{1 * {10^9}bps}1∗109bps2.5∗108m/s = 0.25m
P28.再次考虑习题P25。
- a.假定连续发送,发送该文件需要多长时间?
- b.假定现在该文件被划分为20个分组,每个分组包含40000比特。假定每个分组被接收方确认,确认分组的传输时间可忽略不计。最后,假定前一个分组被确认后,发送方才能发送分组。发送该文件需要多长时间?
- c.比较(a)和(b)的结果。
a回答:假定连续发送,发送该文件需要多长时间?
步骤一:计算传输时延 ttranst_{\text{trans}}ttrans
传输时延是指分组从发送端开始传输到完全发送完毕所需的时间。计算公式为:
ttrans=LRt_{\text{trans}} = \frac{L}{R}ttrans=RL
- L 是分组长度,800000 bitsbitsbits。
- R 是链路的带宽(传输速率),2×106bps2×{10 ^6}bps2×106bps
- ttrans=LR=8000bits2∗106bps=0.4st_{\text{trans}} = \frac{L}{R} = \frac{8000bits}{2 *{10 ^6bps} }=0.4sttrans=RL=2∗106bps8000bits=0.4s
步骤二:计算传播时延 tpropt_{\text{prop}}tprop
- d 是链路距离,20000 km 。
- s 是传播速率,2×108m/s2×{10 ^8}m/s2×108m/s
- tprop=ds=2∗107m2∗108m/s=80mst_{\text{prop}} = \frac{d}{s} = \frac{2* {10^7m}}{2 *{10 ^8m/s} }=80mstprop=sd=2∗108m/s2∗107m=80ms
步骤三:计算总传输时间
由于文件是连续发送的,总传输时间主要由传输时延决定,传播时延可以忽略不计。因此,总传输时间为:0.4S。
b回答:发送该文件需要多长时间?
步骤一:计算每个分组的传输时延tprop,packett_{\text{prop,packet}}tprop,packet
- ttrans=LpacketR=40000bits2∗106bps=0.02st_{\text{trans}} = \frac{L_{\text{packet}}}{R} = \frac{40000bits}{2 *{10 ^6bps} }=0.02sttrans=RLpacket=2∗106bps40000bits=0.02s
步骤二:计算每个分组的传播时延tpropt_{\text{prop}}tprop为0.08秒
步骤三:计算每个分组的往返时间(RTT)
往返时间(RTT)是指一个分组从发送端发送到接收端,再从接收端确认回发送端所需的时间。
- RTT = 2 × tpropt_{\text{prop}}tprop = 160ms
步骤四:计算总传输时间
由于每个分组需要等待前一个分组的确认才能发送,总传输时间包括每个分组的传输时延和往返时间。
-
ttotal=(n−1)×RTT+n×tprop,packet=(20−1)×0.16s+20×0.02s=19×0.16s+20×0.02s=3.04s+0.4s=3.44st_{\text{total}}=(n-1)×RTT+n×t_{\text{prop,packet}}=(20−1)×0.16 s+20×0.02 s=19×0.16 s+20×0.02 s=3.04 s+0.4 s=3.44 sttotal=(n−1)×RTT+n×tprop,packet=(20−1)×0.16s+20×0.02s=19×0.16s+20×0.02s=3.04s+0.4s=3.44s
-
备注
c回答: 比较(a)和(b)的结果
- 连续发送的总传输时间为 400 ms。
- 分组发送加确认的总传输时间为 3.44 s。
- 分组发送加确认的总传输时间远大于连续发送的总传输时间。
P29.假定在同步卫星和它的地球基站之间有一条10Mbps的微波链路。每分钟该卫星拍摄一幅数字照片,并将它发送到基站。假定传播速率是2.4×108m/s2.4×10{^8}m/s2.4×108m/s。
- a该链路的传播时延是多少?
- b.带宽一时延积是多少?
- c.若x表示该照片的大小。对于这条微波链路,能够连续传输的x最小值是多少?
备注:对于同步卫星,链路距离 d 通常为 36000 km
a回答: 传播时延
- tprop=ds=3.6×107m2.4∗108m/s=150mst_{\text{prop}} = \frac{\text{d}}{s} = \frac{3.6 × 10{^7}m}{2.4 *{10 ^8m/s} }=150mstprop=sd=2.4∗108m/s3.6×107m=150ms
b.带宽一时延积是多少
R×tprop=10×106bps×0.15s=1.5×106bitsR× t_{\text{prop}} = 10 × 10{^6bps}×0.15s=1.5×10{^6bits}R×tprop=10×106bps×0.15s=1.5×106bits
c.x最小值是多少
步骤一: 计算每秒需要传输的数据量及传输速率
- 每秒需要传输的数据量:xbis60s\frac{xbis}{60s}60sxbis
- 传输速率:10Mbps=10×106bps10Mbps = 10 × 10{^6}bps10Mbps=10×106bps
步骤二:计算最小照片大小 x
- 为了确保能够连续传输,每秒需要传输的数据量必须小于或等于链路的传输速率。
- xbis60s≤10×106bps\frac{xbis}{60s}≤10 × 10{^6}bps60sxbis≤10×106bps,推出x=6×108bitsx=6 × 10{^8}bitsx=6×108bits
P30.考虑1.5节中我们在分层讨论中对航线旅行的类比,随着协议数据单元向协议栈底层流动,首部在增加。随着旅客和行李移动到航线协议找底部,有与上述首部信息等价的概念吗?
分析:
1.分层流程与首部添加:
- 应用层:旅客购票并生成行程信息(如航班号、时间),相当于应用层数据。
- 传输层:值机时添加登机牌和行李标签。登机牌包含座位号、登机口,行李标签包含目的地、旅客ID等,类似于传输层首部(如TCP端口号),确保数据正确交付。
- 网络层:行李分拣时添加中转标签或路由指示(如下一航班号),类似IP首部的路由信息,指导中转决策。
- 链路层:装载到飞机时记录货舱位置和航班号,相当于MAC地址,确保物理传输到下一节点(航班)。
- 物理层:实际运输过程,无新增信息,仅传输已有数据。
2.首部的作用:
- 每一层添加的标签或信息(如行李标签、中转指示)为后续处理提供必要元数据,确保流程高效准确,如同协议首部提供控制信息。
3.关键对应关系:
- 登机牌与行李标签 → 传输层首部(确保端到端交付)。
- 中转标签 → 网络层首部(路由决策)。
- 装载信息 → 链路层首部(物理寻址)。
回答:
在航空旅行类比中,当旅客和行李向协议栈底层移动时,每一处理环节(如值机、分拣、装载)会逐步附加额外信息(如登机牌、行李标签、中转指示),这些信息类似于协议数据单元在各层添加的首部。它们确保流程的正确执行,如路由、交付和物理传输,与网络协议中首部的作用完全等价。
P31.在包括因特网的现代分组交换网中,源主机将长应用层报文(如一个图像或音乐文件)分段为较小的分组并向网络发送。接收方则将这些分组重新装配为初始报文。我们称这个过程为根文分段。
图1-27显示了一个报文在报文不分段或报文分段情况下的端到端传输。考虑一个长度为8×1068×10{^6}8×106比特的报文,它在图1-27中从源发送到目的地。假定在该图中的每段链路是2Mbps。忽略传播、排队和处理时延。

- a.考虑从源到目的地发送该报文且没有报文分段。从源主机到第一台分组交换机移动报文需要多长时间?记住,每台交换机均使用存储转发分组交换,从源主机移动该报文到目的主机需要多长时间?
- b.现在假定该报文被分段为800个分组,每个分组10000比特长。从源主机移动第一个分组到第一台交换机需要多长时间?从第一台交换机发送第一个分组到第二台交换机,从源主机发送第二个分组到第一台交换机各需要多长时间?什么时候第二个分组能被第一台交换机全部收到?
- c.当进行报文分段时,从源主机向目的主机移动该文件需要多长时间?将该结果与(a)的答案进行比较并解释之。
- d.除了减小时延外,使用报文分段还有什么原因?
- e.讨论报文分段的缺点。
- a.考虑从源到目的地发送该报文且没有报文分段。从源主机到第一台分组交换机移动报文需要多长时间?记住,每台交换机均使用存储转发分组交换,从源主机移动该报文到目的主机需要多长时间?
- b.现在假定该报文被分段为800个分组,每个分组10000比特长。从源主机移动第一个分组到第一台交换机需要多长时间?从第一台交换机发送第一个分组到第二台交换机,从源主机发送第二个分组到第一台交换机各需要多长时间?什么时候第二个分组能被第一台交换机全部收到?
- c.当进行报文分段时,从源主机向目的主机移动该文件需要多长时间?将该结果与(a)的答案进行比较并解释之。
- d.除了减小时延外,使用报文分段还有什么原因?
- e.讨论报文分段的缺点。
a回答
-
1.从源主机到第一台分组交换机的传输时间
ttrans=LR=8×106bit2∗108bit/s=4秒t_{\text{trans}}=\frac{L}{R}= \frac{8 × 10{^6}bit}{2 *{10 ^8bit/s} }=4秒ttrans=RL=2∗108bit/s8×106bit=4秒 -
2.从源主机到目的主机的总传输时间
从源到目的地有 3 段链路(源到第一台交换机、第一台交换机到第二台交换机、第二台交换机到目的地)。每段链路的传输时间都是 4 秒,总传输时间12秒。
b回答
-
1.从源主机移动第一个分组到第一台交换机的时间
ttrans=L(分组长度)R=10000bit2∗106bit/s=5毫秒t_{\text{trans}}=\frac{L(分组长度)}{R}= \frac{10000bit}{2 *{10 ^6bit/s} }=5毫秒ttrans=RL(分组长度)=2∗106bit/s10000bit=5毫秒 -
2.从第一台交换机发送第一个分组到第二台交换机的时间为:5毫秒
-
3 从源主机发送第二个分组到第一台交换机的时间:5毫秒
-
4 从源主机发送第二个分组到第一台交换机的时间:10毫秒
第一个分组到达第一台交换机的时间:5 毫秒;第二个分组开始传输的时间:5 毫秒,合计10毫秒。
c回答
提示: 总时间 = (分组数) ×传输时间 + (链路段数-1)×传输时间
步骤1: 第一个分组的端到端时延
分组经过3段链路(源→交换机1→交换机2→目的地),每段传输时间5ms。3×5ms=15ms
步骤2剩余799个分组在源到第一台交换机的传输时间,每个分组传输时间5ms,采用流水线传输,总时间为:799×5ms=3995ms
注意: 发送所有800个分组到第一台交换机的总时间为800×5ms=4000ms
因此,剩余799个分组的传输实际占用时间为3995ms(从第5ms到第4000ms)。
步骤3: 最后一个分组的后两跳传输时间:最后一个分组从交换机1→交换机2→目的地,耗时:2×5=10ms
步骤4: 总时延,总时延由最后一个分组完成所有传输的时间决定。由于源在4000ms时发送完所有分组到交换机1,最后一个分组还需10ms到达目的地:4000ms+10ms=4010ms=4.01秒
结论: 与(a)的对比:不分段时延为12秒,分段后仅需4.01秒。分段通过流水线传输大幅减少等待时间,各分组可并行在不同链路传输,显著提升效率。
d回答
- 增强可靠性和纠错能力(例如,仅重传受损分组)。
- 灵活的路由选择(适应不同链路的最大传输单元)。
- 支持多业务流量复用(多个用户共享同一链路)。
e回答
- 增加处理开销(分组头处理和重组)。
- 存储资源消耗(交换机和目的主机存储分组)。
- 出错可能性增加(更多分组头带来潜在错误)。
- 系统复杂性增加(分组调度和排序)
P32.用本书的Web网站上的报文分段小Java小程序进行实验。该程序中的时延与前一个习题中的时延相当吗?链路传播时延是怎样影响分组交换(有报文分段)和报文交换的端到端总时延的?
1.报文交换
- 计算传输时延: FR\frac{\text{F}}{R}RF
- 传播时延:每段链路的传播时延为 d
- 总时延:报文交换的总时延包括传输时延、传播时延和存储转发时延。具体计算公式为:
总时延=(FR+d)∗k总时延=(\frac{\text{F}}{R}+d)*k总时延=(RF+d)∗k ,其中k是链路数。
2.分组交换
分组交换中的总时延公式为:总时延=(N+k−1)×t+k×d总时延=(N+k−1)×t+k×d总时延=(N+k−1)×t+k×d
- N 是分组数。
- k 是链路数。
- t 是每个分组的传输时延。
- d 是每段链路的传播时延。
分析
步骤1:传输时延
- 每个分组的传输时延为 t。
- 由于分组交换采用存储转发机制,每个分组在每个节点上都需要完全接收后再进行转发。
- 因此,对于 N 个分组,每个分组在每个节点上都需要传输一次,总传输时延为 (N+k−1)×t。若果不好理解,参考31题c问题: 总时间 = (分组数) ×传输时间 + (链路段数-1)×传输时间。
步骤2:传播时延
-
每段链路的传播时延为 d。
-
传播时延是指信号在链路上传播所需的时间,与链路的长度和信号的传播速度有关。
-
对于 L 段链路,总传播时延为 k×d。
结论 链路传播时延对分组交换的端到端总时延有显著影响,尤其是在链路数较多的情况下。分组交换的总时延由传输时延和传播时延共同决定,其中传输时延与分组数和链路数有关,传播时延与链路数有关。
P33.考虑从主机A到主机B发送一个F比特的大文件。A和B之间有两段链路(和两台交换机),并且该链路不拥塞(即没有排队时延)。主机A将该文件分为每个为S比特的报文段,并为每个报文段增加一个80比特的首部,形成L=80+S比特的分组。每条链路的传输速率为Rbps。求出从A到B移动该文件时延最小的值S。忽略传播时延。
根据31题c问的 提示:总时间 = (分组数) ×传输时间 + (链路段数-1)×传输时间
步骤1:计算分组数量
N= FS\frac{\text{F}}{S}SF
步骤2:计算文件总传输时间
**根据公式:**总时间 = (分组数) ×传输时间 + (链路段数-1)×传输时间推出:
T(s)=FS∗80+SR+(3−1)∗80+SR=(FS+2)∗80+SRT(s) =\frac{\text{F}}{S}*\frac{\text{80+S}}{R}+(3-1)*\frac{\text{80+S}}{R}=(\frac{\text{F}}{S}+2)*\frac{\text{80+S}}{R}T(s)=SF∗R80+S+(3−1)∗R80+S=(SF+2)∗R80+S
步骤3:最小化 T(S)
化简后T(s)=80FRS+FR+160R+2SRT(s) =\frac{\text{80F}}{RS}+\frac{\text{F}}{R}+\frac{\text{160}}{R}+\frac{\text{2S}}{R}T(s)=RS80F+RF+R160+R2S
- 对s求导数,设置导数等于0:−80F+2S2=0-80F+2S{^2}=0−80F+2S2=0 ====》S=40FS=\sqrt{40F}S=40F
P34.Skype提供了一种服务,使你能用PC向普通电话打电话。这意味着语音呼叫必须通过因特网和电话网。讨论这是如何做到的。
要实现通过PC使用Skype向普通电话打电话,涉及到因特网和电话网络之间的协同工作。
1. Skype客户端发起呼叫
用户在Skype软件中输入普通电话号码并点击呼叫。Skype根据电话号码格式识别出呼叫目标为电话网络用户,而非其他Skype用户。
Skype客户端对用户的语音信号进行数字化处理,通常采用语音编解码器(如SILK或 Opus)来压缩语音数据,减少数据传输量,以适应因特网的传输效率。
2. 因特网传输
数字化语音数据以数据包形式通过因特网传输。这些数据包包含语音信息以及控制和信令数据,使用如会话发起协议(SIP)或 Skype专有的协议来建立和管理通话。
数据包从用户的PC出发,经由家庭网络、互联网服务提供商(ISP),并通过因特网主干网络传递到Skype的服务器或网关。
3. 因特网-电话网关
数据到达Skype在因特网和电话网络交界处的网关服务器。网关负责将因特网上的数据包格式转换为电话网络可识别的格式,例如将VoIP(互联网语音协议)信号转换为传统的电路交换信号。
网关使用会话控制协议(如SIP)与电话网络通信,通过公共交换电话网络(PSTN)或移动网络的运营商建立通话连接。它还会处理号码转换和路由,确保呼叫被正确发送到目标电话号码所在区域的交换机。
4. 电话网络传输
电话网络(PSTN或移动网络)采用电路交换技术,为通话临时分配一条专用电路。语音数据以模拟信号形式在电路上传输,经过多个交换机和传输线路,最终抵达目标电话用户所在地的本地交换机。
本地交换机将信号传递至普通电话,使电话振铃,用户摘机后,电话网络在双方之间建立稳定的语音通话路径。
5. 双向通信和通话结束
通话期间,双方的语音信号在Skype客户端、因特网、网关和电话网络之间双向传输。Skype客户端和网关不断处理数据包,确保语音质量和通话的连贯性。
用户挂断Skype或电话后,Skype客户端发送结束信号给网关,网关通知电话网络释放电路资源,结束通话。


6万+

被折叠的 条评论
为什么被折叠?



