5-47
一个客户向服务器请求建立TCP连接。客户在TCP连接建立的三次握手中的最后一个报文段中捎带上一些数据,请求服务器发送一个长度为L字节的文件。假定:(1)客户和服务器之间的数据传输速率是R字节/秒,客户与服务器之间的往返时间是RTT(固定值)。
(2)服务器发送的TCP报文段的长度都是M字节,而发送窗口大小是nM字节。(3)所有传送的报文段都不会出错(无重传),客户收到服务器发来的报文段后就及时发送确认。(4)所有的协议首部开销都可忽略。所有确认报文段和连按建立阶段的报文段的长度都可忽略(即忽略这些报文段的发送时间)。试证明,从客户开始发起连接建立到接收服务器发送的整个文件多需的时间T是:
T=2RTT+L/R 当nM>R(RTT)+M
或T=2RTT+L/R+(K-1)[M/R+RTT-nM/R] 当nM<R(RTT)+M
其中,K=[L/nM],符号[x]表示若x不是整数,则把x的整数部分加1。(提示:求证的第一个等式发生在发送窗口较大的情况,可以连续把文件发送完。求收到的第二个等式发生在发送窗口较小的情况,发送几个报文段后就必须停顿下来,等收到确认后再继续发送。建议先画出双方交互的时间图,然后再进行推导)。
证明:1.如果发送方的发送窗口大小大于或等于所要发送的报文的大小,无需考虑发送完窗口内的所有数据后没收到第一个数据的确认报文而产生的等待时间。
nM(窗口大小)> R(RTT)(传输数据的最小长度)+M(一个TCP报文段的长度)
所以:总时间T=传播时延2RTT(3次握手+客户端一次性发送所有数据)+发送时延L/R
2.发送窗口小于报文大小。
总时间T=传播时延2RTT(3次握手+客户端一次性发送所有数据)+发送时延L/R+发送方等待的时间 由滑动窗口的机制可知在发送方发完窗口内所有数据后由于未收到第一个数据的确认所以陷入等待,例如编号:1,2,3,4,5,6,7...窗口大小为3,则1,2,3发送完毕后进入等待至收到1的确认。由题意得收到1的确认紧接着就是2,3的确认相当于收到1的确认后窗口紧接着就后移3然后重复以上。从把1放到链路到收到1上到收到1的确认总时间M/R+RTT,发送时间是nM/R,发送方等待时间 t =M/R+RTT-nM/R。(这个前提是窗口后面还有大于一个窗口的数据,因为要满足发送方的发送时间是nM/R)
K=[L/nM],得到共有K个窗口,停顿的次数为K-1窗口的等待时间是(K-1)[M/R+RTT-nM/R],依题意最后一次发送完毕便结束(这个时间在L/R中)。
所以,当nM(窗口大小)< R(RTT)(传输数据的最小长度)+M(一个TCP报文段的长度)
T=2RTT+L/R+(K-1)[M/R+RTT-nM/R]
仅供参考,欢迎指正!