Khi bạn thiết lập kết nối TCP, 4-tuple (source-ip, source-port, dest-ip, dest-port) phải là duy nhất - điều này nhằm đảm bảo các gói được phân phối đến đúng nơi.
Có một hạn chế nữa ở phía máy chủ là chỉ một chương trình máy chủ có thể liên kết với số cổng đến (giả sử một địa chỉ IP; máy chủ nhiều NIC có các quyền hạn khác nhưng chúng ta không cần thảo luận ở đây).
Vì vậy, ở cuối máy chủ, bạn:
- tạo một ổ cắm.
- liên kết ổ cắm đó với một cổng.
- nghe trên cổng đó.
- chấp nhận các kết nối trên cổng đó. và có thể có nhiều kết nối đến (một kết nối cho mỗi khách hàng).
Ở phía khách hàng, nó thường đơn giản hơn một chút:
- tạo một ổ cắm.
- mở kết nối. Khi một máy khách mở kết nối, nó chỉ định địa chỉ ip và cổng của máy chủ . Nó có thể chỉ định cổng nguồn của nó nhưng thường sử dụng số không, dẫn đến hệ thống tự động gán cho nó một cổng miễn phí.
Không có yêu cầu rằng IP / cổng đích phải là duy nhất vì điều đó sẽ dẫn đến chỉ một người có thể sử dụng Google tại một thời điểm và điều đó sẽ phá hủy khá nhiều mô hình kinh doanh của họ.
Điều này có nghĩa là bạn thậm chí có thể làm những điều kỳ diệu như FTP nhiều phiên vì bạn thiết lập nhiều phiên trong đó điểm khác biệt duy nhất là cổng nguồn của bạn, cho phép bạn tải xuống các phần mềm song song. Torrent có một chút khác biệt ở chỗ đích của mỗi phiên thường khác nhau.
Và, sau tất cả những điều đó (xin lỗi), câu trả lời cho câu hỏi cụ thể của bạn là bạn không cần chỉ định một cổng miễn phí. Nếu bạn đang kết nối với một máy chủ bằng một cuộc gọi không chỉ định cổng nguồn của bạn, thì gần như chắc chắn nó sẽ sử dụng số không dưới vỏ bọc và hệ thống sẽ cung cấp cho bạn một cổng không sử dụng.