假设我正在构建自己的下载加速器。
让我们将其简化为:
如何测量是否有足够的连接来使客户端和服务器之间的路径饱和?
来自getsockopt(..., TCP_INFO)
的哪些位实际上有用?
我可以根据不同的网络条件调整多快?
可以测量客户端系统的CPU和内存压力,网络压力如何?
答案 0 :(得分:2)
答案非常简单:一个TCP连接足以使客户端和服务器之间的路径饱和。
至少,客户端和服务器之间的标准TCP / IP协议和标准网络设备也是如此。如果路径中有一些设备正在进行某种自定义处理,那就是“限制”#34;那么单个TCP连接可能答案是不同的。但在这种情况下,除非您准确指定自定义处理是什么,否则无法回答。正如其他人所评论的那样,在大多数情况下,网络流量整形或限制可能是基于IP地址而不是基于TCP报头进行的,因此创建额外的TCP连接并不会有所帮助。如果您的情况不同,那可能会有趣 - 请进一步解释。
在我看来(只是一种意见,你当然可能不同意)关于构建自定义"下载加速器"的问题的真正答案。是:不要这样做。 TCP的工作原理非常好。除了一些特殊情况(例如SCPS-TP)之外,您不太可能通过使用多个连接或弄乱套接字选项来提高TCP性能。如果您确实设法提高性能,那么您可能会以降低其他用户的整体网络性能为代价。这是不明智的。