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

Протокол передачи файлов

Протокол передачи файлов (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 →