FTP (англ. File Transfer Protocol, укр. протокол передавання файлів) — стандартний мережевий протокол прикладного рівня, призначений для пересилання файлів між клієнтом та сервером в комп'ютерній мережі.

Клієнт та сервер створюють окремі канали для передачі даних та обміну командами[1]. Можлива автентифікація клієнтів із використанням відкритого тексту, зазвичай це ім'я користувача (логін) та пароль. Також сервер може бути налаштований для роботи без автентифікації користувачів (так звані «анонімні сеанси»).

Для захисту даних (а також процесу автентифікації) використовують побудований на основі SSL/TLS варіант FTPS, або розширення протоколу SSH — SSH File Transfer Protocol (SFTP).

Перші FTP-клієнти були створені ще до появи графічного інтерфейсу користувача в операційних системах і тому мали інтерфейс командного рядка. Проте, такі клієнти досі є складовою сучасних операційних систем сімейства Windows, UNIX-подібних та операційних систем на основі Linux[2]. Відтоді було створено численні версії FTP клієнтів, підтримка протоколу була вбудована в різноманітні утиліти, сервери, пристрої тощо.

Протокол передавання файлів (англ. File Transfer Protocol, FTP) дає можливість абоненту обмінюватися двійковими і текстовими файлами з будь-яким комп'ютером мережі, що підтримує протокол FTP. Установивши зв'язок з віддаленим комп'ютером, користувач може скопіювати файл з віддаленого комп'ютера на свій, або скопіювати файл зі свого комп'ютера на віддалений.

Історія ред.

Перша реалізація протоколу задокументована в RFC 114 ще 1971 році, задовго до існування протоколів TCP/IP[2]. Вона передбачала обмін між клієнтом і сервером повідомленнями, що складаються з заголовка (72 біт) і даних змінної довжини. Тема повідомлення містила у собі запит до FTP-сервера або відповідь від нього, тип і довжину переданих даних. Як дані передавалися параметри запиту (наприклад, шлях і ім'я файлу), інформація від сервера (наприклад, список файлів у каталозі) і самі файли. Таким чином, команди і дані передавалися по одному і тому ж каналу.

У 1972 р. протокол був повністю змінений, і прийняв вигляд, близький до сучасного. Команди з параметрами від клієнта та відповіді сервера передаються по Telnet-з'єднанню (канал керування), для передавання власне даних створюється окреме з'єднання (канал даних).

Наступні редакції додали можливість роботи в пасивному режимі, пересилання файлів між FTP-серверами, ввели команди отримання інформації, зміни поточного каталогу, створення і видалення каталогів, збереження файлів під унікальним ім'ям. Деякий час існували команди для пересилання електронної пошти через FTP, проте згодом їх виключили з протоколу.

У 1980 р. FTP-протокол став використовувати TCP. Остання редакція протоколу випущена в 1985 р. У 1997 р. з'явилося доповнення до протоколу, що дозволяє шифрувати і підписувати інформацію в каналі керування і каналі даних. У 1999 р. випущено додаток, присвячений інтернаціоналізації протоколу, яке рекомендує використовувати кодування UTF-8 для команд і відповідей сервера і визначає нову команду LANG, що встановлює мову відповідей.

Опис ред.

Типи даних ред.

FTP має 4 типи даних для файлів[3]:

Команди ред.

Команди ідентифікуються три або чотирилітерними кодами[4].

Коди відповідей ред.

Див. також ред.

Примітки ред.

  1. Forouzan, B.A. (2000). TCP/IP: Protocol Suite (англ.) (вид. 1st). New Delhi, India: Tata McGraw-Hill Publishing Company Limited. 
  2. а б Kozierok, Charles M. (2005). The TCP/IP Guide v3.0. Tcpipguide.com. Архів оригіналу за 11 січня 2021. Процитовано 8 січня 2021. 
  3. Архівована копія. Архів оригіналу за 1 грудня 2021. Процитовано 1 грудня 2021. 
  4. FTP Internal Protocol Commands and Command Groups 1 [Архівовано 1 грудня 2021 у Wayback Machine.], 2 [Архівовано 1 грудня 2021 у Wayback Machine.]

Посилання ред.

  • RFC 697 (липень 1975) — команда CWD
  • RFC 959 (жовтень 1985) — File Transfer Protocol (Internet Standard)
  • RFC 1579 (лютий 1994) — Firewall-Friendly FTP (Informational)
  • RFC 1635 (Травень 1994) How to Use Anonymous FTP (Informational)
  • RFC 1639 (Червень 1994) FTP Operation Over Big Address Records (FOOBAR)
  • RFC 1738 (Грудень 1994) Uniform Resource Locators (URL)
  • RFC 2228 (Жовтень 1997) FTP Security Extensions (Proposed Standard)
  • RFC 2389 (Серпень 1998) (Proposed Standard) Feature negotiation mechanism for the File Transfer Protocol (Proposed Standard)
  • RFC 2428 (Вересень 1998) (Proposed Standard) Extensions for IPv6, NAT, and Extended passive mode (Proposed Standard)
  • RFC 2577 (Травень 1999) FTP Security Considerations (Informational)
  • RFC 2640 (Липень 1999) Internationalization of the File Transfer Protocol (Proposed Standard)
  • RFC 3659 (Березень 2007) Extensions to FTP (Proposed Standard)
  • RFC 5797 (Березень 2010) FTP Command and Extension Registry (Proposed Standard)
  • RFC 7151 (Березень 2014) File Transfer Protocol HOST Command for Virtual Hosts (Proposed Standard)