Ich habe erfahren, dass eine TCP-Verbindung durch das Tupel identifiziert wird (Quell-IP, Quell-Port, Ziel-IP, Ziel-Port). Theoretisch sollte es daher möglich sein, dass ein Client von Host1: Port1 eine Verbindung zu Server1: Port1 herstellt und gleichzeitig ein anderer Client (der auf Host1 ausgeführt wird) von Host1: Port1 zu Server2: Port1.
Ich habe ein bisschen in Java getestet und bisher scheint es möglich.
Ich habe jedoch mehrmals gelesen, dass der Quellport für die Hostadresse eindeutig sein muss, was im Grunde bedeuten würde, dass es eine feste Grenze von höchstens 65536 gleichzeitigen ausgehenden TCP-Verbindungen gibt. Ist das wahr?
Update: Hier ist mein Java-Code. Dies scheint zu funktionieren, und netstat -t zeigt deutlich zwei aktive ausgehende Verbindungen von Port 9990 (eine zu 9997, eine zu 9998). Zumindest unter einem modernen Linux scheint es möglich zu sein?
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);
Und die netstat-t-Ausgabe (abgeschnitten):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED