Почему протокол FTP был разработан для использования более одного порта?
Вопрос в заголовке. Я удивляюсь, что это потому, что я пишу tcp-сервис и хотел бы изучить некоторые из причин, которые могут пролить свет на мою работу.
4 ответа
Я ожидаю, что использование другого порта упрощает обработку отдельного ожидаемого соединения для передачи данных, которое будет в формате, отличном от управляющего соединения. Я полагаю, что это позволило бы получателю просто начать обработку данных без необходимости проверять, было ли это инициирование соединения, как это необходимо сделать, если он использует порт 21.
Это позволило бы последнему примеру пули принтера с переводом строки начать получать текст для печати. Однако я не уверен, как это фактически использовалось тогда (программа на терминале перенаправила бы порт 20 на их принтер перевода строки, потому что мог быть демон FTP, уже слушающий 21?)
Что касается того, почему другое соединение, есть три основных причины:
- Разрешить наиболее эффективный режим / размер байта, который будет использоваться для передачи ( http://tools.ietf.org/html/rfc310)
Эффективность передачи является важным фактором, влияющим на полезность FTP. Передача файлов может быть очень дорогой (с точки зрения времени процессора) и медленной (в режиме реального времени), если используется неправильная стратегия передачи (например, неподходящий размер байта). Следует сделать все возможное для оптимизации передачи данных. Хорошая стратегия может состоять в том, чтобы разрешить передачу файлов по отдельному соединению или закрыть и снова открыть соединения (используя, возможно, другой размер байта).
- Упрощение обычной обработки соединений ( http://tools.ietf.org/html/rfc114)
[4] Мы рассмотрели возможность использования двух дуплексных каналов, один для контроля
информация, другая для данных. Использование отдельной контрольной ссылки
между взаимодействующими процессами упростит прерывания, ошибки
восстановление и синхронизация.
- Возможность отправки вывода на другое устройство ( http://tools.ietf.org/html/rfc310)
Было бы желательно изменить FTP, чтобы разрешить отправку данных в указанный сокет в указанном режиме и типе. В этом случае пользователям TIP будет удобно получать список своих файлов на высокоскоростном линейном принтере, вводить свои файлы из устройства чтения карт и сохранять резервные копии на картах или магнитных лентах.
Чрезмерная инженерия может быть главной причиной.
Одно (не часто используемое) преимущество разделенных соединений управления / передачи данных заключается в том, что клиент может начать передачу между двумя серверами без передачи данных через клиент.
Сверхинжиниринг не тот случай. Он был разработан таким образом, что допускаются разные режимы работы. Активный FTP в настоящее время используется редко, потому что в этом режиме сервер подключается обратно к клиенту. Но тогда - в 80-х - это работало довольно хорошо. В настоящее время пассивный FTP очень полезен за брандмауэрами, в этом режиме клиент подключается к портам, открытым сервером; клиенты обычно больше недоступны напрямую, потому что перед ними установлен брандмауэр /NAT/ устройство. So this mode also makes sense.
The wikipedia article has nice, detailed info: http://en.wikipedia.org/wiki/FTP
FTP использует один порт для передачи данных (20), а другой - для отправки команд (21), GET, DIR, PUT и т. Д.
Более подробное объяснение можно найти здесь: http://slacksite.com/other/ftp.html
НТН!