当前位置:  开发笔记 > 编程语言 > 正文

TCP是否可以通过多个连接实现更高的传输速率?

如何解决《TCP是否可以通过多个连接实现更高的传输速率?》经验,为你挑选了2个好方法。

是否有可能在高延迟环境(具有较大地理距离的公共互联网,假设每个连接没有流量整形或类似的东西)中实现更好的数据传输速率和多个并行TCP连接,或者TCP可以通过单个连接利用整个带宽?


如果接收器没有报告0窗口大小的缓冲区拥塞,TCP是否能够尽可能快地发送数据?因此,如果RTT例如60秒,它根本不影响速率?是否有一些最大窗口大小或其他限制速率?



1> Murali Suria..:

多个并发连接可能给您的一个优点(受到鸽子和Brian提到的相同警告),您将能够更好地克服TCP接收窗口太小的问题.

这涉及的原理是带宽延迟产品.(有一个更详细的解释在这里).

简要总结:在高延迟,高带宽环境中,TCP等可靠通信通常受限于任何给定时间的飞行数据量.多个连接是解决此问题的一种方法,因为带宽延迟产品单独应用于每个连接.

更详细地说,请考虑以下事项:端到端带宽为每秒10 ^ 8位(10兆位/秒),往返延迟为100毫秒(0.1秒).因此,在确认第一位数据已经返回给发送方之前,最多可以发送10 ^ 7位(10兆位= ~1.25兆字节)的数据.

这取决于您的操作系统的TCP堆栈,但TCP接收窗口大小的一个非常见的值是64K字节.这显然太小,无法让您充分利用端到端带宽; 一旦发送了64k字节(512kbits)的数据,您的发送过程将等待接收器的窗口更新,指示在将更多数据添加到线路上之前已消耗了一些数据.

由于每个TCP会话都有自己的发送/接收缓冲区,因此打开多个TCP会话可以解决这个问题.

当然,由于TCP窗口大小,争用等原因,在互联网上很难确定真正可用的端到端带宽.如果您能够提供一些示例数据,我们可以提供更多帮助.

您应该研究的另一个选项是在创建套接字时设置更大的接收窗口,全局使用OS设置,或者使用套接字选项在每个套接字上设置.



2> Brian Knobla..:

如果您是链接中唯一的那个,则会增加开销并降低速度.但是,当与其他人共享一个完全饱和的链接时,这是一种游戏系统并提高整体速度的方法(每个连接都会慢于单个连接,但总体速度会更快,因为你现在获得更大的百分比分配给你的"时间段"(技术术语是什么?它现在逃脱了我).

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有