Когда клиент подключается к серверу с использованием TCP, для потока TCP создается новый сокет. Остается ли соединение на том же порту, на котором было установлено соединение, или оно изменилось на другой порт?
Изменяется ли порт, когда TCP-соединение принимается сервером?
Ответ 1
Новый сокет представляет собой концепцию уровня приложения, потому что каждому установленному соединению нужен уникальный файловый дескриптор (также отличный от дескриптора файла прослушивания), который сопоставляется, но не совпадает с сеансом TCP. Сам сеанс идентифицируется комбинацией адреса источника и адресата и порта. Исходный (клиентский) порт обычно выбирается случайным образом, а конечный (серверный) порт является портом прослушивания. Не выделяется дополнительный порт.
Ответ 2
Сокет, связанный с новым дескриптором, возвращаемым accept
на сервере, будет использовать тот же порт на стороне сервера соединения в качестве исходного сокета (предполагая "обычные" определения, когда клиент инициирует соединение). Новый сокет будет иметь другой номер порта клиента (удаленный порт с точки зрения сервера).