1-28 假定要在网络上传送1.5MB的文件。设分组长度为1KB,往返时间RTT=80ms。传送数据之前还需要有建立TCP连接的时间,这时间是2×RTT=160ms。试计算在以下几种情况下接收方收完该文件的最后一个比特所需的时间。
(1)数据发送速率为10Mb/s,数据分组可以连续发送。
(2)数据发送速率为10Mb/s,但每发送完一个分组后要等待一个RTT时间才能再发送一个分组。
(3)数据发送速率极快,可以不考虑发送数据所需的时间。但规定在每一个RTT往返时间内只能发送20个分组。
(4)数据发送速率极快,可以不考虑发送数据所需的时间。但在第一个RTT往返时间内只能发送一个分组,在第二个RTT内可发送两个分组,在第三个RTT内可发送四个分组(即-1==4个分组)
注:题目的条件中的M==1048576=约等于2^20,K==1024=约等于2^10,1B=1字节=8bit=8b
解答:
(1)发送这些比特所需时间=1.5×2^20×8bit/(10×bit/s)=1.258(s) 最后一个分组传播到达目的地还需要0.5×RTT=40ms时间。总共需要的时间=2×RTT+1.258+0.5×RTT=0.16+1.258+0.04=1.458(s)
(2)需要划分的分组数=1.5MB/1KB=1536
建立时间:2xRTT = 0.16(s)
总的发送时间:仍是1.258(s)
最后一个分组传播到达目的地需要:0.5×RTT=40(ms)=0.04(s)(二分之一往返时间)
从第一个分组最后一个比特到达 直到最后一个分组第一个比特 到达需要经历:1535×RTT=1535×0.08=122.8(s)
总共需要的时间=0.16+1.258+0.04+122.8=1.458+122.8=124.258(s)
(3)在每一个RTT往返时间内只能发送20个分组。1536个分组,需要76个整的RTT,76个RTT可以发送76×20=1520个分组,最后剩下16个分组,一次发送完。但最后一次发送的分组到达接收方也需要0.5×RTT。
因此,总共需要的时间=2×RTT+76×RTT+0.5×RTT=6.12+0.16=6.28(s)
(4)在两个RTT后就开始传送数据。共 1536个分组
经过n个RTT后就发送了1+2+4+…+2n=2^n-1个分组。
若n=10,那么只发送了 2^n-1=1023个分组。可见10个RTT不够。
若n=11,那么只发送了 2^n-1= 2047个分组。可见11个RTT足够了。
这样,考虑到建立TCP连接的时间和最后的分组传送到终点需要的时间,(最后一次,不考虑返回)现在总共需要的时间=(2+10+0.5)×RTT=12.5×0.08=1(s)