我的(linux)服务器有两个公共it,我希望与一个相同或不同的服务器建立一些并行连接(我的服务器在这里充当客户机程序;它只是运行一个与其他服务器通信以获取某些数据的C++程序)。
假设我想建立100个并行连接,从SO的角度来看,在性能或稳定性上,从同一个IP上建立100个连接,或者从第一个IP上建立50个连接,以及从第二个IP中再建立50个连接,在性能或稳定性上有什么区别吗?
换句话说,如果我在不同的可用(本地)IP之间分配连接,会有什么不同(这更安全)吗?
发布于 2018-01-04 02:59:52
传出TCP连接也有与它们一起分配的端口号。这些是16位数,在一个时间点上产生65.535个可能的连接(端口0有一个特殊的含义)。在拆除连接后,TCP协议要求连接保持在一个特殊的状态时间-等待(更完整的描述有限状态机,请参见TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm )。这通常是预先配置60秒左右。有了一些额外的技巧,源端口重发源停留的时间可以大大降低。但是,这两个参数实际上限制了一次连接的数量。所有这些限制都适用于一个IP地址。如果您有n次IP地址,则您的TCP/IP堆栈能够维护n次多个连接。
小心客户端和服务器之间潜在的NAT网关,如果您运行了大量并行连接--这些路由器的NAT表可能能够或可能无法处理那么多的连接。
一般来说,我不确定您的总体架构是否适合您的用例。您的服务器不允许只允许有限数量的连接可能是有原因的。围绕这些成形机制编码可能只会导致野兔和乌龟的比赛。
https://stackoverflow.com/questions/48086931
复制相似问题