FTP-протокол: что это такое и для чего он служит

File Transfer Protocol, или протокол передачи файлов, — это протокол, относящийся к прикладному уровню и отвечающий за передачу данных между двумя системами. Как и протокол HTTP, он работает поверх протокола TCP. При передаче файлов FTP использует одновременно два TCP-канала: один из них отвечает за управление передачей данных, а второй — передает их.

Первоначально протокол FTP использовался как способ связи и обмена информацией между двумя физическими устройствами. Его могут использовать как компании, так и обычные пользователи для переноса данных с одной компьютерной системы на другую. Также протокол полезен в работе с веб-сайтами — для загрузки или выгрузки файлов с серверов.

Передача файлов FTP-протоколом между клиентом и сервером

FTP-соединение создается между клиентом и сервером, после чего они общаются друг с другом при помощи сети. Для этого пользователь может получить разрешение, предоставив учетные данные FTP-серверу, или использовать анонимный FTP.

При установлении FTP-соединения создаются два типа каналов связи, которые называются канал команд и канал данных.

Командный канал требуется для:

  • передачи сообщений о тех или иных действиях
  • ответов между клиентом и сервером (и наоборот).

Протокол FTP применяет тот же подход, что TELNET и SMTP, для связи посредством управляющего соединения. Для этого используется набор символов NVT ASCII. Общение осуществляется через порт 21.

Канал данных используется непосредственно для передачи информации и работает через порт 20.

FTP-клиент, применяя URL в качестве адреса (как и протоколы передачи гипертекста HTTP/S), посылает команду FTP и адрес клиента. После установки соединения пользователь выполняет авторизацию, вводя логин и пароль.

В зависимости от настроек сервера пользователь может получить к нему доступ без логина и пароля. Данная форма авторизации называется «Анонимный FTP». В таком случае на сервере заранее создана специальная учетная запись, которая разрешает авторизацию при любых данных, внесенных в поле пароля. После этого со стороны сервера выполняется проверка введенных данных и выдается разрешение/запрет на действия с данными. Клиент/Сервер обмениваются нужными файлами, после чего происходит выход из соединения.

Как выглядит FTP в графическом интерфейсе ОС

Для взаимодействия с удаленным сервером можно использовать либо командную строку (терминал), либо специализированные приложения. В Windows интерфейс выглядит следующим образом:

Интерфейс в Windows

При работе через приложение взаимодействие с файлами становится гораздо проще благодаря понятности и удобства интерфейса. На скриншоте ниже — пример интерфейса приложения FileZilla:

Приложение FileZilla

Описание команд FTP для командной строки Windows и Linux

Эти команды помогут использовать протокол FTP через консольную строку без сторонних приложений.

ftp> *команда*

!Эта команда переключает вас между операционной системой и FTP. Вернувшись в операционную систему и набрав exit, вы вернетесь в командную строку FTP
?Открывает экран справки
appendДобавляет текст в локальный файл
cdИзменяет удаленный рабочий каталог
deleteУдаляет файл
disconnectВыход из FTP
getПолучение файла с удаленного компьютера
mdeleteМножественное удаление
mdirПеречисляет содержимое нескольких удаленных каталогов
mgetПолучение нескольких файлов
mkdirСоздание каталога
mlsСписки содержимого нескольких удаленных каталогов
mputОтправка нескольких файлов
openОткрывает адрес
putОтправить один файл
pwdПечатает рабочий каталог
quitВыход из FTP
recvПолучение файла

Больше — по ссылке. Те же команды актуальны для работы в ОС Linux.

Какие сервисы лучше использовать для FTP-протокола

  • FileZilla — это бесплатная FTP-утилита с открытым исходным кодом, которая дает пользователю возможность передавать файлы с локального компьютера на удаленный. FileZilla доступна в виде клиентской и серверной версий. Работает под ОС Windows, MacOS и Linux.
  • WinSCP — это бесплатный SFTP-, WebDAV-, S3-, SCP- и FTP-клиент для Windows с открытым исходным кодом. Работает только на ОС Windows.
  • Cyberduck — это FTP-клиент с бесплатными облачными возможностями и поддержкой систем Windows и Mac OS X. Cyberduck использует графический интерфейс пользователя (GUI) для предоставления доступа к файлам с серверов и для иного управления данными в различных местах, включая их редактирование и хранение.
  • Transmit — это приложение для MacOS, позволяющее работать с FTP, SFTP и множеством других протоколов. Отличается удобным дизайном и высокой скоростью работы.
  • CrossFTP — это приложение для ОС Windows, MacOS и Linux, поддерживающее множество протоколов, включая WebDav, SFTP, Amazon S3 и прочие.
  • Nautilus — это менеджер файлов для ОС Linux, работающих на основе окружения Gnome. Основным его плюсом является то, что он уже встроен в систему. Позволяет работать с протоколами FTP(S), SMB, NFS, SSH и прочими.
  • AndFTP — популярный FTP-клиент для ОС Android. Обладает несколько нагруженным интерфейсом, однако он дает пользователю те же функции, что и полноценные десктопные приложения.
  • X-plore File Manager — это FTP-клиент для ОС Android, аналог AndFTP.
  • FTP-manager — это FTP-клиент для iOS, позволяющий копировать, перемещать и удалять файлы между устройством и сервером. Плюсами данного приложения является возможность использовать многооконность на iPad, просматривать различные типы файлов на устройстве, а также вносить изменения в код через специальный редактор.

В чем назначение безопасного FTP-протокола

Изначально FTP не создавался с учетом требований безопасности. Считается, что это небезопасный протокол, поскольку для аутентификации он полагается на имя пользователя и пароль в открытом виде и не использует шифрование. А значит, отправляемые по FTP данные уязвимы для перехвата.

Однако существует несколько общих принципов, позволяющие обеспечить безопасное использование протокола, — FTPS  и SFTP.

FTPS

FTPS, или FTP с использование Secure Socket Layer, — это метод, который позволяет выполнять шифрование соединения по требованию пользователя. FTPS был предложен в качестве альтернативы в RFC 2228.

FTPS был введен на серверах Windows, начиная с IIS 7.0. IIS, или Internet Information Services, — набор инструментов Windows, позволяющих развертывать web-сервер.

В IIS 7.0 FTPS-протокол был автономным дополнительным элементом и требовал отдельной загрузки. IIS 7.5 и каждая последующая версия имеют функциональность FTPS из «коробки». Следовательно, чтобы настроить безопасное FTP-соединение, необходимо установить только IIS Manager и/или FTP-сервис, который входит в пакет IIS.

Как работает FTPS

Как и FTP, FTPS работает по модели клиент-сервер, используя канал управления и канал передачи данных для обмена командами FTP и данными во время клиентского сеанса FTPS.

Сессия FTPS аутентифицируется при помощи логина, пароля и сертификата открытого ключа (аналогично тому, как работает  HTTPS). Инструменты, такие как OpenSSL, позволяют запрашивать и создавать сертификат ключа. При соединении с сервером FTPS клиент сначала проверяет надежность сертификата сервера, после чего осуществляет подключение. Когда доверенный центр сертификации (CA) подписывает эти сертификаты, он гарантирует, что клиент подключен к надежному и безопасному серверу. Это помогает защититься от ряда атак, в том числе от атак посредника.

Сертификаты, не подписанные СА, которые известны как самозаверяющие сертификаты, могут побудить клиента FTPS создать уведомление о том, что сертификат не является подлинным. После этого пользователь может либо подтвердить действие и осуществить подключение или отклонить его.

FTPS (через SSL) использует сертификаты X.509 для аутентификации. Эти цифровые сертификаты содержат в себе открытый ключ шифрования и информацию о том, кто является его владельцем. Открытый ключ выполняет две основные функции: проверку подлинности и шифрование данных. Открытый ключ имеет связанный с ним закрытый ключ. Он находится отдельно от открытого ключа, и его главное предназначение — расшифровка сообщений, зашифрованных при помощи открытого ключа.

SFTP

Также для обеспечения безопасности соединения существует SFTP, или SSH (Secure Shell) FTP, — это протокол прикладного уровня модели OSI. Он является частью SSH и не относится к протоколу FTP напрямую. При его работе происходит шифрование данных при помощи SSH, установка соединения осуществляется через порт 22. Это отличает его от FTPS, который осуществляет открытие порта каждый раз при взаимодействии с файлом. Аутентификация может происходить как при помощи логина и пароля, так и при помощи SSH-ключа.

Больше об SSH-ключах →

Как создать сетевой FTP-протокол  для Windows

Шаг 1. Активация встроенного в ОС FTP-протокола

Для создания FTP-сервера на Windows потребуется выполнить несколько действий.

Мы сделаем это через Панель управления. Найдите ее в режиме поиска.

Панель управления в Windows

 Далее перейти в пункт Программы → Программы и компоненты:

В открывшемся окне следует нажать на пункт Включение или отключение компонентов Windows:

Настройка FTP-сервера

Далее в списке найдите пункт Службы IIS и включите пункты FTP-сервер (Расширяемость FTP и Служба FTP), а также пункт Сценарии и средства управления IIS:

Выбор пунктов в списке

Шаг 2. Создание сервера

Для создания собственного сервера следует перейти на главную страницу Панель управления, выбрать раздел Система и безопасность, где выбрать пункт Администрирование:

Создание сервера

Далее требуется выбрать Диспетчер служб IIS ( если он не появляется, отметьте все поля в Службы IIS и перезагрузите компьютер):

Выберите диспетчер служб IIS

В левой части окна нажмите правой кнопкой мыши и выберите Добавить веб-сайт. У вас появится следующее окно:

Добавить веб-сайт

Далее нажмите правой кнопкой мыши по созданному сайту и выберите Добавить FTP-публикацию:

Добавить FTP-публикацию

После этого заполните поля в соответствии с вашими требованиями, указав порт 21:

Заполняем поля для добавления публикации
Сведения о проверке подлинности и авторизации

Как создать FTP-сервер на Linux

Для создания FTP-сервера на Linux (дистрибутив Ubuntu) следуйте данному алгоритму:

  1. Обновление ОС. Для выполнения этого шага введите следующую команду: sudo apt update.
  2. Установка vsftpd (FTP-сервера). Для выполнения введите следующую команду: sudo apt intall vsftpd.
  3. Проверка работоспособности сервера. Для этого введите следующую команду: sudo systemctl status vsftpd. В случае успешной установки в терминале будет выведено active (running).
  4. Добавление службы в автозагрузку. Для выполнения используйте следующую команду: sudo systemctl enable vsftpd.

Создайте FTP-сервер на мощностях Selectel

Более 100 фиксированных конфигураций с готовностью — 2 минуты.
Арендовать

А что с MacOS?

С компьютерами на MacOS ситуация обстоит несколько другим образом. Начиная с MacOS Sierra (вышла в 2016 г.) сервис FTP был полностью удален из ОС.

Существуют способы вручную интегрировать его в систему, но это нежелательный способ. Во-первых, есть риски заражения компьютера вредоносным ПО. Во-вторых, после каждого обновления системы вы будете получать требования о повторной установке. Из-за этого лучше остановить выбор на сторонних приложениях.

Разница работы с FTP и HTTP

Мы уже упоминали об этих двух протоколах в контексте статьи. Оба работают поверх TCP — самого известного транспортного протоколы. Тем не менее между ними много различий. Рассмотрим основные.

HTTPFTP
Это набор правил, по которым веб-страницы передаются на разные компьютеры через интернетЭто набор правил, разрешающих загрузку и скачивание файлов на компьютер через интернет
Поддерживает только одно соединения — для передачи данных.Поддерживает соединение как для передачи данных, так и для управления (использует два соединения)
Использует протокол управления передачей и работает на TCP-порту 80Использует протокол управления передачей и работает на TCP-портах 20 и 21
URL-адрес будет начинаться с HTTPURL-адрес будет начинаться с FTP
Не требует аутентификацииТребует аутентификации, но позволяет подключаться анонимно
Эффективен при передаче небольших файлов.Эффективен при передаче больших файлов
Файлы, переданные на компьютер через интернет, не сохраняются в памяти (диск)Файлы, переданные на компьютер через интернет, сохраняются в памяти
HTTP используется для предоставления веб-страниц веб-браузеру с веб-сервераFTP используется для загрузки или скачивания файлов между клиентом и сервером
Request for Comments: 2616, 7230, 7231Request for Comments: 959, 765, 1732
HTTP быстрееFTP медленнее по сравнению с HTTP

Нужен ли FTP-протокол в наши дни

В завершение описания FTP-протокола добавим, для чего используется протокол в наши дни. Хоть он и является удобным средством для обмена данными, возраст протокола и уязвимость в плане информационной безопасности берут свое. На данный момент он уступает более защищенным версиям FTP, таким как SFTP.

Доказательством этого становятся отказы от использования протокола. Как это сделали MacOS или браузер Chrome, разработчики которого удалили поддержку протокола в версии Chrome 95. Впрочем, FTP все еще остается востребованным для локальных целей, а также для доступа к различных старым интернет-архивам.

Что еще почитать по теме

Каким должен быть Feature Store, чтобы оптимизировать работу с ML-моделями

В статье рассказываем о том, что нужно бизнесу от Feature Store сегодня, и разбираем архитектуру open source-платформы Feast.
Андрей Салита 30 ноября 2022

Отличия PowerShell от CMD: что использовать в работе

Рассказали о ключевых отличиях между интерпретаторами командной строки в Windows.
Андрей Салита 30 ноября 2022
T-Rex 23 ноября 2022

Как работает СУБД Redis

Рассказываем, что такое Redis: рассматриваем его применение и преимущества, поддерживаемые типы данных.
T-Rex 23 ноября 2022

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Ульяна Малышева 8 декабря 2022

Продуктовый дайджест: предзаказ серверов на ARM и миграция с комфортом

Рассказываем об актуальных продуктовых новостях за ноябрь.
Ульяна Малышева 8 декабря 2022

Как создать Minecraft на Python? Обзор библиотеки Ursina Engine

В статье делимся основами работы с библиотекой Ursina Engine и показываем, как с помощью нее создать мир из кубов.