Saat Anda mengatur koneksi TCP, 4-tuple (source-ip, source-port, dest-ip, dest-port) harus unik - ini untuk memastikan paket dikirimkan ke tempat yang tepat.
Ada batasan lebih lanjut di sisi server bahwa hanya satu program server yang dapat mengikat ke nomor port masuk (dengan asumsi satu alamat IP; server multi-NIC memiliki kekuatan lain tetapi kami tidak perlu membahasnya di sini).
Jadi, di ujung server, Anda:
- buat soket.
- ikat soket itu ke port.
- dengarkan di pelabuhan itu.
- menerima koneksi di port itu. dan mungkin ada beberapa koneksi yang masuk (satu per klien).
Di sisi klien, biasanya sedikit lebih sederhana:
- buat soket.
- buka koneksi. Ketika klien membuka koneksi, itu menentukan alamat ip dan port server . Ia dapat menentukan port sumbernya tetapi biasanya menggunakan nol yang mengakibatkan sistem menetapkannya sebagai port bebas secara otomatis.
Tidak ada persyaratan bahwa IP / port tujuan harus unik karena hanya akan menghasilkan satu orang pada satu waktu yang dapat menggunakan Google, dan itu akan menghancurkan model bisnis mereka.
Ini berarti Anda bahkan dapat melakukan hal-hal menakjubkan seperti FTP multi-sesi karena Anda mengatur beberapa sesi di mana satu-satunya perbedaan adalah port sumber Anda, memungkinkan Anda mengunduh potongan secara paralel. Torrent sedikit berbeda karena tujuan tiap sesi biasanya berbeda.
Dan, setelah semua omong kosong itu (maaf), jawaban atas pertanyaan spesifik Anda adalah Anda tidak perlu menentukan port gratis. Jika Anda terhubung ke server dengan panggilan yang tidak menentukan port sumber Anda, itu hampir pasti akan menggunakan nol di bawah selimut dan sistem akan memberi Anda yang tidak terpakai.