假设我正在构建自己的下载加速器。
让我们把它简化到这样一点:
如何衡量是否使用了足够的连接来满足客户端和服务器之间的路径?
getsockopt(..., TCP_INFO)中的哪些位实际上是有用的?
我能以多快的速度适应变化的网络环境?
可以在客户端系统上测量CPU和内存压力,那么网络压力如何?
发布于 2015-11-16 18:38:20
答案很简单:一个TCP连接就足以填满客户机和服务器之间的路径。
至少,在客户端和服务器之间的标准TCP/IP协议和标准网络设备中是这样的。如果路径中有一些设备正在执行某种自定义处理,即“节流”单个TCP连接,那么答案可能是不同的。但是在这种情况下,除非您确切地指定了自定义处理是什么,否则就不可能回答。正如其他人所评论的,在大多数情况下,网络流量的成形或限制可能是基于IP地址而不是基于TCP报头,因此创建额外的TCP连接不会有帮助。如果你的情况是不同的,这可能是有趣的听到-请进一步解释。
在我看来(当然,你可能不同意),关于构建一个定制的“下载加速器”的问题,真正的答案是:不要这样做。TCP工作得很好,就像它一样。除了一些特殊情况(例如SCPS-TP)之外,您不太可能通过玩弄多个连接或扰乱套接字选项来提高TCP性能。如果您确实设法提高了性能,那么您这样做可能是以降低其他用户的总体网络性能为代价。这是不明智的。
https://stackoverflow.com/questions/26970606
复制相似问题