Ho imparato che una tupla identifica una connessione TCP (IP di origine, porta di origine, IP di destinazione, porta di destinazione). Teoricamente, dovrebbe quindi essere possibile avere un client da host1: port1 connettersi a server1: port1 e allo stesso tempo un altro client (in esecuzione su host1) da host1: port1 a server2: port1.
Ho provato un po 'in Java, e finora sembra possibile.
Tuttavia, ho letto più volte che la porta di origine deve essere univoca per l'indirizzo host, il che significherebbe sostanzialmente che esiste un limite rigido al massimo di 65536 connessioni TCP in uscita simultanee. È vero?
Aggiornamento: ecco il mio codice Java. Questo sembra funzionare e netstat -t mostra chiaramente due connessioni attive in uscita dalla porta 9990 (una a 9997, una a 9998). Almeno su un moderno Linux, sembra possibile?
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);
E l'output di netstat -t (troncato):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED