理论上,最大TCP速度是min {rwnd,cwnd}/RTT,其中cwnd是拥塞窗口大小,rwnd是接收窗口大小。假设cwnd足够大,那么它就是rwnd/RTT。 现在,如果最大窗口大小为65Kbytes我得到(使用这些计算从一些网站):TCP最大吞吐量和浏览器
RTT 10 ms => TCP throughput = 52428000 bps = 52Mbps
RTT 20 ms => TCP throughput = 26214000 bps = 26Mbps
RTT 50 ms => TCP throughput = 10485600 bps = 10Mbps
RTT 100 ms => TCP throughput = 5242800 bps = 5.2Mbps
RTT 150 ms => TCP throughput = 3495200 bps = 4.3Mbps
RTT 200 ms => TCP throughput = 2621400 bps = 2.5Mbps
RTT 300 ms => TCP throughput = 1747600 bps = 1.7Mbps
RTT 500 ms => TCP throughput = 1048560 bps = 1Mbps
准确度如何呢?由于我可以以5Mbps的速度从网站上下载(不是洪流,直接下载),同时拥有超过200ms的RTT,所以我高于理论最大值,为什么会发生这种情况?浏览器是否使用多个tcp连接进行下载?
此外,我想知道rwnd/RTT实际来自哪里,因为rwnd字节可以(并且肯定会)超过1个TCP段大小,这意味着您将每个RTT发送超过1个段开始,意思是1 RTT不足以发送和接收来自所有发送段的ACK,所以rwnd/RTT实际上与真实吞吐量相差甚远。
嗯,我用ping来确定RTT,你知道南美洲的200ms对世界上任何地方都是非常正常的。 你可能是对的,也许窗口大小是不同的,我说65KBytes,因为你只有16位来指示大小,所以这是顶部,但可能有新的方法,像每个更多的字节左右。 – user1777914
尝试我提到的一些链接或Netalyzr。 – cxxl
有趣的我得到了这个: – user1777914