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

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可以“插队”在上传数据之间。而且插队的位置,是在下一个要发送数据之前。也就是说,数据之间产生了“优先权”的机制,所以下载数据可以不受上传数据的影响,继续发送数据给接收端。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值