多个并行tcp连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个并行tcp连接相关的知识,希望对你有一定的参考价值。

我的(linux)服务器有两个公共IP,我想做一些并行连接,到相同或不同的服务器(我的服务器在这里充当客户端程序;它只运行一个C ++程序,与其他服务器通信以获取一些数据) 。

让我们假设我想要建立100个并行连接,从SO的角度来看,在从同一个IP建立100个连接,从第一个IP建立50个连接到从第一个IP连接到另外50个连接之间,性能或稳定性是否有任何差异第二个?

换句话说,如果我分配不同的可用(本地)IP之间的连接,是否有任何差异(是否更安全)?

可能相关:https://stackoverflow.com/a/3923785/1794803

答案

传出TCP连接也有分配的端口号。这些是16位数,在一个单一时间点产生65.535个可能的连接(端口0具有特殊含义)。在拆除连接后,TCP协议要求连接保持特殊状态TIME-WAIT(有关有限状态机的更完整描述,请参阅http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm)。这通常预先配置60秒左右。通过一些额外的技巧,可以显着降低源端口资源在TIME-WAIT中停留的时间。但是,这两个参数实际上一次限制了连接数。所有这些限制适用于单个IP地址。如果您有n次IP地址,则TCP / IP堆栈能够维持n次连接。

请注意客户端和服务器之间的潜在NAT网关,如果运行大量并行连接,这些路由器的NAT表可能会或可能无法处理这么多连接。

一般来说,我不确定您的一般架构是否适合您的使用案例。您的服务器可能不会仅允许有限数量的连接。围绕这些形成机制的编码可能只会导致野兔和乌龟种族。

以上是关于多个并行tcp连接的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议优化措施

并行 TCP 连接的数据传输速度较慢

HTTP 2.0 - 1 个 TCP/IP 连接与 6 个并行

网络基础之 Http

Qt 多线程 QThreads 保持 TCP 连接并被重用

面试题:每发送一个http请求就要建立一个tcp连接吗(非持久连接/持久连接)