Механизм выбора портов источника в TCP-соединениях работает следующим образом:
При установлении соединения одна из сторон является инициатором. 1 Она посылает запрос к протоколу TCP на открытие порта для передачи (active open). 1После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение. 1Протокол TCP на приёмной стороне открывает порт для приёма данных (passive open) и возвращает квитанцию, подтверждающую приём запроса. 1Для того чтобы передача могла вестись в обе стороны, протокол на приёмной стороне также открывает порт для передачи (active port) и также передаёт запрос к противоположной стороне. 1Сторона-инициатор открывает порт для приёма и возвращает квитанцию, соединение считается установленным. 1 Далее происходит обмен данными в рамках данного соединения. 1
В заголовке сегмента TCP есть поля «порт источника» и «порт назначения». 2 Порт источника идентифицирует приложение клиента, с которого отправлены пакеты. 2 Ответные данные передаются клиенту на основании этого номера. 2 Порт назначения идентифицирует порт, на который отправлен пакет. 2
Порт источника и порт назначения не обязаны быть одинаковыми: например, если делается запрос к 80-му порту сервера, то этот запрос может прийти, например, с порта 34054. 4