计算机网络课后习题第28题

假定要在网络上传送1.5MB的文件。设分组长度为1KB,往返时间RTT=80ms。传送数据之前还需要有建立TCP连接的时间,这需要2*RTT = 160ms。试计算在以下几种情况下接收方收到该文件的最后一个比特所需的时间。
(1)数据发送速率为10Mbit/s,数据分组可以连续发送。
(2)数据发送速率为10Mbit/s,但每发送完一个分组后要等待一个RTT时间才能在发送下一个分组。
(3)数据发送率极快,可以不考虑发送数据 所需要的时间。但规定每一个RTT往返时间内只能发送20个分组。
(4)数据发送速率极快,可以不考虑发送数据所需的时间。但在第一个RTT往返时间内只能发送一个分组,在第二个RTT内可发送两个分组,在三个RTT内可发送4个分组(即2(3-1)=22 = 4个分组)。

首先要清楚的一个点就是关于1kb 和1k bit/s
这里对于k来说代表的数值是不一样的,对于数据量来说k=1024而对于速率来说k=1000

答: (1) 发送时间 = 1.5MB/10Mbit/s = (1.510241024*8)bit / 10Mbit/s = 12582912bit/10Mbps =1.258s
最后一个分组的传播时间 = 0.5RTT=40ms
总时间 = 2RTT+1.258s+40ms = 1.458s
(2) 需要划分的分组数 = 1.5MB/1KB = 1536
等待时间 = 1535RTT = 122.8s
总时间 = 1.458s + 122.8s = 124.258s

可能有人会疑问为什么是76个RTT而不是77,主要是没有理解题意,题目说传送时间几乎为0但是每个RTT只能传输20个分组,我们可以理解为虽然传送端可以传送的很快,但是接收端没有这么强的接受能力,所以必须限制传送端的平均速度,例如我们如果有20个分组,那么需要的传送时间为0,因为我们可以一次传输20个分组,至于接收端需要多少时间来处理和我们无关,但如果我们有21个分组,那么我们的传输时延就是1个RTT,前20个数据传输完后我们必须等待一个RTT待接收端处理完后我们才能继续发送,现在应该就理解为什么是76个而不是77了吧

(3) 每一个RTT时间内只能发送20个分组。1536个分组,需要76个RTT,76X20=1520,最后剩下16个分组,一次发送完。最后发送分组到达对方需要0.5RTT
总时间 = 76.5RTT + 2RTT = 6.12 + 0.16 = 6.28s
(4) 经过n个RTT后发送分组为:1+2+4+…+2n=2(n+1)-1个分组, n=9,发送分组=2^10-1=1023,可见9个RTT不够。
n=10,发送分组=2^11-1=2047 总时间 = (2+10+0.5)RTT = 1s

上一篇:Python实现DBSCAN聚类算法(简单样例测试)


下一篇:Python音乐合成器中振荡器