《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》 —1.6 时间测量程序
1.6 时间测量程序
我们可以分别测量三种客户-服务器事务的时间,并比较其测量结果。我们要对客户程序做如下改动:
在图1-1所示的UDP上的客户程序中,我们在即将调用sendto函数前和recvfrom函数刚刚返回后分别读取当前系统时间。这两个时间的差值即为客户端测得的事务时间。
在图1-5所示的TCP上的客户程序中,我们在即将调用connect函数前和read_stream函数刚刚返回后分别读取当前系统时间。
在图1-10所示的T/TCP上的客户程序中,我们取当前的系统时间为即将调用sendto函数前和read_stream函数刚刚返回后。
图1-14给出了以14种不同长度的请求和应答分别测得的结果。客户和服务器分别为图1-13中的bsdi和laptop。附录A中给出了这些测量的细节,并分析了影响结果的因素。
T/TCP上的事务时间总是比同样条件下的UDP上的事务时间要长几毫秒(这个时间差是由软件造成的,会随着计算机速度的提高而缩短)。T/TCP协议栈比UDP协议栈所做的操作要多(图A-8),T/TCP上的客户和服务器要分别调用两次read函数,而UDP上的客户和服务器则只需分别调用一次recvfrom函数。
TCP上的事务时间总是比相同条件下T/TCP上的事务时间要长大约20 ms。造成这一结果的部分原因是:TCP建立连接时的三次握手。两个SYN报文段的长度是44字节(20字节的IP首部、20字节的标准TCP首部和4字节的TCP MSS选项)。这相当于用户数据为16字节的Ping;从图A-3可知,其网络往返时间RTT大约为10 ms。另外10 ms的差值可能是因为TCP协议需要处理额外6个TCP报文段造成的。
因此我们可以得出结论:T/TCP上的事务时间接近UDP上的事务时间,但比后者略大,比TCP上的事务时间短至少相当于一个44字节报文段的网络往返时间。
就客户端测量的事务时间而言,用T/TCP取代TCP带来的好处依赖于RTT和SPT之间的关系。比如,在一个局域网上的RTT为3 ms(如图A-2),服务器的平均处理时间为500 ms,那么TCP上的事务时间大约为506 ms(2×RTT+SPT),而T/TCP的事务时间则大约为503 ms。但如果是一个网络往返时间RTT为200 ms的广域网(见14.4节),服务器处理时间SPT的平均值为100 ms,那么TCP上和T/TCP上的事务时间就分别为大约500 ms和300 ms。我们已经看到,使用T/TCP所需传送的网络分组数少(从图1-8和图1-12的比较中看分别是3个和9个),因此,不管客户端所测得的事务时间减少了多少,使用T/TCP总是能减少网络分组数。减少网络分组数就可以减少分组丢失的概率,而在Internet中,分组丢失对整个网络的稳定性有很大影响。
图1-14 UDP、T/TCP和TCP上客户-服务器事务的时序图
在A.3节里,我们介绍了传播时延和带宽的差异。这两者都对RTT有影响;但是当网络变快以后,传播时延的影响就变大了。此外,传播时延是我们几乎无法控制的,因为它的大小取决于客户和服务器之间的信号传播距离及光在介质中的传播速度。于是,在网络速率越来越快的条件下,省下一个RTT的时间就显得尤为可贵,使用T/TCP的好处相对也就越发明显。
现在可以公开获得并支持T/TCP的用于测量网络性能的工具:
http://www.cup.hp.com/netperf/netperfpage.html
- 点赞
- 收藏
- 关注作者
评论(0)