stringtranslate.com

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

Протокол передачи файлов ( FTP ) — это стандартный протокол связи , используемый для передачи компьютерных файлов с сервера клиенту в компьютерной сети . FTP построен на архитектуре модели клиент-сервер с использованием отдельных соединений управления и передачи данных между клиентом и сервером. [1] Пользователи FTP могут аутентифицировать себя с помощью текстового протокола входа, обычно в виде имени пользователя и пароля, но могут подключаться анонимно, если сервер настроен на это. Для безопасной передачи, которая защищает имя пользователя и пароль и шифрует содержимое, FTP часто защищается с помощью SSL/TLS ( FTPS ) или заменяется протоколом передачи файлов SSH (SFTP).

Первые клиентские приложения FTP представляли собой программы командной строки, разработанные до того, как операционные системы имели графический интерфейс пользователя , и до сих пор поставляются с большинством операционных систем Windows , Unix и Linux . [2] [3] С тех пор было разработано множество специализированных FTP- клиентов и утилит автоматизации для настольных компьютеров , серверов, мобильных устройств и оборудования, а FTP был включен в приложения для повышения производительности, такие как редакторы HTML и файловые менеджеры .

FTP-клиент обычно интегрировался в веб-браузеры , где файловые серверы просматриваются с префиксом URIftp:// " ". В 2021 году поддержка FTP была прекращена Google Chrome и Firefox, [4] [5] двумя крупными поставщиками веб-браузеров, поскольку ее заменили более безопасные SFTP и FTPS; хотя ни один из них не реализовал новые протоколы. [6] [7]

История FTP-серверов

Первоначальная спецификация протокола передачи файлов была написана Абхаем Бхушаном и опубликована как RFC  114 16 апреля 1971 года. До 1980 года FTP работал на NCP , предшественнике TCP/IP . [2] Позже протокол был заменен версиями TCP/IP, RFC  765 (июнь 1980 г.) и RFC  959 (октябрь 1985 г.), текущей спецификацией. Несколько предложенных стандартов вносят поправки в RFC  959, например, RFC  1579 (февраль 1994 г.) включает FTP, дружественный к межсетевому экрану (пассивный режим), RFC  2228 (июнь 1997 г.) предлагает расширения безопасности, RFC  2428 (сентябрь 1998 г.) добавляет поддержку IPv6 и определяет новый тип. пассивного режима. [8]

Обзор протокола

Связь и передача данных

Иллюстрация запуска пассивного соединения с использованием порта 21

FTP может работать в активном или пассивном режиме, который определяет способ установления соединения для передачи данных. [9] (Этот смысл «режима» отличается от значения команды MODE в протоколе FTP.)

Оба режима были обновлены в сентябре 1998 года для поддержки IPv6 . В то время в пассивный режим были внесены дальнейшие изменения, обновившие его до расширенного пассивного режима . [11]

Сервер отвечает по управляющему соединению трехзначными кодами состояния в формате ASCII и дополнительным текстовым сообщением. Например, «200» (или «200 ОК») означает, что последняя команда выполнена успешно. Цифры представляют собой код ответа, а необязательный текст представляет собой удобочитаемое объяснение или запрос (например, <Нужна учетная запись для хранения файла>). [1] Текущая передача файловых данных по соединению для передачи данных может быть прервана с помощью сообщения о прерывании, отправленного по управляющему соединению.

FTP требует два порта (один для отправки и один для приема), поскольку изначально он был разработан для работы поверх протокола управления сетью (NCP), который представлял собой симплексный протокол , который использовал два адреса портов , устанавливая два соединения для двусторонней связи. . Нечетный и четный порт были зарезервированы для каждого приложения или протокола прикладного уровня . Стандартизация TCP и UDP сократила необходимость использования двух симплексных портов для каждого приложения до одного дуплексного порта, [12] : 15  , но протокол FTP никогда не изменялся, чтобы использовать только один порт, и продолжал использовать два для обратной совместимости. .

Обход NAT и брандмауэра

FTP обычно передает данные путем обратного подключения сервера к клиенту после отправки клиентом команды PORT. Это проблематично как для NAT , так и для межсетевых экранов, которые не разрешают подключения из Интернета к внутренним хостам. [13] Для NAT дополнительной сложностью является то, что представление IP-адресов и номеров портов в команде PORT относится к IP-адресу и порту внутреннего хоста, а не к общедоступному IP-адресу и порту NAT.

Есть два подхода к решению этой проблемы. Во-первых, FTP-клиент и FTP-сервер используют команду PASV, которая вызывает установку соединения для передачи данных от FTP-клиента к серверу. [13] Это широко используется современными FTP-клиентами. Другой подход заключается в том, чтобы NAT изменил значения команды PORT, используя для этой цели шлюз уровня приложения . [13]

Модельная диаграмма того, как работает FTP

Типы данных

При передаче данных по сети определяются пять типов данных: [2] [3] [8]

Обратите внимание, что эти типы данных обычно называются «режимами», хотя неоднозначно это слово также используется для обозначения режима связи «активный-пассивный» (см. Выше) и режимов, устанавливаемых командой MODE протокола FTP (см. Ниже).

Для текстовых файлов (ТИП A и ТИП E) предусмотрены три различных параметра управления форматом, позволяющие контролировать способ печати файла:

Эти форматы в основном относились к линейным принтерам ; большинство современных FTP-клиентов/серверов поддерживают только управление форматом по умолчанию N.

Файловые структуры

Организация файлов задается с помощью команды STRU. Следующие файловые структуры определены в разделе 3.1.1 RFC959:

Большинство современных FTP-клиентов и серверов поддерживают только STRU F. STRU R до сих пор используется в приложениях для передачи файлов на мейнфреймах и мини-компьютерах.

Режимы передачи данных

Передача данных может осуществляться в любом из трех режимов: [1] [2]

Большинство современных FTP-клиентов и серверов не поддерживают MODE B или MODE C; Исключением являются FTP-клиенты и серверы для операционных систем мэйнфреймов и мини-компьютеров.

Некоторые программы FTP также реализуют режим сжатия на основе DEFLATE , иногда называемый «Режим Z» по имени команды, которая его включает. Этот режим был описан в Интернет-проекте , но не стандартизирован. [15]

GridFTP определяет дополнительные режимы, MODE E [16] и MODE X, [17] как расширения MODE B.

Дополнительные команды

Более поздние реализации FTP поддерживают команду «Изменить факт: время модификации» (MFMT), которая позволяет клиенту удаленно настраивать этот атрибут файла , обеспечивая сохранение этого атрибута при загрузке файлов. [18] [19]

Чтобы получить временную метку удаленного файла, существует команда MDTM . Некоторые серверы (и клиенты) поддерживают нестандартный синтаксис команды MDTM с двумя аргументами, который работает так же, как MFMT [20].

Авторизоваться

Компьютер на Южнополярной станции Амундсен-Скотт подключается к FTP-серверу и передает файл, 1994 год.

Для входа в FTP используется обычная схема имени пользователя и пароля для предоставления доступа. [2] Имя пользователя отправляется на сервер с помощью команды USER, а пароль отправляется с помощью команды PASS. [2] Эта последовательность не зашифрована «по проводу», поэтому может быть уязвима для атаки с перехватом сети . [21] Если информация, предоставленная клиентом, принимается сервером, сервер отправит приветствие клиенту, и сеанс начнется. [2] Если сервер поддерживает это, пользователи могут входить в систему без предоставления учетных данных, но тот же сервер может разрешать только ограниченный доступ для таких сеансов. [2]

Анонимный FTP

Хост, предоставляющий службу FTP, может предоставлять анонимный доступ по FTP. [2] Пользователи обычно входят в службу с «анонимной» учетной записью (на некоторых FTP-серверах с учетом нижнего регистра и с учетом регистра) при запросе имени пользователя. Хотя пользователей обычно просят отправить адрес электронной почты вместо пароля, [3] на самом деле никакая проверка предоставленных данных не выполняется. [22] Многие FTP-хосты, целью которых является предоставление обновлений программного обеспечения, допускают анонимный вход в систему. [3]

Отличия от HTTP

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

FTP имеет соединение с контролем состояния, которое поддерживает текущий рабочий каталог и другие флаги, и для каждой передачи требуется вторичное соединение, через которое передаются данные. В «пассивном» режиме это вторичное соединение осуществляется от клиента к серверу, тогда как в «активном» режиме по умолчанию это соединение осуществляется от сервера к клиенту. Эта очевидная смена ролей в активном режиме и случайные номера портов для всех передач — вот почему брандмауэры и шлюзы NAT так плохо справляются с FTP. HTTP не сохраняет состояние и мультиплексирует управление и данные по одному соединению от клиента к серверу по хорошо известным номерам портов, которые тривиально проходят через шлюзы NAT и просты в управлении межсетевыми экранами.

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

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

Поддержка программного обеспечения

Клиент FileZilla , работающий в Windows, один из самых известных программ FTP-клиентов.

Файловые менеджеры

Многие файловые менеджеры, как правило, реализуют доступ по FTP, например Проводник (ранее Проводник Windows) в Microsoft Windows . Этот клиент рекомендуется только для передачи небольших файлов с сервера из-за ограничений по сравнению со специальным клиентским программным обеспечением. [23] Он не поддерживает SFTP . [24]

Оба встроенных файловых менеджера KDE в Linux ( Dolphin и Konqueror ) поддерживают как FTP, так и SFTP. [25] [26]

Примитивный FTPd на Android, активно работающий FTP и SFTP-сервер.

В Android файловый менеджер «Мои файлы» на Samsung Galaxy имеет встроенный клиент FTP и SFTP . [27]

веб-браузер

В течение долгого времени большинство распространенных веб-браузеров могли получать файлы, размещенные на FTP-серверах, хотя не все из них поддерживали расширения протокола, такие как FTPS . [3] [28] Когда указан URL -адрес FTP, а не HTTP , доступное содержимое на удаленном сервере представляется таким же образом, как и для другого веб-контента.

Google Chrome полностью удалил поддержку FTP в Chrome 88, что также затронуло другие браузеры на базе Chromium , такие как Microsoft Edge . [29] В Firefox 88 по умолчанию отключена поддержка FTP, а в Firefox 90 поддержка полностью прекращена. [30] [4]

FireFTP — это прекращенное расширение браузера, которое было разработано как полнофункциональный FTP-клиент для запуска в Firefox , но когда Firefox отказался от поддержки FTP, разработчик расширения рекомендовал использовать Waterfox . [31] Некоторые браузеры, такие как текстовый Lynx , по-прежнему поддерживают FTP. [32]

Синтаксис

Синтаксис URL-адреса FTP описан в RFC  1738 и имеет форму: (части в квадратных скобках являются необязательными).ftp://[user[:password]@]host[:port]/[url-path]

Например, URL-адрес ftp://public.ftp-servers.example.com/mydirectory/myfile.txt представляет файл myfile.txt из каталога mydirectory на сервере public.ftp-servers.example.com в качестве FTP-ресурса. . URL-адрес ftp://user001:[email protected]/mydirectory/myfile.txt добавляет спецификацию имени пользователя и пароля, которые необходимо использовать для доступа к этому ресурсу.

Более подробную информацию об указании имени пользователя и пароля можно найти в документации браузеров (например, Firefox [33] и Internet Explorer [34] ). По умолчанию большинство веб-браузеров используют пассивный режим (PASV), который легче преодолевает брандмауэры конечных пользователей.

Существуют некоторые различия в том, как разные браузеры обрабатывают разрешение пути в случаях, когда у пользователя есть некорневой домашний каталог. [35]

Менеджер загрузки

Большинство распространенных менеджеров загрузки могут получать файлы, размещенные на FTP-серверах, а некоторые из них также предоставляют интерфейс для получения файлов, размещенных на FTP-серверах. DownloadStudio позволяет не только скачать файл с FTP-сервера, но и просмотреть список файлов на FTP-сервере. [36]

Другой

LibreOffice поддерживает открытие файлов с FTP-серверов, но начиная с версии 7.4 эта функция помечена как устаревшая, и разработчики намерены удалить ее в будущей версии. [37]

Безопасность

FTP не был разработан как безопасный протокол и имеет множество слабых мест в безопасности. [38] В мае 1999 года авторы RFC  2577 перечислили уязвимости к следующим проблемам:

FTP не шифрует свой трафик; все передачи передаются в виде открытого текста, а имена пользователей, пароли, команды и данные могут быть прочитаны любым, кто может выполнить перехват пакетов ( перехват ) в сети. [2] [38] Эта проблема является общей для многих спецификаций интернет-протокола (таких как SMTP , Telnet , POP и IMAP ), которые были разработаны до создания механизмов шифрования, таких как TLS или SSL. [8]

Общие решения этой проблемы включают в себя:

  1. Использование безопасных версий небезопасных протоколов, например FTPS вместо FTP и TelnetS вместо Telnet.
  2. Использование другого, более безопасного протокола, который может справиться с этой задачей, например протокола передачи файлов SSH или протокола безопасного копирования .
  3. Использование безопасного туннеля, такого как Secure Shell (SSH) или виртуальной частной сети (VPN).

FTP через SSH

FTP через SSH — это практика туннелирования обычного FTP-сеанса через соединение Secure Shell. [38] Поскольку FTP использует несколько TCP- соединений (что необычно для до сих пор используемого протокола TCP/IP), туннелирование через SSH особенно затруднено. Для многих SSH-клиентов попытка настроить туннель для канала управления (начальное соединение клиент-сервер через порт 21) защитит только этот канал; при передаче данных программное обеспечение FTP на обоих концах устанавливает новые TCP-соединения (каналы данных) и, таким образом, не имеет защиты конфиденциальности или целостности .

В противном случае клиентскому программному обеспечению SSH необходимо иметь определенные знания протокола FTP, чтобы отслеживать и перезаписывать сообщения канала управления FTP и автономно открывать новые пересылки пакетов для каналов данных FTP. Пакеты программного обеспечения, поддерживающие этот режим, включают:

FTP через SSH не следует путать с протоколом передачи файлов SSH (SFTP).

Производные

FTPS

Явный FTPS — это расширение стандарта FTP, которое позволяет клиентам запрашивать шифрование сеансов FTP. Это делается путем отправки команды «AUTH TLS». Сервер имеет возможность разрешать или запрещать соединения, не запрашивающие TLS. Это расширение протокола определено в RFC  4217. Неявный FTPS — это устаревший стандарт FTP, требующий использования соединения SSL или TLS. Было указано использовать порты, отличные от обычного FTP.

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

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

Тривиальный протокол передачи файлов

Тривиальный протокол передачи файлов (TFTP) — это простой протокол FTP с блокировкой, который позволяет клиенту получать файлы с удаленного хоста или помещать его на него. Одно из его основных применений — ранние этапы загрузки из локальной сети , поскольку TFTP очень прост в реализации. TFTP лишен безопасности и большинства расширенных функций, предлагаемых более надежными протоколами передачи файлов, такими как протокол передачи файлов. TFTP был впервые стандартизирован в 1981 году, а текущую спецификацию протокола можно найти в RFC  1350.

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

Простой протокол передачи файлов (первый протокол, сокращенно SFTP), как определено в RFC  913, был предложен как (незащищенный) протокол передачи файлов с уровнем сложности, промежуточным между TFTP и FTP. Он никогда не был широко принят в Интернете , и теперь IETF присвоил ему исторический статус . Он работает через порт 115 и часто получает инициализм SFTP . Он имеет набор команд из 11 команд и поддерживает три типа передачи данных: ASCII , двоичный и непрерывный. Для систем с размером слова , кратным 8 битам, реализация двоичного и непрерывного форматов одинакова. Протокол также поддерживает вход с использованием идентификатора пользователя и пароля, иерархические папки и управление файлами (включая переименование , удаление , загрузку , загрузку , загрузку с перезаписью и загрузку с добавлением ).

FTP-команды

Коды ответа FTP

Ниже приведена сводка кодов ответов FTP , которые могут быть возвращены FTP- сервером . Эти коды стандартизированы  IETF в RFC 959. Код ответа представляет собой трехзначное значение. Первая цифра используется для обозначения одного из трех возможных результатов — успеха, неудачи или для обозначения ошибки или неполного ответа:

Вторая цифра определяет тип ошибки:

Третья цифра кода ответа используется для предоставления дополнительной информации по каждой категории, определенной второй цифрой.

Смотрите также

Рекомендации

  1. ^ abc Форузан, бакалавр (2000). TCP/IP: Набор протоколов (1-е изд.). Нью-Дели, Индия: Tata McGraw-Hill Publishing Company Limited.
  2. ^ abcdefghij Kozierok, Чарльз М. (2005). «Руководство TCP/IP v3.0». Tcpipguide.com.
  3. ^ abcde Дин, Тамара (2010). Network+ Руководство по сетям . Дельмар. стр. 168–171.
  4. ↑ Аб Вонау, Мануэль (7 июля 2021 г.). «Firefox идет по стопам Chrome и отказывается от поддержки FTP (загрузка APK)». Андроид Полиция . Проверено 12 июля 2021 г.
  5. ^ «Удалить поддержку FTP - Статус платформы Chrome» . www.chromestatus.com . Проверено 2 сентября 2021 г.
  6. Автор: Написано (23 марта 2020 г.). «Firefox прекращает поддержку FTP». Новости Софоса . Проверено 13 октября 2023 г.
  7. Эдвардс, Бендж (14 июля 2022 г.). «Chrome и Firefox прекратили поддержку FTP: вот простая альтернатива» . Как компьютерщик . Проверено 13 октября 2023 г.
  8. ^ abcd Кларк, член парламента (2003). Сети передачи данных IP и Интернет (1-е изд.). Западный Суссекс, Англия: John Wiley & Sons Ltd.
  9. ^ ab «Активный FTP против пассивного FTP, подробное объяснение». Слаксайт.com.
  10. ^ RFC  959 (стандартный) Протокол передачи файлов (FTP). Постел Дж. и Рейнольдс Дж. (октябрь 1985 г.).
  11. ^ RFC  2428 (предлагаемый стандарт) Расширения для IPv6, NAT и расширенного пассивного режима. Оллман М., Мец К. и Остерманн С. (сентябрь 1998 г.).
  12. ^ Стивенс, В. Ричард (1994). TCP/IP, иллюстрированный том I. Том. 1. Ридинг, Массачусетс, США: Издательство Addison-Wesley Publishing Company. ISBN 0-201-63346-9.
  13. ^ abc Глисон, Майк (2005). «Протокол передачи файлов и ваш брандмауэр/NAT». Ncftp.com.
  14. ^ Кленсин, Джон. Расширение FTP TYPE для интернационализированного текста. Идентификатор Draft-klensin-ftpext-typeu-00 . Проверено 9 июня 2020 г.
  15. ^ Престон, Дж. (январь 2005 г.). Режим передачи Deflate для FTP. IETF . Идентификатор черновика-preston-ftpext-deflate-03 . Проверено 27 января 2016 г.
  16. ^ Олкок, В. (апрель 2003 г.). «GridFTP: расширения протокола FTP для Grid» (PDF) .
  17. Мандриченко И. (4 мая 2005 г.). «Описание протокола GridFTP v2» (PDF) .
  18. ^ «Команда FTP MFMT» . support.solarwinds.com . 11 октября 2018 г.
  19. ^ «Команды FTP: DSIZ, MFCT, MFMT, AVBL, PASS, XPWD, XMKD | Serv-U» . www.serv-u.com .
  20. ^ «Команда FTP MDTM» . support.solarwinds.com . 11 октября 2018 г.
  21. Принс, Брайан (24 января 2012 г.). «Следует ли организациям отказаться от использования FTP в целях безопасности?». Неделя безопасности . Проверено 14 сентября 2017 г.
  22. ^ RFC  1635 (информационный) Как использовать анонимный FTP. П. и Эмтаж А. и Марин А. (май 1994 г.).
  23. ^ https://helpdesk.egnyte.com/hc/en-us/articles/201637914-FTP-Access-through-Windows-Explorer .
  24. ^ «CSC373/406: SSH [27-29 марта 2011 г.]» . fpl.cs.depaul.edu . Проверено 13 октября 2023 г.
  25. Ссылки _ docs.kde.org . Проверено 13 октября 2023 г.
  26. Коэн, Брент (26 июля 2023 г.). «Как подключиться к FTP/SFTP в Dolphin | DeviceTests» . Проверено 13 октября 2023 г.
  27. ^ Персонал, Мойенс (28 февраля 2022 г.). «Samsung My Files против Google Files: какой файловый менеджер лучше на телефонах Galaxy». Мойенс ввода-вывода . Проверено 13 октября 2023 г.
  28. ^ Мэтьюз, Дж. (2005). Компьютерные сети: Интернет-протоколы в действии (1-е изд.). Дэнверс, Массачусетс: John Wiley & Sons Inc.
  29. Снеддон, Джоуи (26 января 2021 г.). «Сводка новостей о выпусках Linux: GParted, Lightworks, Google Chrome и многое другое». omgubuntu.co.uk . Проверено 30 января 2021 г.
  30. ^ «Посмотрите, что нового в Firefox: выпуск Firefox 88.0» . сайт mozilla.org . 19 апреля 2021 г. Проверено 20 апреля 2021 г.
  31. ^ «FireFTP — бесплатный FTP-клиент для Waterfox» . FireFTP.net . Архивировано из оригинала 1 марта 2022 года.
  32. ^ «Схемы URL-адресов, поддерживаемые в Lynx» . Сайт Линкс . Проверено 6 июля 2023 г.
  33. ^ «Доступ к FTP-серверам | Как | Справка Firefox» . Поддержка.mozilla.com. 5 сентября 2012 года . Проверено 16 января 2013 г.
  34. ^ «Как ввести пароль FTP-сайта в Internet Explorer» . Архивировано из оригинала 2 июля 2015 года . Проверено 13 февраля 2020 г. .{{cite web}}: CS1 maint: bot: original URL status unknown (link)Написано для IE версии 6 и более ранних. Возможно, будет работать с более новыми версиями.
  35. Юкка «Юкка» Корпела (18 сентября 1997 г.). «FTP-URL-адреса». «ИТ и связь» (jkorpela.fi) . Проверено 26 января 2020 г. .
  36. ^ «DownloadStudio — Менеджер загрузок через Интернет и ускоритель загрузок — Функции» . Задумать . Проверено 19 октября 2021 г.
  37. ^ «LibreOffice 7.4: Примечания к выпуску» . Вики Document Foundation . Проверено 10 сентября 2022 г.
  38. ^ abc «Защита FTP с помощью SSH». Nurdletech.com.
  39. ^ «Компоненты платформы обеспечения безопасности информации (раздел Tectia ConnectSecure)» . ssh.com . Архивировано из оригинала 31 июля 2020 года.

дальнейшее чтение

Внешние ссылки