FTP протокол
Файлова служба мережі на основі протоколу FTP (Fіle Transfer Protocol) є однією з найбільш ранніх служб, яку використовували для доступу до файлів, що знаходяться на відстані. До створення служби WWW служба доступу до даних в Інтернеті й корпоративних ІP – мережах була найпопулярнішою . Перші специфікації FTP розроблялись до 1971 року. Сервери й клієнти FTP є практично в кожній ОС сімейства UNIX, а також у багатьох інших мережевих ОС. Клієнти FTP вбудовані сьогодні в програми перегляду (браузери) Інтернету, бо файлові архіви на основі протоколу FTP, як і раніше, популярні та для доступу до таких архівів браузером використовується протокол FTP
Протокол FTP дозволяє повністю перемістити файл з комп’ютера, який знаходиться на відстані на локальний і навпаки, тобто працює за схемою завантаження-вивантаження (upload – download). Крім того, він підтримує декілька команд перегляду віддаленого каталогу й переміщення по каталогах віддаленої файлової системи. Тому FTP особливо зручно використовувати для доступу до тих файлів, дані яких немає сенсу переглядати віддалено, а набагато ефективніше цілком перемістити на клієнтський комп’ютер (наприклад, файли модулів додатків, що виконуються).
До протоколу FTP вбудовані примітивні засоби аутентифікації віддалених користувачів на основі передачі по мережі пароля у відкритому вигляді. Крім того, підтримується анонімний доступ, що не вимагає вказівки ім’я користувача та пароля.
Протокол FTP виконаний за схемою клієнт-сервер. Клієнт FTP складається з декількох функціональних модулів:
User Іnterface – інтерфейс користувача, що приймає від користувача символьні команди й відображуючий стан сеансу FTP на символьному екрані.
User-Pі – інтерпретатор команд користувача. Цей модуль взаємодіє з відповідним модулем сервера FTP.
User-DTP – модуль, що здійснює передачу даних файлу по командах, одержуваним від модуля User- Pі по протоколі клієнт- сервер. Цей модуль взаємодіє з локальною файловою системою клієнта.
FTP-Сервер містить наступні модулі:
Server-Pі – модуль, що приймає й інтерпретує команди, передані по мережі модулем User- PL
Server-DTP – модуль, керуючий передачею даних файлу по командах від модуля Server- PL – модуль, котрий взаємодіє з локальною файловою системою сервера.
Клієнт і сервер FTP підтримують паралельно два сеанси: керуючий сеанс і сеанс передачі даних. Керуючий сеанс відкривається при встановленні первісного FTP- з’єднання клієнта із сервером, до того, протягом одного керуючого сеансу може послідовно виконуватися декілька сеансів передачі даних, у рамках яких передаються або приймаються декілька файлів.
Загальна схема взаємодії клієнта й сервера виглядає таким чином:
1. сервер FTP завжди відкриває керуючий порт TCP 21 для прослуховування, очікуючи прихід запиту на встановлення керуючого сеансу FTP від вилученого клієнта (це може виконувати або демон самого ПЗ, або демон системи inetd);
2. після встановлення керуючого з’єднання клієнт дає серверу команди, які уточнюють параметри з’єднання:
- ім’я та пароль клієнта;
- роль учасників з’єднання (активна або пасивна);
- порт передачі даних;
- тип передачі;
- тип переданих даних (двійкові дані – binary або ASCіі- Код);
- директиви на виконання дій (читати файл, писати файл, видалити файл і т.п. ).;
3. після узгодження параметрів: пасивний учасник з’єднання переходить у режим очікування відкриття з’єднання на порт передачі даних, активний учасник ініціює це з’єднання та починає передачу даних;
4. після закінчення передачі даних з’єднання по портах даних закривається, а керуюче з’єднання залишається відкритим. Користувач може по керуючому з’єднанню активізувати новий сеанс передачі даних.
Порти передачі даних вибирає клієнт FTP (за замовчуванням клієнт може використовувати для передачі даних порт керуючого сеансу), а сервер повинен використовувати порт, на одиницю менший порту клієнта.
Протокол FTP використовує при взаємодії клієнта із сервером кілька команд (не треба їх плутати з командами користувацького інтерфейсу клієнта, які використовує людина).
Ці команди діляться на три групи:
команди керування доступом до системи;
команди керування потоком даних;
команди служби FTP.
У набір команд керування доступом входять наступні команди:
USER – доставляє серверу ім’я клієнта. Ця команда відкриває керуючий сеанс і може також передаватися при відкритому керуючому сеансі для зміни ім’я користувача.
PASS – передає у відкритому виді пароль користувача.
CWD – змінює поточний каталог на сервері.
REІ – повторно иніціалізує керуючий сеанс.
QUІ – завершує керуючий сеанс.
Команди керування потоком установлюють параметри передачі даних:
PORT – визначає адресу й порт хоста, що буде активним учасником з’єднання при передачі даних. Наприклад, команда PORT 194,85,135,126,7,205 призначає активним учасником хост 194.85.135.126 і порт 1997 (обчислення номера порту не тривіально, але цілком однозначно).
PASV – призначає хост пасивним учасником з’єднання по передачі даних. У відповідь на цю команду повинна бути передана команда PORT із зазначенням адреси й порту, що перебуває в режимі очікування.
TYPE – задає тип переданих даних ( ASCіі-Код або двійкові дані).
STRU – визначає структуру переданих даних (файл, запис, сторінка).
MODE – задає режим передачі (потоком, блоками й т.п. ).
Як видно з опису, служба FTP може застосовуватися для роботи як зі структурованими файлами, розділеними на записи або сторінки, так і з неструктурованими.
Команди служби FTP, ініціюють дії по передачі файлів або перегляду вилученого каталогу:
RETR – запитує передачу файлу від сервера на клієнтський хост. Параметрами команди є ім’я файлу. Може бути задане також зсув від початку файлу – це дозволяє почати передачу файлу з певного місця при непередбаченому розриві з’єднання (цей параметр використається в команді reget користувальницького інтерфейсу).
STOR – ініціює передачу файлу від клієнта на сервер. Параметри аналогічні команді RETR.
RNFR і RNTO – команди перейменування вилученого файлу. Перша як аргумент одержує старе ім’я файлу, а друга – нове.
DELE, MKD, RMD, LІST – ці команди відповідно видаляють файл, створюють каталог, видаляють каталог і передають список файлів поточного каталогу.
Кожна команда протоколу FTP передається в текстовому виді по одній команді в рядку. Рядок закінчується символами CR і LF ASCіі-кода.
Користувальницький інтерфейс клієнта FTP залежить від його програмної реалізації. Поряд із традиційними клієнтами, що працюють у консольному режимі, є й графічні оболонки, що не вимагають від користувача знання консольних команд.
Символьні клієнти звичайно підтримують наступний основний набір команд:
open ім’я_хоста – відкриття сеансу з вилученим сервером;
bye – завершення сеансу з вилученим хостом і завершення роботи утиліти ftp;
close – завершення сеансу з вилученим хостом, утиліта ftp продовжує працювати;
ls (dіr) – печатка вмісту поточного вилученого каталогу;
get ім’я_файлу – копіювання віддаленого файлу на локальний хост;
put ім’я_файлу – копіювання локального файлу на віддалений сервер.
Читайте також:
- Tahoe-LAFS - P2P файлова система, що дозволяє використовувати "хмару" серверів не довіряючи ним
- How To Integrate ClamAV Into PureFTPd For Virus Scanning On Debian
- vsftpd /bin/false check_shell=NO pam hack
- Список портів та сервісів