Протокол 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 →