《计算机网络: 自顶向下方法》(第六版) 第一章习题

声明

本书为《计算机网络:自顶向下方法》(第六版),也就是图片上的那本。所有的课后复习题和习题答案均为个人理解,若有错误或不足的地方欢迎大家在评论中指出。

全书答案:https://github.com/wonter/Computer-Networking-A-Top-Down-Approach-NOTES

习题

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

P2.式(1-1)给出了经传输速率为R的N段链路发送长度L的一个分组的端到端时延。对于经过N段链路连续地发送P个这样的分组,一般化地表示出这个公式。

如果是P个分组,那么最后一个分组到达的时间就是总共的时间,所以我们只需要关注最后一个分组就可以了

首先第二个分组发送出去之前,第一个分组必须已经到达第一个路由器,这时候需要消耗L/R,同理,第三个分组需要等待第二个分组发送到第一个路由器,也就是L/R + L/R,以此类推,第P个分组需要等待前面的分组都发送出去,也就是(P - 1) * L/R

然后第P个分组从端到端需要的时间是N * L/R

所以总共的时间也就是(N + P - 1) * L/R

P3.考虑一个应用程序以稳定的速率传输数据(例如,发送方每k个时间单元产生一个N比特的数据单元,其中k较小且固定)。另外,当这个应用程序启动时,它将连续运行相当长的一段时间。回答下列问题,简要论证你的回答:
a.是分组交换网还是电路交换网更为适合这种应用?为什么?
b.假定使用了分组交换网,并且该网中的所有流量都来自如上所述的这种应用程序。此外,假定该应用程序数据传输速率的总和小于每条链路的各自容量。需要某种形式的拥塞控制吗?为什么?

a. 电路交换网,因为发送速率稳定,而且运行时间较长,用电路交换不会占用太多空闲资源。

b. 不需要,因为假定了该应用程序数据传输速率的总和小于每条链路的各自容量

P4.考虑在图1-13中的电路交换网。回想在每条链路上有4条链路,以顺时针方向标记四台交换机A、B、C和D。

《计算机网络: 自顶向下方法》(第六版) 第一章习题_第1张图片

a.在该网络中,任何时候能够进行同时连接的最大数量是多少?
b.假定所有连接位于交换机A和C之间。能够进行同时连接的最大数量是多少?
c.假定我们要在交换机A和C之间建立4条连接,在交换机B和D之间建立另外4条连接。我们能够让这些呼叫通过这4条链路建立路由以容纳所有8条连接吗?

a. 16,A->B四条,B->C四条,C->D四条,D->A四条

b. 8,A->B->C四条,A->D->C四条

c. 可以,A->B->C两条,A->D->C两条,B->C->D两条,B->A->D两条

P5.回顾在1.4节中的车队的类比。假定传播速度还是100km/h。
a.假定车队旅行150km:在一个收费站前面开始,通过第二个收费站,并且在第三个收费站后面结束。其端到端时延是多少?
b.重复(a),现在假定车队中有8辆汽车而不是10辆。

a. 3个收费站一共旅行150km也就是说每个收费站距离是75km,车队从第一个收费站前面开始到处理完毕需要12 * 10 = 120秒 = 2分钟的处理时间,然后从第一个收费站到第二个收费站前面需要75 / 100 = 45分钟的传播时间,然后通过第二个收费站依然需要2分钟处理时间,再从第二个收费站到第三个收费站需要45分钟传播时间,最后第三个收费站需要2分钟处理时间。一共需要2 + 75 + 2 + 75 + 2 = 96分钟

b. 和前一题一样,传播时间依然是45分钟,而处理时间变为12 * 8 = 96秒,所以一共需要96s + 45min + 96s + 45min + 96s = 94分钟48秒

P6.这个习题开始探讨传播时延和传输时延,这是数据网络中的两个重要概念。考虑两台主机A和B由一条速率为R bps的链路相连。假定这两台主机相隔m米,沿该链路的传播速率为s m/s。主机A向主机B发送长度L比特的分组。
a.用m和s来表示传播时延dprop。
b.用L和R来确定该分组的传输时间dtrans。
c.忽略处理和排队时延,得出端到端时延的表达式。
d.假定主机A在时刻t=0开始传输该分组。在时刻t=dtrans,该分组的最后一个比特在什么地方?
e.假定dprop大于dtrans。在时刻t=dtrans,该分组的第一个比特在何处?
f.假定dproc小于dtrans。在时刻t=dtrans,该分组的第一个比特在何处?
g.假定s=2.5×108,L=120比特,R=56kbps。求出使dproc等于dtrans的距离m。

a. m/s

b. L/R

c. m/s + L/R

d. 刚刚离开主机A

e. 在链路上传播

f. 已经到达主机B

P7.我们考虑从主机A向主机B通过分组交换网发送语音(VoIP)。主机A将模拟语音转换为传输中的64kbps数字比特流。然后主机A将这些比特分为56字节的分组。A和B之间有一条链路:它的传输速率是2Mbps,传播时延是10ms。一旦A收集了一个分组,就将它向主机B发送。一旦主机B接收到一个完整的分组,它将该分组的比特转换成模拟信号。从比特产生(从位于主机A的初始模拟信号起)的时刻起,到该比特被解码(在主机B上作为模拟信号的一部分),花了多少时间?

从比特产生到解码需要(56 * 8)/(64 * 103) = 7ms

接着从解码之后的传输时间需要(56 * 8)/(2 * 106) = 0.224ms

然后传播到主机B的传播时间是10ms

最后有一个问题是,这道题目是否考虑主机B的解码时间,如果不考虑的话总时间就是7 + 10 + 0.224 = 17.224ms;如果考虑的话题目并没有给出,假设是xms,那么就是(17.224 + x)ms

P8.假定用户共享一条3Mbps的链路。又设每个用户传输时要求150kbps,但是每个用户仅有10%的时间传输。(参见1.3节中关于“分组交换与电路交换的对比”的讨论。)
a.当使用电路交换时,能够支持多少用户?
b.对于本习题的后续小题,假定使用分组交换。求出给定用户正在传输的概率。
c.假定有120个用户。求出在任何给定时刻,实际有n个用户在同时传输的概率。(提示:使用二项式分布。)
d.求出有21个或更多用户同时传输的概率。

a. 3Mbps/150kbps = 20

b. p = 0.1

c.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第2张图片

d.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第3张图片

P9.考虑在1.3节“分组交换与电路交换的对比”的讨论中,给出了一个具有一条1Mbps链路的例子。用户在忙时以100kbps速率产生数据,但忙时仅以p=0.1的概率产生数据。假定用1Gbps链路替代1Mbps的链路。
a.当采用电路交换技术时,能被同时支持的最大用户数量N是多少?
b.现在考虑分组交换和有M个用户的情况。给出多于N用户发送数据的概率公式(用p、M、N表示)。

a. 10000

b.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第4张图片

P10.考虑一个长度为L的分组从端系统A开始,经3段链路传送到目的端系统。令di、si和Ri表示链路i的长度、传播速度和传输速率(i=1,2,3)。该分组交换机对每个分组的时延为dproc。假定没有排队时延,根据di、si、Ri(i=1,2,3)和L,该分组总的端到端时延是什么?现在假定该分组是1500字节,在所有3条链路上的传播时延是2.5×108m/s,所有3条链路的传输速率是2Mbps,分组交换机的处理时延是3ms,第一段链路的长度是5000km,第二段链路的长度是4000km,并且最后一段链路的长度是1000km。对于这些值,该端到端时延为多少?

《计算机网络: 自顶向下方法》(第六版) 第一章习题_第5张图片

套一下公式得到是64ms

P11.在上述习题中,假定R1=R2=R3=R且dproc=0。进一步假定该分组交换机不存储转发分组,而是在等待分组到达前立即传输它收到的每个比特。这时端到端时延为多少?

由于比特不被留在交换机中直接被转发,所以端到端的时延也就是最后一个比特的时延。首先最后一个比特需要被处理到链路上,也就是L/R,然后需要经过3段链路的时延d1/s1 + d2/s2 + d3/s3。最后算出来结果是46ms

P12.一台分组交换机接收一个分组并决定该分组应当转发的出链路。当某分组到达时,另一个分组正在该出链路上被发送到一半,还有4个其他分组正等待传输。这些分组以到达的次序传输。假定所有分组是1500字节并且链路速率是2Mbps。该分组的排队时延是多少?在更一般的情况下,当所有分组的长度是L,传输速率是R,当前正在传输的分组已经传输了x比特,并且已经在队列中有n个分组,其排队时延是多少?

前面等待了4.5个分组,也就是4.5 * 1500 = 6750Bytes,然后1Byte = 8bit,所以6750Bytes = 54000bit,所以排队时延为54000/(2 * 106) = 27ms

《计算机网络: 自顶向下方法》(第六版) 第一章习题_第6张图片

P13.
a.假定有N个分组同时到达一条当前没有分组传输或排队的链路。每个分组长为L,链路传输速率为R。对N个分组而言,其平均排队时延是多少?
b.现在假定每隔LN/R秒有N个分组同时到达链路。一个分组的平均排队时延是多少?

a.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第7张图片

b. 由于LN/R比(N - 1) * L / 2R大,所以在下一次N个分组来之前,上一次N个分组已经处理完了,没有额外排队时延,所以平均排队时延依然是(N - 1) * L / 2R

P14.考虑路由器缓存中的排队时延。令I表示流量强度;即I=La/R。假定排队时延的形式为IL/R(1-I),其中I<1。
a.写出总时延公式,即排队时延加上传输时延。
b.以L/R为函数画出总时延的图。

a.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第8张图片

b. 化简一下上式就行了

P15.令a表示在一条链路上分组的到达率(以分组/秒计),令μ表示一条链路上分组的传输率(以分组/秒计)。基于上述习题中推导出的总时延公式(即排队时延加传输时延),推导出以a和μ表示的总时延公式。

由于传输率是μ,所以传输时间为1/μ = L/R
排队时间由上题得到是IL/R(1 - I),然后又有I = La/R
利用这三个式子,把I、L、R全部消除然后化简就得到了1/(μ - a)

P16.考虑一台路由器缓存前面的一条出链路。在这个习题中,将使用李特尔(Little)公式,这是排队论中的一个著名公式。令N表示在缓存中的分组加上被传输的分组的平均数。令a表示到达链路的分组速率。令d表示一个分组历经的平均总时延(即排队时延加传输时延)。李特尔公式是N=a×d。假定该缓存平均包含10个分组,并且平均分组排队时延是10ms。该链路的传输速率是100分组/秒。使用李特尔公式,在没有丢包的情况下,平均分组到达率是多少?

假设已经被传输了1个分组
那么N = 10 + 1 = 11
d = 10/1000s + 1/100s = 0.02
所以a = N/d = 550

P17.
a.对于不同的处理速率、传输速率和传播时延,给出1.4.3节中式(1-2)的一般表达式。
b.重复(a),不过此时假定在每个结点有平均排队时延dqueue。

a.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第9张图片

b.
《计算机网络: 自顶向下方法》(第六版) 第一章习题_第10张图片

P18.在一天的3个不同的小时内,在同一个大陆上的源和目的地之间执行Traceroute。
a.在这3个小时的每个小时中,求出往返时延的均值和方差。
b.在这3个小时的每个小时中,求出路径上的路由器数量。在这些时段中,该路径发生变化了吗?
c.试图根据源到目的地Traceroute分组通过的情况,辨明ISP网络的数量。具有类似名字和/或类似的IP地址的路由器应当被认为是同一个ISP的一部分。在你的实验中,在相邻的ISP间的对等接口处出现最大的时延了吗?
d.对位于不同大陆上的源和目的地重复上述内容。比较大陆内部和大陆之间的这些结果。

linux系统可以通过traceroute命令,windows可以通过tracert命令

P19.a.访问站点www.traceroute.org,并从法国两个不同的城市向位于美国的相同的目的主机执行Traceroute。在这两个Traceroute中,有多少条链路是相同的?大西洋沿岸国家的链路相同吗?
b.重复(a),但此时选择位于法国的一个城市和位于德国的另一个城市。
c.在美国挑选一个城市,然后向位于中国的两个不同城市的主机执行Traceroute。在这两次Traceroute中有多少链路是相同的?在到达中国前这两个Traceroute分开了吗?

如果www.traceroute.org用不了可以试试https://www.ipip.net/traceroute.php

P20.考虑对应于图1-20b吞吐量的例子。现在假定有M对客户-服务器而不是10对。用Rs、Rc和R分别表示服务器链路、客户链路和网络链路的速率。假设所有的其他链路都有充足容量,并且除了由这M对客户-服务器产生的流量外,网络中没有其他流量。推导出由Rs、Rc、R和M表示的通用吞吐量表达式。

《计算机网络: 自顶向下方法》(第六版) 第一章习题_第11张图片

P21.考虑图1-19b。现在假定在服务器和客户之间有M条路径。任两条路径都不共享任何链路。路径k(k=1,…,M)是由传输速率为Rk1、Rk2、…、RkN的N条链路组成。如果服务器仅能够使用一条路径向客户发送数据,则该服务器能够取得的最大吞吐量是多少?如果该服务器能够使用所有M条路径发送数据,则该服务器能够取得的最大吞吐量是多少?

《计算机网络: 自顶向下方法》(第六版) 第一章习题_第12张图片

P22.考虑图1-19b。假定服务器与客户之间的每条链路的丢包概率为p,且这些链路的丢包率是独立的。一个(由服务器发送的)分组成功地被接收方收到的概率是多少?如果在从服务器到客户的路径上分组丢失了,则服务器将重传该分组。平均来说,为了使客户成功地接收该分组,服务器将要重传该分组多少次?

(1-p)n

一共需要传1/(1-p)n次,因为第一次不属于重传,所以需要重传1/(1-p)n - 1次

P23.考虑图1-19a。假定我们知道沿着从服务器到客户的路径的瓶颈链路是速率为Rs bps的第一段链路。假定我们从服务器向客户发送紧接着的一对分组,且沿这条路径没有其他流量。假定每个分组的长度为L比特,两条链路具有相同的传播时延dprop。
a.在目的地,分组的到达间隔时间有多大?也就是说,从第一个分组的最后一个比特到达到第二个分组最后一个比特到达所经过的时间有多长?
b.现在假定第二段链路是瓶颈链路(即Rc

a. L/Rs

b. 是有可能的,考虑一下极端情况Rc=0,就会发生排队。T必须至少L/Rc - L/Rs

P24. 假设你希望从波士顿到洛杉矶紧急传送40 x 1012字节数据。你有一条100Mbps专用链路可用于传输数据。你是愿意通过这条链路传输数据,还是愿意使用FedEx一夜快递?解释你的理由。

如果选择链路传输数据,那么需要 40 x 1012 x 8 / 100Mbps = 37天,所以还是选择FedEx一夜快递吧。。

P25.假定两台主机A和B相隔20000km,由一条直接的R=2Mbps的链路相连。假定跨越该链路的传播速率是2.5×108m/s。
a.计算带宽-时延积R·tprop。
b.考虑从主机A到主机B发送一个800000比特的文件。假定该文件作为一个大的报文连续发送。在任何给定的时间,在链路上具有的比特数量最大值是多少?
c.给出带宽-时延积的一种解释。
d.在该链路上一个比特的宽度(以米计)是多少?它比一个足球场更长吗?
e.根据传播速率s、带宽R和链路m的长度,推导出一个比特宽度的一般表示式。

a. Rtprop = 2Mbps x 20000km/(2.5 x 108)m/s = 160000

b. 160000,因为带宽-时延积就是任一时间链路上具有的比特最大数量,公式如何推出来的见e小问

c. 带宽-时延积就是任一时间链路上具有的比特最大数量,公式如何推出来的见e小问

d. 比特数量是160000,链路长度是20000km,所以可以算出来一个比特是125米,应该跟足球场差不多长了吧。。

e. 首先推一下链路上具有的比特最大数量,设一共有L个比特
传播时延是m/s,传输时延是L/R
那么传播时延占传输时延的百分比就是(m/s)/(L/R) = mR/sL,也就是说过了mR/sL秒之后,链路上就占满比特了
因为一共有L个比特,所以任一时间链路上具有的比特最大数量是L * mR/sL = mR/s,也就是带宽-时延积
那么宽度就是m / (mR/s) = s/R

P26.对于习题P25,假定我们能够修改R。对什么样的R值,一个比特的宽度能与该链路的长度一样长?

s/R = m,求出来R是12.5bps

P27.考虑习题P25,但现在链路的速率是R=1Gbps。
a.计算带宽-时延积R·dprop。
b.考虑从主机A到主机B发送一个800000比特的文件。假定该文件作为一个大的报文连续发送。在任何给定的时间,在链路上具有的比特数量最大值是多少?
c.在该链路上一个比特的宽度(以米计)是多少?

a. 8 x 107

b. 8 x 105,这里的带宽-时延积不是任一时间链路上具有的比特最大数量,是因为传输时延比传播时延小,也就是说比特还没到达终点的时候,已经全部在链路上了

c. 0.25m

P28.再次考虑习题P25。
a.假定连续发送,发送该文件需要多长时间?
b.假定现在该文件被划分为20个分组,每个分组包含40000比特。假定每个分组被接收方确认,确认分组的传输时间可忽略不计。最后,假定前一个分组被确认后,发送方才能发送分组。发送该文件需要多长时间?
c.比较(a)和(b)的结果。

a. 0.48s

b. 2s

c. 显然第一个更小,主要是浪费在传播时延上了

P29.假定在同步卫星和它的地球基站之间有一条10Mbps的微波链路。每分钟该卫星拍摄一幅数字照片,并将它发送到基站。假定传播速率是2.4×108m/s。
a.该链路的传播时延是多少?
b.带宽-时延积R·dprop是多少?
c.若x表示该照片的大小。对于这条微波链路,能够连续传输的x最小值是多少?

首先要知道同步卫星距离地球的高度约为36000km(百度来的)

a. dprop = 0.15s

b. 1500000

c. 由于卫生每分钟拍摄一次照片,所以在这60s之内需要把前一行照片传输完毕(注意是传输完毕不是传播完毕,只要传输到链路上就行了,不用等到达地球),所以算出来是6 x 108比特的传输时间是60秒

P30.考虑1.5节中我们在分层讨论中对航线旅行的类比,随着协议数据单元向协议栈底层流动,首部在增加。随着旅客和行李移动到航线协议栈底部,有与上述首部信息等价的概念吗?

个人理解应该是有的,举个栗子,你必须拿到登机牌,飞机才知道你的目的地是哪里,登机牌就算是一个“首部”

P31.在包括因特网的现代分组交换网中,源主机将长应用层报文(如一个图像或音乐文件)分段为较小的分组并向网络发送。接收方则将这些分组重新装配为初始报文。我们称这个过程为报文分段。图1-27显示了一个报文在报文不分段或报文分段情况下的端到端传输。考虑一个长度为8×106比特的报文,它在图1-27中从源发送到目的地。假定在该图中的每段链路是2Mbps。忽略传播、排队和处理时延。


《计算机网络: 自顶向下方法》(第六版) 第一章习题_第13张图片

a.考虑从源到目的地发送该报文且没有报文分段。从源主机到第一台分组交换机移动报文需要多长时间?记住,每台交换机均使用存储转发分组交换,从源主机移动该报文到目的主机需要多长时间?
b.现在假定该报文被分段为800个分组,每个分组10000比特长。从源主机移动第一个分组到第一台交换机需要多长时间?从第一台交换机发送第一个分组到第二台交换机,从源主机发送第二个分组到第一台交换机各需要多长时间?什么时候第二个分组能被第一台交换机全部收到?
c.当进行报文分段时,从源主机向目的主机移动该文件需要多长时间?将该结果与(a)的答案进行比较并解释之。
d.除了减小时延外,使用报文分段还有什么原因?
e.讨论报文分段的缺点。

a. 4s,12s

b. 5ms, 都是5ms, 10ms

c. 只关注最后一个分组即可,最后一个分组需要等待799个5ms才能发送,然后需要3个5ms到达目的主机,所以一共需要802个5ms,也就是4.01s,比a的12s小很多。因为分组交换机必须等待把一个分组都收到后才能转发这个分组,如果这个分组非常非常大,那么可能等待的时间很长,而分成很多小分组的话,就可以先把先收到的小分组转发出去,这样就减少了等待时间。最极端的例子就是不等待整个分组再转发,而是收到一个bit就转发一个bit,这样就几乎没有等待的时间了。

d. 减小交换机处理分组的压力(可能交换机的内存很小,一次不能处理整个文件那么大,但是一次可以处理一个分组那么大);并且当一个很大的分组正在处理时,可能后面很小的分组需要排队等很久;还有就是当比特丢失或者错位时,一次需要全部重传,如果分成若干分组的话,哪个分组比特有错误就重传这个分组就行了

e. 每个分组都需要加上一些额外的信息(比如序列号),因为到达目的主机后需要重新把这些分组合并起来,所以总体的大小是比以前整个文件的大小大的

P32.用本书的Web网站上的报文分段小Java小程序进行实验。该程序中的时延与前一个习题中的时延相当吗?链路传播时延是怎样影响分组交换(有报文分段)和报文交换的端到端总时延的?

Java小程序地址:https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/message-segmentation/index.html

P33.考虑从主机A到主机B发送一个F比特的大文件。A和B之间有两段链路(和两台交换机),并且该链路不拥塞(即没有排队时延)。主机A将该文件分为每个为S比特的报文段,并为每个报文段增加一个80比特的首部,形成L=80+S比特的分组。每条链路的传输速率为R bps。求出从A到B移动该文件时延最小的值S。忽略传播时延。

暂时没能理解为什么2台交换机会只有两段链路而不是三段,不过答案是:


P34. Skype提供了一种服务,使你能用PC向普通电话打电话。这意味着语音呼叫必须通过因特网和电话网。讨论这是如何做到的。

应该是中间有一层服务器做转发,网络电话通过把语音信号经过数字化处理、压缩编码打包、透过网络传输给服务器,然后服务器解压、把数字信号还原成声音,再拨打出去

你可能感兴趣的:(《计算机网络: 自顶向下方法》(第六版) 第一章习题)