您的位置:首页 > 理论基础 > 计算机网络

使用TCP同时进行上传和下载的吞吐量为什么比单独进行时要低

2017-08-21 15:01 309 查看

TCP的发包机制

TCP的发包一般是由收到TCP ACK触发的,没有收到TCP ACK时TCP发送端一般是不会发包的(超时重传的情况除外)。

下面示意图就是在描述:没有收到接收端发来的TCP ACK包时,发送端停止发送数据包。

左边是接收端,右边是发送端,-号表示发送端待发的数据包,=号是TCP ACK。

    | ---- ----

    |

假设有8个包要发送

---- | ---- 

    =|

后面4个等待ack再继续发送

同时上传和下载引发的问题

在同时进行上传和下载时,如果不提高TCP ACK的优先权,下载数据的TCP ACK会排在上传数据的后面而被延迟送出,从而造成下载吞吐量低于单独下载时的吞吐量。如下,-为下载数据,*为下上传据,=为ack,很可能ack会一直排在上传数据的后面,导致下载一致等待ack而时不时阻塞

          | ---- ----
=*******|

怎么解决呢?

有一个软件cFosSpeed,可以提高TCP ACK的发送优先权,启动这个软件后,可以很明显的发现:ACK可以“插队”在上传数据之间。而且插队的位置,是在下一个要发送数据之前。也就是说,数据之间产生了“优先权”的机制,所以下载数据可以不受上传数据的影响,继续发送数据给接收端。

            | ---- ----

****=****|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: