理論上,最大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