Как сетевые порты работают? Я могу настроить порты то использование клиента и сервера?

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

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

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

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

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

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

2
задан 20.03.2011, 17:35

1 ответ

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

Да, корректный.

Но что использовал бы порт клиент?

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

И как сервер знает который порт соединиться назад с клиентом на?

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

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

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

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

3
ответ дан 08.12.2019, 07:26

Теги

Похожие вопросы