Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcp 为什么两台测试主机之间的往返时间不同?_Tcp_Roundtrip - Fatal编程技术网

Tcp 为什么两台测试主机之间的往返时间不同?

Tcp 为什么两台测试主机之间的往返时间不同?,tcp,roundtrip,Tcp,Roundtrip,我已经编写了一个http put客户端(使用libcurl libarary)将文件放入apache webdav服务器,并使用tcpdump在服务器端捕获数据包,然后使用tcptrace(www.tcptrace.org)分析转储文件,结果如下: 主机a是客户端,主机b是服务器端: a->b: b->a: total packets: 152120 total packets:

我已经编写了一个http put客户端(使用libcurl libarary)将文件放入apache webdav服务器,并使用tcpdump在服务器端捕获数据包,然后使用tcptrace(www.tcptrace.org)分析转储文件,结果如下: 主机a是客户端,主机b是服务器端:

 a->b:                              b->a:
     total packets:        152120           total packets:        151974      
     ack pkts sent:        152120           ack pkts sent:        151974      
     pure acks sent:          120           pure acks sent:       151854      
     sack pkts sent:            0           sack pkts sent:            0      
     dsack pkts sent:           0           dsack pkts sent:           0      
     max sack blks/ack:         0           max sack blks/ack:         0      
     unique bytes sent: 3532149672           unique bytes sent:     30420      
     actual data pkts:     152000           actual data pkts:        120      
     actual data bytes: 3532149672           actual data bytes:     30420      
     rexmt data pkts:           0           rexmt data pkts:           0      
     rexmt data bytes:          0           rexmt data bytes:          0      
     zwnd probe pkts:           0           zwnd probe pkts:           0      
     zwnd probe bytes:          0           zwnd probe bytes:          0      
     outoforder pkts:           0           outoforder pkts:           0      
     pushed data pkts:       3341           pushed data pkts:        120      
     SYN/FIN pkts sent:       0/0           SYN/FIN pkts sent:       0/0      
     req 1323 ws/ts:          N/Y           req 1323 ws/ts:          N/Y      
     urgent data pkts:          0 pkts      urgent data pkts:          0 pkts 
     urgent data bytes:         0 bytes     urgent data bytes:         0 bytes
     mss requested:             0 bytes     mss requested:             0 bytes
     max segm size:         31856 bytes     max segm size:           482 bytes
     min segm size:           216 bytes     min segm size:            25 bytes
     avg segm size:         23237 bytes     avg segm size:           253 bytes
     max win adv:             125 bytes     max win adv:            5402 bytes
     min win adv:             125 bytes     min win adv:            5402 bytes
     zero win adv:              0 times     zero win adv:              0 times
     avg win adv:             125 bytes     avg win adv:            5402 bytes
     initial window:        15928 bytes     initial window:            0 bytes
     initial window:            1 pkts      initial window:            0 pkts 
     ttl stream length:        NA           ttl stream length:        NA      
     missed data:              NA           missed data:              NA      
     truncated data:            0 bytes     truncated data:            0 bytes
     truncated packets:         0 pkts      truncated packets:         0 pkts 
     data xmit time:      151.297 secs      data xmit time:      150.696 secs 
     idletime max:        44571.3 ms        idletime max:        44571.3 ms   
     throughput:         23345867 Bps       throughput:              201 Bps  

     RTT samples:          151915           RTT samples:             120      
     RTT min:                 0.0 ms        RTT min:                 0.1 ms   
     RTT max:                 0.3 ms        RTT max:                40.1 ms   
     RTT avg:                 0.0 ms        RTT avg:                19.9 ms   
     RTT stdev:               0.0 ms        RTT stdev:              19.8 ms

     RTT from 3WHS:           0.0 ms        RTT from 3WHS:           0.0 ms   

     RTT full_sz smpls:     74427           RTT full_sz smpls:        60      
     RTT full_sz min:         0.0 ms        RTT full_sz min:        39.1 ms   
     RTT full_sz max:         0.3 ms        RTT full_sz max:        40.1 ms   
     RTT full_sz avg:         0.0 ms        RTT full_sz avg:        39.6 ms   
     RTT full_sz stdev:       0.0 ms        RTT full_sz stdev:       0.3 ms   

     post-loss acks:            0           post-loss acks:            0      
     segs cum acked:           89           segs cum acked:            0      
     duplicate acks:            0           duplicate acks:            0      
     triple dupacks:            0           triple dupacks:            0      
     max # retrans:             0           max # retrans:             0      
     min retr time:           0.0 ms        min retr time:           0.0 ms   
     max retr time:           0.0 ms        max retr time:           0.0 ms   
     avg retr time:           0.0 ms        avg retr time:           0.0 ms   
     sdv retr time:           0.0 ms        sdv retr time:           0.0 ms  

根据上述结果,客户端到服务器的RTT较小,但服务器端到客户端的RTT较大。谁能帮我解释一下吗?

首先
主机b
发送的数据很少(样本量很小)。其次,我怀疑
主机a
具有不对称的Internet连接(例如10MB/1MB)

因为

 unique bytes sent: 3532149672           unique bytes sent:     30420      
 actual data pkts:     152000           actual data pkts:        120      
 actual data bytes: 3532149672           actual data bytes:     30420 
a->b发送稳定的数据流,确保缓冲区被填满,东西被推送

b->a只发送了几个ACK等,几乎什么也不做,所以结果东西会在缓冲区中保留一段时间(几毫秒)


除此之外,RTT是往返时间。它是从应用程序排队发送数据包到接收到相应响应的时间。由于a上的主机正忙于推送数据,并且可能正在填充其自身的缓冲区,因此b的某些内容要得到确认将有少量额外的开销。

是否有任何工具可以测试并找出哪一方导致延迟?对于长时间运行,apache dav有时会阻止从socket读取数据(在apache核心模块中添加日志),但很难转储数据包进行分析。您列出的输出中没有任何内容表明长的网络延迟-40ms不是很长的时间。听起来好像是什么原因导致服务器暂停。可能正在重新生成身份验证密钥,您必须查看日志。根据您提供的有限信息,它似乎与网络无关。感谢您提供的信息,从套接字读取数据时,长延迟可能大于1秒,但每天仅发生一次。对解决类似问题有什么建议吗?我分析了一个转储,发现从客户端发送的两个数据包之间有100ms的间隔,我能断定是客户端造成了延迟吗?主机a和主机b具有相同的带宽