Введение
FTP (File Transfer Protocol) – один из старейших и наиболее широко используемых сетевых протоколов для передачи файлов между компьютерами по сети TCP/IP. Протокол был стандартизирован в документе RFC 959 в октябре 1985 года, хотя его предшественники существовали ещё с 1971 года. Несмотря на возраст, FTP по-прежнему применяется в корпоративных средах для обмена данными между серверами, хостинг-панелями и пакетной передачи файлов.
FTP работает по классической клиент-серверной модели: клиент подключается к серверу и выполняет команды (загрузка, скачивание, переименование, удаление файлов). Протокол предусматривает аутентификацию по логину и паролю, однако в базовой версии данные передаются в открытом виде.
История и контекст
Первая спецификация протокола передачи файлов была опубликована Абхаем Бхушаном в RFC 114 в апреле 1971 года – ещё до появления TCP/IP. С переходом ARPANET на TCP/IP протокол был переработан. Финальная версия FTP описана в RFC 959 (1985), которая по-прежнему остаётся основополагающим стандартом.
В 1990-х годах FTP стал основным способом распространения программного обеспечения и файлов в Интернете – именно тогда появились публичные FTP-серверы с анонимным доступом. С распространением HTTPS и появлением облачных хранилищ использование FTP для публичного доступа существенно сократилось, однако он сохраняет позиции в корпоративных EDI-процессах и автоматизированном обмене данными.
Как это работает
FTP использует два отдельных TCP-соединения:
- Командный канал (Control Connection) – порт 21. Остаётся открытым на протяжении всей сессии и служит для передачи команд (LIST, RETR, STOR) и ответов сервера (числовые коды, аналогичные HTTP).
- Канал данных (Data Connection) – порт 20 (активный режим) или случайный высокий порт (пассивный режим). Открывается для каждой отдельной передачи файла или листинга каталога.
Активный vs. пассивный режим: В активном режиме сервер сам инициирует подключение к клиенту (проблемы с NAT и файрволлами). В пассивном режиме (PASV) клиент открывает оба соединения – это решает большинство проблем с NAT. Современные клиенты и серверы по умолчанию используют пассивный режим.
Где применяется
- Веб-хостинг: Загрузка файлов сайта на сервер через FTP-клиент (FileZilla, WinSCP).
- EDI и B2B-интеграции: Автоматизированный обмен файлами (заказы, счета, каталоги товаров) между ERP-системами компаний.
- Резервное копирование: Периодическая выгрузка архивов на удалённый FTP-сервер.
- Дистрибуция ПО: Внутренние репозитории дистрибутивов и патчей в корпоративных сетях.
Преимущества и ограничения
Преимущества: простота реализации, широкая поддержка клиентами и серверами, возможность докачки прерванных передач (команда REST), эффективная передача больших файлов.
Ограничения: передача данных в открытом виде (пароли и файлы не зашифрованы), сложности с NAT и файрволлами (особенно в активном режиме), отсутствие целостности данных. Для защиты используются:
- FTPS (FTP Secure) – FTP поверх SSL/TLS (RFC 4217).
- SFTP (SSH File Transfer Protocol) – не связан с FTP, работает через SSH (порт 22), де-факто стандарт в современных системах.
Связь с другими понятиями
FTP является одним из прикладных протоколов стека TCP/IP, наряду с HTTP, SMTP и DNS. В корпоративных интеграциях FTP часто используется совместно с форматами EDI (EDIFACT, X12). Для безопасной передачи данных FTP вытесняется протоколом SFTP или HTTPS-based загрузкой через API. В контексте DevOps FTP-развёртывание заменяется CI/CD-конвейерами с Git-based деплоем.