J'ai appris qu'une connexion TCP est identifiée par le tuple (IP source, port source, ip de destination, port de destination). Théoriquement, il devrait donc être possible d'avoir un client de l'hôte1: port1 connecté au serveur1: port1 et en même temps un autre client (fonctionnant sur l'hôte1) de l'hôte1: port1 au serveur2: port1.
J'ai testé un peu en Java, et jusqu'à présent cela semble possible.
Cependant, j'ai lu plusieurs fois que le port source doit être unique pour l'adresse de l'hôte, ce qui signifierait essentiellement qu'il existe une limite stricte d'au plus 65536 connexions TCP sortantes simultanées. Est-ce vrai?
Mise à jour: voici mon code Java. Cela semble fonctionner, et netstat -t montre clairement deux connexions sortantes actives depuis le port 9990 (une vers 9997, une vers 9998). Au moins sur un Linux moderne, cela semble possible?
Socket s1 = new Socket();
s1.setReuseAddress(true);
SocketAddress saremote = new InetSocketAddress("localhost",9999);
SocketAddress salocal = new InetSocketAddress("localhost",9990);
s1.bind(salocal);
s1.connect(saremote);
Socket s2 = new Socket();
s2.setReuseAddress(true);
SocketAddress saremote2 = new InetSocketAddress("localhost",9998);
SocketAddress salocal2 = new InetSocketAddress("localhost",9990);
s2.bind(salocal2);
s2.connect(saremote2);
Et la sortie netstat -t (tronquée):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED