TCP bağlantısının tuple (kaynak IP, kaynak port, hedef ip, hedef port) tarafından tanımlandığını öğrendim. Teorik olarak, host1: port1'den bir istemcinin server1: port1'e bağlanması ve aynı zamanda host1: port1'den server2: port1'e başka bir istemcinin (host1 üzerinde çalışıyor) olması mümkün olmalıdır.
Java'da biraz test ettim ve şimdiye kadar mümkün görünüyor.
Ancak, kaynak bağlantı noktasının ana bilgisayar adresi için benzersiz olması gerektiğini defalarca okudum, bu da temelde en fazla 65536 eşzamanlı giden TCP bağlantısının zor bir sınırı olduğu anlamına gelir. Bu doğru mu?
Güncelleme: İşte Java kodum. Bu işe yarıyor gibi görünüyor ve netstat -t , 9990 numaralı bağlantı noktasından (bir ila 9997, bir ila 9998) iki etkin, giden bağlantıyı açıkça gösteriyor . En azından modern bir Linux'ta mümkün görünüyor mu?
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);
Ve netstat -t çıktısı (kesilmiş):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED