Протокол передачи файлов
Протокол передачи файлов (File Transfer Protocol, FTP) — это стандартный сетевой протокол прикладного уровня, предназначенный для передачи файлов между клиентом и сервером по компьютерной сети. FTP работает на основе модели «клиент-сервер» и использует протокол управления передачей (TCP) для обеспечения надёжной доставки данных. Протокол был разработан в начале 1970-х годов и является одним из старейших протоколов Интернета, предшествовавшим появлению Всемирной паутины. Основными функциями FTP являются загрузка (upload) и скачивание (download) файлов, управление файловой структурой на удалённом сервере (создание, удаление, переименование каталогов и файлов), а также аутентификация пользователей.
История
Разработка FTP началась в 1971 году в рамках проекта ARPANET, предшественника современного Интернета. Первая спецификация протокола была опубликована в RFC 114 (Абхай Бхушан, 1971 год). В 1972 году вышла обновлённая версия RFC 265, а в 1973 году — RFC 354, которая заложила основы современного FTP. В 1985 году был опубликован RFC 959 (Джон Постел, Джойс Рейнольдс), который стал основным стандартом протокола и остаётся таковым по настоящее время. В последующие годы вносились дополнения: в 1997 году вышли RFC 2228 (расширение безопасности) и RFC 2389 (механизм определения возможностей сервера), а в 1999 году — RFC 2428 (поддержка IPv6).
В 1990-е годы FTP был основным средством передачи файлов в Интернете, особенно для публикации веб-сайтов и обмена данными в академических кругах. С развитием HTTP и появлением более безопасных протоколов (SFTP, FTPS) популярность FTP снизилась, однако он по-прежнему используется в корпоративных сетях, для автоматизации обмена данными и в устаревших системах.
Архитектура и принцип работы
FTP использует два отдельных TCP-соединения: управляющее (control connection) и канал данных (data connection). Управляющее соединение устанавливается между клиентом и сервером на порт 21 (по умолчанию) и служит для передачи команд (например, USER, PASS, LIST, RETR, STOR) и ответов сервера. Канал данных открывается для фактической передачи файлов и может использовать порт 20 (активный режим) или произвольный порт (пассивный режим).
Активный режим (Active Mode)
В активном режиме клиент сообщает серверу свой IP-адрес и номер порта для приёма данных. Сервер инициирует соединение с клиентом на указанный порт. Этот режим может вызывать проблемы при работе за брандмауэрами (firewalls) и системами трансляции сетевых адресов (NAT), так как сервер пытается подключиться к клиенту, что часто блокируется.
Пассивный режим (Passive Mode)
В пассивном режиме (PASV) сервер открывает порт для прослушивания и сообщает клиенту свой IP-адрес и номер порта. Клиент самостоятельно устанавливает соединение с сервером для передачи данных. Пассивный режим является более предпочтительным в современных сетях, так как не требует от клиента быть доступным для входящих соединений.
Аутентификация и безопасность
FTP поддерживает два типа аутентификации: анонимный доступ (anonymous) и доступ по учётным данным (username/password). При анонимном доступе пользователь вводит «anonymous» в качестве имени и любой адрес электронной почты (часто не проверяемый) в качестве пароля. Этот метод используется на публичных FTP-серверах для распространения свободного программного обеспечения и документов.
Оригинальный FTP не предусматривает шифрования данных. Все команды, включая имя пользователя и пароль, передаются в открытом виде, что делает протокол уязвимым для перехвата трафика (sniffing). Для решения этой проблемы были разработаны расширения:
- FTPS (FTP over SSL/TLS) — расширение, добавляющее шифрование через протоколы SSL/TLS. Описано в RFC 4217 (2005 год). FTPS может шифровать как управляющее соединение, так и канал данных.
- SFTP (SSH File Transfer Protocol) — протокол, работающий поверх SSH (Secure Shell). Не является расширением FTP, а отдельным протоколом. Обеспечивает шифрование и аутентификацию, используя порт 22 (по умолчанию для SSH).
Команды и ответы
FTP использует текстовые команды и числовые коды ответов. Команды передаются по управляющему соединению в формате ASCII. Примеры основных команд:
| Команда | Описание |
|---|---|
| USER | Имя пользователя |
| PASS | Пароль |
| LIST | Список файлов в каталоге |
| RETR | Скачивание файла (retrieve) |
| STOR | Загрузка файла (store) |
| DELE | Удаление файла |
| MKD | Создание каталога |
| RMD | Удаление каталога |
| QUIT | Завершение сеанса |
Ответы сервера состоят из трёхзначного кода и текстового сообщения. Например, код 220 означает «готов к работе», 230 — «пользователь аутентифицирован», 550 — «файл не найден или нет доступа».
Программное обеспечение
Для работы с FTP используются как клиентские, так и серверные программы.
FTP-клиенты
- FileZilla — свободный кроссплатформенный клиент с графическим интерфейсом, поддерживает FTP, FTPS и SFTP.
- WinSCP — клиент для Windows, поддерживает FTP, SFTP и SCP.
- Total Commander — файловый менеджер для Windows со встроенной поддержкой FTP.
- Командная строка — встроенные утилиты
ftpв Windows, Linux и macOS. - Веб-браузеры — устаревшие версии Internet Explorer и Firefox поддерживали FTP, но современные браузеры (Chrome, Firefox) удалили эту возможность в 2021–2022 годах.
FTP-серверы
- vsftpd (Very Secure FTP Daemon) — популярный сервер для Unix-подобных систем, известный своей безопасностью.
- ProFTPD — гибкий сервер с модульной архитектурой.
- FileZilla Server — сервер для Windows с графическим интерфейсом.
- IIS FTP Server — компонент веб-сервера Microsoft IIS.
Применение
Несмотря на появление более современных протоколов, FTP продолжает использоваться в ряде областей:
- Веб-хостинг — загрузка файлов веб-сайтов на серверы (особенно в устаревших системах).
- Обмен данными между предприятиями (B2B) — автоматизированная передача больших объёмов данных, например, в логистике и банковской сфере.
- Резервное копирование — передача резервных копий на удалённые серверы.
- Встраиваемые системы — передача прошивок и конфигураций на устройства (например, сетевые принтеры, IP-камеры).
Альтернативы и ограничения
Основные недостатки FTP: отсутствие шифрования, сложность работы за брандмауэрами (особенно в активном режиме), поддержка только аутентификации по паролю (без двухфакторной). Альтернативы:
- HTTP/HTTPS — протокол передачи гипертекста, используемый для загрузки файлов через веб-браузеры. Поддерживает шифрование (HTTPS) и прост в использовании.
- SFTP — протокол на основе SSH, обеспечивающий шифрование и аутентификацию.
- FTPS — FTP с шифрованием SSL/TLS.
- WebDAV — расширение HTTP для управления файлами на удалённых серверах.
- Облачные сервисы — Google Drive, Яндекс.Диск, Dropbox, предоставляющие API для передачи файлов через HTTPS.
Интересные факты
- FTP является одним из старейших протоколов Интернета: его первая спецификация появилась в 1971 году, за два года до изобретения электронной почты (SMTP) и за двадцать лет до появления Всемирной паутины (HTTP).
- В 2020 году браузеры Google Chrome и Mozilla Firefox объявили о прекращении поддержки FTP из-за низкой популярности и соображений безопасности. В 2021 году Firefox 90 полностью удалил поддержку FTP.
- Команда
LISTв оригинальной спецификации FTP возвращает список файлов в формате, зависящем от операционной системы сервера, что может вызывать проблемы при парсинге.
Источники
- RFC 959 — File Transfer Protocol (1985)
- RFC 4217 — Securing FTP with TLS (2005)
- RFC 2428 — FTP Extensions for IPv6 and NATs (1999)
- Джон Постел, Джойс Рейнольдс. «File Transfer Protocol Specification» (1985)
- «FTP: The Protocol That Won’t Die» — IEEE Spectrum (2017)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →