Назад | Перейти на главную страницу

Сколько портов каналов данных мне нужно для FTPS-сервера, работающего за NAT?

Как указано в заголовке, в настоящее время у меня есть FTP-сервер, доступный через FTP или FTPS (явно), работающий через NAT за маршрутизатором. Сервер работает под управлением Windows Server 2012 R2 с IIS 8.0 (я считаю, что это версия, которая поставляется с 2012r2).

Сервер будет использовать только горстка людей, менее 10 человек.

В настоящее время сервер работает должным образом, с портами 21 и 30850-30859 (канал данных), перенаправленными с маршрутизатора. У меня вопрос, сколько портов каналов данных необходимо для FTPS? Один за одновременную передачу файлов? Или одновременный пользователь? Или...?

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

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

Насколько сильной должна быть уникальность, вероятно, зависит от реализации сервера. Я считаю, что большинству серверов требуется, чтобы порт был уникальным только в тот короткий момент после того, как клиент запросит передачу и до того, как он подключится к порту данных. Таким образом, если у вас есть 10 портов, и 11 клиентов запрашивают передачу в один и тот же момент, 11-й, скорее всего, будет отклонен.

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

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

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