Открыть сервис

Протокол FTP

FTP (англ. File Transfer Protocol — протокол передачи файлов) — это стандартный сетевой протокол прикладного уровня модели OSI, предназначенный для передачи файлов между клиентом и сервером по TCP/IP-сетям. Протокол был разработан для обеспечения надёжного обмена данными, поддерживает аутентификацию, управление доступом и работу в двух режимах: активном и пассивном. FTP является одним из старейших протоколов Интернета, впервые описанным в RFC 114 в 1971 году.

История

Протокол FTP был создан в рамках ранних работ по развитию сети ARPANET, предшественницы современного Интернета. Первая спецификация (RFC 114) была опубликована 16 апреля 1971 года Абхаем Бхушаном из Массачусетского технологического института. В 1973 году вышла обновлённая версия (RFC 454), а в 1980 году — RFC 765, которая заложила основу современного протокола.

Окончательная версия FTP, используемая по сей день, была описана в 1985 году в RFC 959 (авторы — Дж. Постел и Дж. Рейнольдс). Этот документ определил основные команды, коды ответов и механизмы управления соединением. Впоследствии протокол дополнялся расширениями: RFC 2228 (1997) ввёл поддержку безопасности, RFC 2640 (1999) — интернационализацию имён файлов, а RFC 3659 (2007) — расширенные операции с файлами.

В 1990-х — 2000-х годах FTP был основным средством загрузки файлов на веб-серверы и обмена данными в корпоративных сетях. С развитием облачных технологий и протоколов с шифрованием (SFTP, FTPS, HTTPS) популярность незащищённого FTP снизилась, однако он продолжает использоваться в устаревших системах и для внутренних задач.

Архитектура и принцип работы

FTP использует модель «клиент-сервер» и устанавливает два отдельных TCP-соединения:

  • Управляющее соединение (control connection) — порт 21 (по умолчанию). Используется для передачи команд (например, LOGIN, LIST, RETR, STOR) и получения кодов ответов. Оно остаётся активным на протяжении всей сессии.
  • Соединение данных (data connection) — порт 20 (в активном режиме) или динамический порт (в пассивном). Используется для непосредственной передачи файлов и списков каталогов. Может открываться и закрываться для каждой операции.

Режимы передачи

FTP поддерживает два режима установки соединения данных:

  • Активный режим (Active Mode): клиент сообщает серверу свой IP-адрес и порт для приёма данных, после чего сервер сам инициирует соединение с клиентом. Этот режим проблематичен при работе через брандмауэры и NAT, так как требует входящего соединения к клиенту.
  • Пассивный режим (Passive Mode): сервер открывает порт и сообщает его клиенту, после чего клиент сам подключается к серверу для передачи данных. Этот режим стал стандартом де-факто, так как не требует входящих соединений к клиенту и лучше совместим с современными сетевыми экранами.

Типы передачи данных

FTP поддерживает три типа представления данных:

  • ASCII — для текстовых файлов (с преобразованием символов конца строки).
  • Image (Binary) — для двоичных файлов (без преобразования).
  • EBCDIC — для мейнфреймов IBM (редко используется).

Команды и коды ответов

Управление сессией осуществляется через текстовые команды, передаваемые по управляющему соединению. Основные команды:

  • USER — имя пользователя.
  • PASSпароль.
  • CWD — смена рабочего каталога.
  • LIST — получение списка файлов.
  • RETR — загрузка файла с сервера.
  • STOR — загрузка файла на сервер.
  • DELEудаление файла.
  • QUIT — завершение сессии.

Сервер отвечает трёхзначными числовыми кодами (например, 220 — сервер готов, 331 — требуется пароль, 550 — ошибка доступа). Коды группируются по первой цифре: 1xx — информационные, 2xx — успех, 3xx — требуется дополнительный ввод, 4xx — временная ошибка, 5xx — постоянная ошибка.

Аутентификация и безопасность

По умолчанию FTP передаёт учётные данные (имя пользователя и пароль) в открытом виде (plain text), что делает протокол уязвимым для перехвата. Для повышения безопасности были разработаны расширения:

  • FTPS (FTP over SSL/TLS) — стандартное расширение (RFC 4217), шифрующее управляющее и/или соединение данных с помощью SSL/TLS. Поддерживает явное (AUTH TLS) и неявное (Implicit FTPS) шифрование.
  • SFTP (SSH File Transfer Protocol) — не является расширением FTP, а самостоятельный протокол поверх SSH, обеспечивающий шифрование и аутентификацию. Часто путается с FTPS.
  • FTP over SSH — туннелирование FTP-сессии через SSH-соединение.

Незащищённый FTP считается устаревшим и не рекомендуется для передачи конфиденциальных данных.

Применение

FTP традиционно используется в следующих областях:

  • Веб-хостинг: загрузка файлов сайта на сервер (хотя сейчас чаще применяется SFTP или панели управления).
  • Обновление прошивок и ПО: на сетевых устройствах (маршрутизаторы, IP-камеры, принтеры) часто встроен FTP-клиент или сервер.
  • Корпоративный обмен данными: автоматическая передача отчётов, логов, файлов между серверами внутри локальной сети.
  • Научные и архивные проекты: распространение больших объёмов открытых данных (например, FTP-архивы NASA, библиотек).
  • Встраиваемые системы: многие IoT-устройства и промышленные контроллеры поддерживают FTP для загрузки конфигураций.

Ограничения и критика

Несмотря на широкое распространение, FTP имеет ряд недостатков:

  • Отсутствие шифрования в базовой версии — пароли и данные передаются открыто.
  • Сложность с брандмауэрами и NAT — особенно в активном режиме.
  • Множественные соединения — увеличивают нагрузку на сервер и усложняют управление.
  • Отсутствие встроенной поддержки сжатия и возобновления прерванных передач (хотя некоторые реализации добавляют эту функцию).
  • Устаревшая архитектура — протокол не оптимизирован для современных высокоскоростных сетей.

В связи с этим многие организации переходят на SFTP, FTPS или облачные решения (WebDAV, S3, OneDrive).

Альтернативы

Основные альтернативы FTP:

  • SFTP — защищённый протокол на основе SSH (порт 22). Шифрует весь трафик, использует одно соединение.
  • FTPS — FTP с шифрованием SSL/TLS.
  • HTTP/HTTPS — для загрузки файлов через веб-браузер (например, протокол WebDAV).
  • SCP — простой протокол копирования файлов поверх SSH.
  • RSYNC — протокол для синхронизации файлов с поддержкой дельта-кодирования.
  • Облачные API — RESTful API для работы с файлами (Amazon S3, Google Cloud Storage, Яндекс.Диск).

Интересные факты

  • FTP является одним из немногих протоколов, использующих два порта одновременно.
  • В 2020 году IETF выпустила RFC 8888, официально признавший базовую версию FTP устаревшей (Historic status), рекомендовав использовать FTPS или SFTP.
  • Несмотря на устаревание, FTP-серверы всё ещё работают на миллионах устройств — от маршрутизаторов до промышленных роботов.
  • Команда FTP встроена во все операционные системы семейства Windows (начиная с MS-DOS) и Unix-подобные системы.

Источники

  • RFC 959 — File Transfer Protocol (1985)
  • RFC 4217 — Securing FTP with TLS (2005)
  • RFC 2228 — FTP Security Extensions (1997)
  • RFC 2640 — Internationalization of the File Transfer Protocol (1999)
  • RFC 3659 — Extensions to FTP (2007)
  • RFC 114 — A File Transfer Protocol (1971)
  • Постел Дж., Рейнольдс Дж. «File Transfer Protocol» — Internet Engineering Task Force, 1985
  • Книга: Стивенс У. Р. «TCP/IP. Иллюстрированное руководство. Том 1» — 1994
  • Материалы сайта IETF.org — протокол FTP

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →