Saya telah belajar bahwa koneksi TCP diidentifikasi oleh tuple (sumber IP, port sumber, ip tujuan, port tujuan). Secara teoritis, dengan demikian dimungkinkan untuk memiliki klien dari host1: port1 terhubung ke server1: port1 dan pada saat yang sama klien lain (berjalan pada host1) dari host1: port1 ke server2: port1.
Saya telah menguji sedikit di Jawa, dan sejauh ini tampaknya mungkin.
Namun, saya telah membaca beberapa kali bahwa port sumber harus unik untuk alamat host, yang pada dasarnya berarti bahwa ada batas keras maksimal 65.536 koneksi TCP keluar bersamaan. Benarkah itu?
Pembaruan: Ini adalah kode Java saya. Ini sepertinya berhasil, dan netstat -t jelas menunjukkan dua koneksi keluar aktif dari port 9990 (satu ke 9997, satu ke 9998). Setidaknya pada Linux modern, sepertinya itu mungkin?
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);
Dan keluaran netstat -t (terpotong):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED