stringtranslate.com

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

Протокол передачи файлов ( FTP ) — это стандартный протокол связи, используемый для передачи компьютерных файлов с сервера на клиент в компьютерной сети . FTP построен на архитектуре клиент-серверной модели с использованием отдельных соединений управления и данных между клиентом и сервером. [1] Пользователи FTP могут аутентифицировать себя с помощью протокола входа в систему с открытым текстом , обычно в виде имени пользователя и пароля, но могут подключаться анонимно, если сервер настроен так, чтобы это разрешать. Для безопасной передачи, которая защищает имя пользователя и пароль и шифрует содержимое, FTP часто защищается с помощью SSL/TLS ( FTPS ) или заменяется на SSH File Transfer Protocol ( 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 года) включает Firewall-Friendly FTP (пассивный режим), RFC  2228 (июнь 1997 года) предлагает расширения безопасности, RFC  2428 (сентябрь 1998 года) добавляет поддержку IPv6 и определяет новый тип пассивного режима. [8]

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

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

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

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

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

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

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

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

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

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

Схема работы 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 , иногда называемый «Mode Z» по команде, которая его включает. Этот режим был описан в Internet Draft , но не стандартизирован. [16]

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

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

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

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

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

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

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

Анонимный FTP

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

Отличия от HTTP

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

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

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

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

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

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

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

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

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

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

На Android файловый менеджер My Files на Samsung Galaxy имеет встроенный FTP и SFTP- клиент. [28]

Веб-браузер

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

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

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

Синтаксис

Синтаксис FTP URL описан в 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 [34] и Internet Explorer [35] ). По умолчанию большинство веб-браузеров используют пассивный режим (PASV), который легче обходит межсетевые экраны конечного пользователя.

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

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

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

Другой

LibreOffice объявил, что поддержка FTP устарела с версии 7.4, позднее она была удалена в версии 24.2. [38] [39]

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

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

FTP не шифрует свой трафик; все передачи осуществляются открытым текстом, а имена пользователей, пароли, команды и данные могут быть прочитаны любым человеком, способным выполнить захват пакетов ( сниффинг ) в сети. [2] [40] Эта проблема характерна для многих спецификаций интернет-протоколов (таких как 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. [40] Поскольку FTP использует несколько TCP- соединений (что необычно для протокола TCP/IP, который все еще используется), туннелирование через SSH особенно затруднено. Для многих клиентов SSH попытка настроить туннель для канала управления (начальное соединение клиент-сервер на порту 21) защитит только этот канал; при передаче данных программное обеспечение FTP на обоих концах устанавливает новые TCP-соединения (каналы данных) и, таким образом, не обеспечивает конфиденциальности или защиты целостности .

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

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

Производные

ФТПС

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

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

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

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

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

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

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

FTP-команды

Коды ответа FTP

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

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

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

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

Ссылки

  1. ^ abc Forouzan, BA (2000). TCP/IP: Protocol Suite (1-е изд.). Нью-Дели, Индия: Tata McGraw-Hill Publishing Company Limited.
  2. ^ abcdefghij Kozierok, Чарльз М. (2005). «Руководство TCP/IP v3.0». Tcpipguide.com.
  3. ^ abcde Дин, Тамара (2010). Network+ Guide to Networks . Delmar. стр. 168–171.
  4. ^ ab Vonau, Manuel (7 июля 2021 г.). «Firefox следует по стопам Chrome и отказывается от поддержки FTP (загрузка APK)». Android Police . Получено 12 июля 2021 г. .
  5. ^ "Удалить поддержку FTP - Статус платформы Chrome". www.chromestatus.com . Получено 2 сентября 2021 г. .
  6. ^ Автор: Написано (23 марта 2020 г.). «Firefox прекращает поддержку FTP». Sophos News . Получено 13 октября 2023 г. .
  7. ^ Эдвардс, Бендж (14 июля 2022 г.). «Chrome и Firefox уничтожили поддержку FTP: вот простая альтернатива». How-To Geek . Получено 13 октября 2023 г.
  8. ^ abcd Clark, MP (2003). Сети передачи данных IP и Интернет (1-е изд.). Западный Суссекс, Англия: John Wiley & Sons Ltd.
  9. ^ ab «Активный FTP против пассивного FTP, окончательное объяснение». Slacksite.com.
  10. ^ Вайс, Ольга (18 октября 2022 г.). «Порт FTP: полное руководство по FTP и номерам портов». Комплексные приложения для Mac . Получено 29 марта 2024 г.
  11. ^ RFC  959 (Стандарт) Протокол передачи файлов (FTP). Постел, Дж. и Рейнольдс, Дж. (октябрь 1985 г.).
  12. ^ RFC  2428 (Предлагаемый стандарт) Расширения для IPv6, NAT и расширенного пассивного режима. Allman, M. & Metz, C. & Ostermann, S. (сентябрь 1998 г.).
  13. ^ Стивенс, В. Ричард (1994). TCP/IP Illustrated Volume I. Том 1. Рединг, Массачусетс, США: Addison-Wesley Publishing Company. ISBN 0-201-63346-9.
  14. ^ abc Глисон, Майк (2005). «Протокол передачи файлов и ваш брандмауэр/NAT». Ncftp.com.
  15. ^ Кленсин, Джон. Расширение FTP TYPE для интернационализированного текста. Идентификатор draft-klensin-ftpext-typeu-00 . Получено 9 июня 2020 г. .
  16. ^ Preston, J. (январь 2005 г.). Режим передачи Deflate для FTP. IETF . ID draft-preston-ftpext-deflate-03 . Получено 27 января 2016 г.
  17. ^ Оллкок, У. (апрель 2003 г.). «GridFTP: расширения протокола FTP для Grid» (PDF) .
  18. ^ Мандриченко, И. (4 мая 2005 г.). «Описание протокола GridFTP v2» (PDF) .
  19. ^ "Команда MFMT FTP". support.solarwinds.com . 11 октября 2018 г.
  20. ^ "Команды FTP: DSIZ, MFCT, MFMT, AVBL, PASS, XPWD, XMKD | Serv-U". www.serv-u.com .
  21. ^ "Команда MDTM FTP". support.solarwinds.com . 11 октября 2018 г.
  22. Принс, Брайан (24 января 2012 г.). «Следует ли организациям отказаться от FTP в целях безопасности?». Security Week . Получено 14 сентября 2017 г.
  23. ^ RFC  1635 (информационный) Как использовать анонимный FTP. P. & Emtage, A. & Marine, A. (май 1994 г.).
  24. ^ FTP-доступ через проводник Windows
  25. ^ "CSC373/406: SSH [2011/03/27-29]". fpl.cs.depaul.edu . Получено 13 октября 2023 г. .
  26. ^ "FTP". docs.kde.org . Получено 13 октября 2023 г. .
  27. ^ Коэн, Брент (26 июля 2023 г.). «Как подключиться к FTP/SFTP в Dolphin | DeviceTests» . Получено 13 октября 2023 г.
  28. ^ Staff, Moyens (28 февраля 2022 г.). «Samsung My Files против Google Files: какой файловый менеджер лучше на телефонах Galaxy». Moyens I/O . Получено 13 октября 2023 г.
  29. ^ Мэтьюз, Дж. (2005). Компьютерные сети: Интернет-протоколы в действии (1-е изд.). Дэнверс, Массачусетс: John Wiley & Sons Inc.
  30. ^ Снеддон, Джои (26 января 2021 г.). «Обзор релизов Linux: GParted, Lightworks, Google Chrome и многое другое». omgubuntu.co.uk . Получено 30 января 2021 г. .
  31. ^ "Посмотрите, что нового в Firefox: выпуск Firefox 88.0". mozilla.org . 19 апреля 2021 г. . Получено 20 апреля 2021 г. .
  32. ^ "FireFTP - Бесплатный FTP-клиент для Waterfox". FireFTP.net . Архивировано из оригинала 1 марта 2022 г.
  33. ^ "Схемы URL, поддерживаемые в Lynx". Веб-сайт Lynx . Получено 6 июля 2023 г.
  34. ^ "Доступ к FTP-серверам | Как сделать | Справка Firefox". Support.mozilla.com. 5 сентября 2012 г. Получено 16 января 2013 г.
  35. ^ "Как ввести пароль FTP-сайта в Internet Explorer". Архивировано из оригинала 2 июля 2015 г. Получено 13 февраля 2020 г.{{cite web}}: CS1 maint: bot: original URL status unknown (link)Написано для IE версии 6 и более ранних. Может работать и с более новыми версиями.
  36. ^ Юкка «Юкка» Корпела (18 сентября 1997 г.). «FTP URL». «ИТ и связь» (jkorpela.fi) . Получено 26 января 2020 г.
  37. ^ "DownloadStudio - Internet Download Manager And Download Accelerator - Features". Conceiva . Получено 19 октября 2021 г. .
  38. ^ "LibreOffice 7.4: Release Notes". Wiki от The Document Foundation . Получено 10 сентября 2022 г.
  39. ^ "ReleaseNotes/24.2". Wiki Фонда Документов . Получено 24 марта 2024 г.
  40. ^ abc "Защита FTP с помощью SSH". Nurdletech.com.
  41. ^ "Компоненты платформы обеспечения безопасности информации (раздел Tectia ConnectSecure)". ssh.com . Архивировано из оригинала 31 июля 2020 г.

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

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