2

Допустим, у меня есть "серверная" программа, прослушивающая адрес 1.2.3.4:69 (т.е. удаленный порт 69)

Когда я подключаюсь к нему из "клиентской" программы, обычно я указываю IP-адрес + порт целевой или серверной системы;

Но какой порт будет использовать клиент? И как сервер узнает, к какому порту подключаться клиенту?

Я понимаю, что этот вопрос очень общий, но я просто хочу получить общее представление о том, как все работает.

Затем, расширив это до определенного протокола, скажем, FTP (типичный порт 21), могу ли я изменить его так, чтобы сервер использовал порт 69, а клиент использовал порт 100?

И точно так же, для удаленного рабочего стола в WinXP (типичный порт 3389), я знаю, как изменить порт сервера на что-то отличное от 3389, но как можно изменить, какой порт использует клиент (если это вообще возможно)?

1 ответ1

3

Когда я подключаюсь к нему из "клиентской" программы, обычно я указываю IP-адрес + порт целевой или серверной системы;

Да исправить.

Но какой порт будет использовать клиент?

Клиент обычно использует случайный порт. Точнее: для работы TCP единственное требование - уникальность комбинации адреса назначения, порта назначения, адреса источника и порта источника, поскольку она используется для отслеживания соединений TCP. Таким образом, в принципе, ОС может просто увеличивать номер порта источника для каждого нового соединения. На самом деле, многие ОС раньше делали это, но это облегчало определенные виды атак, потому что злоумышленник мог предсказать следующий номер порта. Таким образом, большинство современных ОС сейчас используют произвольные исходные порты.

И как сервер узнает, к какому порту подключаться клиенту?

Пакет TCP содержит как порт назначения, так и порт источника, поэтому каждая сторона знает оба номера портов. См., Например, диаграмму для данных внутри пакета TCP на http://en.wikipedia.org/wiki/Transmission_Control_Protocol .

Затем, расширив это до определенного протокола, скажем Ftp (типичный порт 21), могу ли я изменить его так, чтобы сервер использовал порт 69, а клиент использовал порт 100?

Обычно вы можете настроить сервер на использование любого порта по вашему выбору (хотя это зависит от конкретного серверного приложения). Таким образом, вы можете настроить FTP-сервер для использования порта 69. Клиентский порт не может быть настроен, насколько я знаю. То же самое касается любого другого протокола, такого как RDP.

В любом случае, зачем вам менять порт клиента?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .