Почему порт 20 не используется для канала данных в пассивном режиме FTP?

В активном режиме FTP-сервер использует два порта: 21 для командных сигналов и 20 для данных. В пассивном режиме FTP после того, как клиент подключается к серверу через порт 21, сервер, на котором сервер предоставляет клиенту случайный временный порт для подключения, для подключения к данным, которое он начинает прослушивать. Почему сервер не предоставляет порт 20 (как обычно для активного режима) для подключений к данным?

PS: Я просмотрел Почему для пассивного режима FTP требуется диапазон портов, а не только один порт? , но это не касается моего конкретного вопроса.

1
задан 13 April 2017 в 15:14
3 ответа

В активном режиме FTP сервер не «предоставляет» порт 20 клиенту. Он инициирует соединение от порта 20 к клиенту. Это входящее (с точки зрения брандмауэра клиента) соединение будет заблокировано большинством современных брандмауэров. Кроме того, довольно сложно заставить активный режим работать через NAT . Пассивный режим лишен всех этих недостатков, поскольку в пассивном режиме FTP сервер не инициирует никаких соединений.

0
ответ дан 4 December 2019 в 06:03

Я не знаю, почему первоначальные авторы спецификации FTP решили именно так. Но это решение имеет преимущества по сравнению с тем, как сегодня работает Интернет.

Если бы вы подключались к одному и тому же порту (20) каждый раз, сервер не смог бы определить, для какого файла вы подключаетесь. Номер порта служит связующим звеном между запросом передачи в управляющем соединении и соединением для передачи данных. Обратите внимание, что в соединении для передачи данных нет «протокола», который мог бы использовать клиент, чтобы сообщить, что он запрашивает. Номер порта - единственная уникальная информация, которую имеет сервер.

Если два клиента должны были запросить передачу одновременно, и сервер принимал соединения для передачи данных через один порт, сервер не смог бы сказать, что файл для передачи. Конечно, сервер может использовать IP-адрес клиента для принятия решения (на самом деле многие FTP-серверы действительно подтверждают, что IP-адрес клиента соответствует IP-адресу, используемому в управляющем соединении для безопасности).

Но это не сработает для:

  • Несколько соединения с одной и той же машины (большинство FTP-клиентов поддерживают параллельные передачи / очереди).
  • Соединение с разных машин в одной (корпоративной) сети, так как они имеют одинаковый внешний IP.

Ни один из вышеперечисленных, вероятно, не подходил Причина, по которой в спецификации FTP был введен диапазон портов, поскольку в то время (1980 г.) корпоративных сетей не существовало, и множественные соединения с одной машины, вероятно, также были маловероятны. С другой стороны, в таких случаях диапазон портов может значительно упростить реализацию сервера.

0
ответ дан 4 December 2019 в 06:03

Поскольку в FTP отсутствует концепция сеанса , использование одного порта, скажем 20, внесет неоднозначность при подключении нескольких клиентов, поскольку сервер не может сопоставить клиента с файлом. Чтобы преодолеть это ограничение, для каждой передачи есть выделенный порт. IOW, каждый порт - это уникальный идентификатор передачи.

0
ответ дан 10 April 2020 в 09:05

Теги

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