RFC 959
RFC 959 — это документ, опубликованный в рамках серии запросов на комментарии (Request for Comments, RFC) и описывающий протокол передачи файлов (File Transfer Protocol, FTP). RFC 959 определяет стандартный сетевой протокол прикладного уровня, предназначенный для передачи файлов между клиентом и сервером в компьютерной сети, и является основой для реализации FTP.
История
Разработка протокола передачи файлов началась в 1971 году, когда был опубликован первый RFC, описывающий FTP (RFC 114). В последующие годы протокол неоднократно дорабатывался и уточнялся. Ключевым этапом стала публикация RFC 765 в 1980 году, который стал предшественником RFC 959.
RFC 959 был опубликован в октябре 1985 года под названием «File Transfer Protocol». Авторами документа стали Джон Постел и Джойс Рейнольдс. Этот RFC стал основным стандартом для FTP, заменив RFC 765. Впоследствии RFC 959 был дополнен рядом других документов (RFC 2228, RFC 2428, RFC 2640 и другими), которые расширили его функциональность, добавив поддержку безопасности, IPv6 и интернационализированных доменных имён.
Основные положения и архитектура
RFC 959 описывает архитектуру «клиент-сервер», где FTP-клиент инициирует соединение с FTP-сервером для передачи данных. Протокол использует два отдельных TCP-соединения: управляющее (control connection) и соединение для передачи данных (data connection).
Управляющее соединение
Управляющее соединение устанавливается между клиентом и сервером на порт 21 сервера. Оно используется для передачи команд и ответов, управляющих процессом передачи файлов. Это соединение остаётся открытым на протяжении всего сеанса работы.
Соединение для передачи данных
Соединение для передачи данных используется непосредственно для пересылки файлов и списков каталогов. Оно может быть установлено двумя способами:
- Активный режим (Active mode): Клиент сообщает серверу свой IP-адрес и порт для приёма данных, после чего сервер инициирует соединение с клиентом на указанный порт.
- Пассивный режим (Passive mode): Сервер сообщает клиенту свой IP-адрес и порт для приёма данных, после чего клиент инициирует соединение с сервером на указанный порт. Пассивный режим часто используется для обхода проблем с межсетевыми экранами (firewalls).
Команды и ответы
RFC 959 определяет набор текстовых команд, которые клиент отправляет серверу, и трёхзначные числовые коды ответов, которые сервер возвращает клиенту.
Примеры команд:
USER— указание имени пользователя.PASS— указание пароля.LIST— запрос списка файлов в текущем каталоге.RETR— запрос на получение (загрузку) файла.STOR— запрос на отправку (загрузку) файла на сервер.QUIT— завершение сеанса.
Примеры кодов ответов:
- 220 — Сервис готов для нового пользователя.
- 230 — Пользователь успешно аутентифицирован.
- 331 — Имя пользователя принято, требуется пароль.
- 550 — Запрошенное действие не выполнено, файл недоступен.
Модель представления данных
RFC 959 определяет несколько типов представления данных, которые могут использоваться при передаче:
- Тип ASCII: Данные передаются как текст в кодировке ASCII (или, в более поздних расширениях, UTF-8).
- Тип EBCDIC: Используется для передачи данных в кодировке EBCDIC, распространённой в мейнфреймах IBM.
- Тип IMAGE (двоичный): Данные передаются как последовательность байтов без какой-либо интерпретации. Этот тип используется для передачи исполняемых файлов, изображений и других нетекстовых данных.
- Тип LOCAL: Данные передаются с указанием размера логического байта.
Также протокол определяет структуры файлов (file structure) и режимы передачи (transfer modes): потоковый (stream), блочный (block) и сжатый (compressed).
Применение
RFC 959 и его реализация в виде FTP широко использовались для:
- Обмена файлами: Загрузка и выгрузка файлов на веб-серверы, FTP-серверы для хранения данных.
- Администрирования серверов: Управление файлами на удалённых серверах.
- Распространения программного обеспечения: Предоставление доступа к дистрибутивам программ и операционных систем.
Несмотря на появление более современных и безопасных протоколов (SFTP, FTPS, SCP), FTP на основе RFC 959 остаётся распространённым в устаревших системах и для решения задач, не требующих высокой степени защиты.
Критика и ограничения
Основным недостатком протокола, описанного в RFC 959, является отсутствие встроенных механизмов шифрования. Все данные, включая имя пользователя и пароль, передаются в открытом виде, что делает их уязвимыми для перехвата. Для решения этой проблемы были разработаны расширения, такие как FTPS (FTP over SSL/TLS), описанный в RFC 2228, и SFTP (SSH File Transfer Protocol), который не является расширением FTP, а отдельным протоколом.
Другие ограничения включают сложность работы с межсетевыми экранами в активном режиме и неэффективность при передаче большого количества мелких файлов.
Интересные факты
- RFC 959 является одним из наиболее часто цитируемых и реализуемых стандартов Интернета.
- Протокол FTP, описанный в RFC 959, до сих пор поддерживается большинством операционных систем и браузеров (хотя поддержка в браузерах часто ограничена).
- В документе RFC 959 впервые были формально описаны такие понятия, как «управляющее соединение» и «соединение данных».
Источники
- Postel, J., Reynolds, J. (1985). File Transfer Protocol. RFC 959.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →