В пассивном режиме FTP я прочитал, что сервер отправляет клиенту случайный номер порта, где он может установить канал данных.
Затем клиент устанавливает канал данных от своего случайного номера порта до этого номера порта, отправленного сервером.
Мой вопрос: почему сервер отправляет клиенту случайный номер порта? Почему клиент не может напрямую установить канал данных для порта № 20 на стороне сервера?
Ответы:
Вот так протокол FTP был разработан для работы в пассивном режиме. Вероятно, это была не очень хорошая идея, так как я не думаю, что эта модель когда-либо повторялась снова в каком-либо другом протоколе (и это даже больше относится к активному режиму FTP).
На порту подключения к данным нет протокола. Все, что знает сервер - единственное, что несет какую-либо информацию в этом соединении - это номер порта, к которому вы подключаетесь.
Если бы вы каждый раз подключались к одному и тому же порту, сервер не смог бы определить, к какому файлу вы подключаетесь. Номер порта служит связующим звеном между запросом на передачу для управляющего соединения и соединением для передачи данных - номер порта содержится в ответе на
PASV
команду.Если два клиента будут запрашивать передачу одновременно, когда сервер принимает подключение к одному порту, сервер не сможет определить, какой файл передать. Конечно, сервер может использовать IP-адрес клиента для принятия решения (на самом деле многие FTP-серверы проверяют, что IP-адрес клиента совпадает с IP-адресом, используемым в контрольном соединении, для безопасности).
Но это не будет работать для:
Частично скопировано из моего ответа на вопрос: почему в пассивном режиме FTP требуется диапазон портов, а не только один порт? Ошибка сервера.
источник
Обычно сервер отправляет не случайный порт, а свободный из определенного (при установке) диапазона / пула - для клиента это выглядит случайным. Этот порт должен быть перенаправлен на брандмауэр, который требует определения диапазона.
К сожалению, FTP древний. Я предполагаю, что древние серверы не могли различить сеансы данных нескольких клиентов, кроме как по порту. Как правило, лучше перейти к более современным протоколам, где все аккуратно упаковано в одном сеансе сокетов.
источник