My(linux)服务器有两个公共IP,我想建立一些并行连接到相同或不同的服务器(我的服务器在这里充当客户端程序;它只运行一个C ++程序,与其他服务器通信以获取一些数据)。
假设我想要建立100个并行连接,从SO的角度来看,在从同一IP建立100个连接或从第一个连接50个连接之间,性能或稳定性是否有任何差异知识产权,还有来自第二个的另外50个问题?
换句话说,如果我在不同的可用(本地)IP之间分配连接,是否有任何差异(更安全)?
答案 0 :(得分:2)
传出的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次连接n次。
请注意客户端与服务器之间的潜在NAT网关,如果运行大量并行连接,这些路由器的NAT表可能会或可能无法处理这么多连接。
一般情况下,我不确定您的一般架构是否适合您的使用案例。您的服务器可能不会仅允许有限数量的连接。围绕这些形成机制的编码可能只会导致野兔和乌龟种族。