FTP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Загальна інформація[ред.ред. код]

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

При розгляді FTP як сервісу Інтернет мають на увазі не просто протокол, а саме сервіс — доступ до файлів, які знаходяться у файлових архівах.

FTP — стандартна програма, яка працює за протоколом TCP, яка завжди поставляється з операційною системою. Її початкове призначення — передача файлів між різними комп'ютерами, які працюють у мережах TCP/IP: на одному з комп'ютерів працює програма-сервер, на іншому — програма-клієнт, запущена користувачем, яка з'єднується з сервером і передає або отримує файли через FTP-сервіс. Все це розглядається з припущенням, що користувач зареєстрований на сервері та використовує логін та пароль на цьому комп'ютері.

Ця риса послужила причиною того, що програми FTP стали частиною окремого сервісу Інтернету. Справа в тому, що доволі часто сервер FTP налаштовується таким чином, що з'єднатися з ним можна не тільки під своїм ім'ям, але й під умовним іменем anonymous — анонім. У такому випадку для користувача стає доступною не вся файлова система комп'ютера, а лише деякий набір файлів на сервері, які складають вміст серверу anonymous FTP — публічного файлового архіву. Отже, якщо користувач хоче надати у вільне користування файли з інформацією, програмами і т. і., то йому достатньо організувати на власному комп'ютері, включеному в Інтернет, сервер anonymous FTP. Створення такого серверу — процес доволі простий, програми-клієнти FTP вельми розповсюджені, — тому сьогодні публічні файлові архіви організовані в основному як сервери anonymous FTP. Перелік інформації, яка міститься на таких серверах, включає всі аспекти життя: від звичайних текстів до мультимедіа.

Не зважаючи на розповсюдженість, у FTP є багато недоліків. Програми-клієнти FTP не завжди зручні і прості у користуванні. Користувач не завжди може зрозуміти який файл перед ним, чи той що необхідно, чи ні. Окрім того, не існує простого і універсального засобу для пошуку на серверах anonymous FTP, — хоча для цього і існує спеціальний сервіс archie, але це незалежна програма, вона не універсальна і не завжди її можна ефективно застосовувати. Програми FTP доволі старі і деякі їхні особливості, які були потрібні в часи їхнього створення, не зовсім зрозумілі і потрібні зараз. Наприклад, для передачі файлів існує два режими — двійковий та текстовий, і, якщо користувач неправильно обрав режим передачі, то файл, який необхідно передати, може бути пошкодженим. Опис файлів на сервері видається у форматі операційної системи серверу, а список файлів операційної системи UNIX не завжди з розумінням сприймається користувачами DOS. Сервери FTP нецентралізовані, — звідси випливають ще деякі проблеми. Але незважаючи на все це, сервери anonymous FTP сьогодні — це стандартний шлях організації публічних файлових архівів в Інтернеті.

FTP — сервіс прямого доступу, який вимагає повноцінного підключення до Інтернету, але є можливість доступу і через електронну пошту — існують сервери, які пересилають за допомогою електронної пошти файли з будь-яких серверів anonymous FTP. Проте цей шлях отримання інформації - досить незручний, оскільки такі сервери можуть бути сильно завантажені і запит доволі довго чекатиме своєї черги. Крім того, великі файли при пересилці діляться сервером на частини обмеженого обсягу і, якщо одна з частин загубиться і буде пересланою із пошкодженнями, то весь файл стане непридатним.

Історія[ред.ред. код]

Перша реалізація протоколу (1971 р.) передбачала обмін між клієнтом і сервером повідомленнями, що складаються з заголовка (72 біт) і даних змінної довжини. Тема повідомлення включав в себе запит до FTP-сервера або відповідь від нього, тип і довжину переданих даних. В якості даних передавалися параметри запиту (наприклад, шлях і ім'я файлу), інформація від сервера (наприклад, список файлів у каталозі) і самі файли. Таким чином, команди і дані передавалися по одному і тому ж каналу. У 1972 р. протокол був повністю змінений, і прийняв вигляд, близький до сучасного. Команди з параметрами від клієнта та відповіді сервера передаються по TELNET-з'єднання (канал управління), для передачі даних створюється окреме з'єднання (канал даних). У наступних редакціях була додана можливість роботи в пасивному режимі, передачі файлів між FTP-серверами, введені команди отримання інформації, зміни поточного каталогу, створення і видалення каталогів, збереження файлів під унікальним ім'ям. Деякий час існували команди для передачі електронної пошти через FTP, проте згодом вони були виключені з протоколу. У 1980 р. FTP-протокол став використовувати TCP. Остання редакція протоколу була випущена в 1985 р. У 1997 р. з'явилося доповнення до протоколу, що дозволяє шифрувати і підписувати інформацію в каналі управління і каналі даних. У 1999 р. випущено додаток, присвячене інтернаціоналізації протоколу, яке рекомендує використовувати кодування UTF-8 для команд і відповідей сервера і визначає нову команду LANG, що встановлює мову відповідей.

Схема FTP[ред.ред. код]

FTP служба побудована за добре відомою схемою "клієнт-сервер". Клієнт (браузер, Windows Commander, NetVampir ...) посилає запити серверу і приймає файли. Сервер FTP (vsftpd, IIS ...) опрацьовує запити клієнта на отримання файла.  

Взаємодія клієнта і сервера по протоколу FTP.gif

Взаємодія клієнт і сервера за протоколом FTP. Служба FTP базується на двох стандартах: URL (Universal Resource Locator) - універсальний спосіб адресації ресурсів у мережі; FTP (File Transfer Protocol) - протокол передачі файлів.

Протокол FTP[ред.ред. код]

File Transfer Protocol - протокол передачі файлів, протокол високого рівня (а саме, рівня додатків). Використовується службою FTP для передачі файлів.
Перший стандарт - RFC114 (File Transfer Protocol AK Bhushan Apr-10-1971).
Остання версія - RFC959 (File Transfer Protocol J. Postel, JK Reynolds Oct-01-1985).
FTP відрізняється від інших програм тим, що він використовує два TCP з'єднання для передачі файлу. Керуюче з'єднання - з'єднання для посилки команд серверу й одержання відповідей від нього. Для каналу керування використовується протокол Telnet.
З'єднання даних - з'єднання для передачі файлів.
1 Керуюче з'єднання - з'єднання для посилки команд серверу й одержання відповідей від нього. Для каналу керування використовується протокол Telnet.
2 З'єднання даних - з'єднання для передачі файлів



В старих версіях для передачі даних використовувався тільки 20-й порт (активний режим), у сучасних версіях FTP-серверів порт для каналу даних може призначатися сервером з нестандартних (N> 1024) портів (пасивний режим).
Протокол FTP визначає запит-відповідь спосіб взаємодії між програмою-клієнтом і програмою-сервером.
Робота FTP на рівні користувача містить кілька етапів:
1.Ідентифікація (логуватись).
2.Вибір каталогу.
3.Визначення режиму обміну (поблочно, потоковий, ascii або двійковий).
4.Виконання команд обміну (get, mget, dir, mdel, mput або put).
5.Завершення процедури (quit або close).

Різниця роботи пасивного режиму та активного[ред.ред. код]

Активний режим[ред.ред. код]

Дії сервера і клієнта:
1.Клієнт встановлює зв'язок і надсилає запит на 21 порт сервера з порту N (N> 1024)
2.Сервер посилає відповідь на порт N (N> 1024) клієнта
3.Сервер встановлює зв'язок для передачі даних по порту 20 на порт клієнта N +1



Пасивний режим[ред.ред. код]

Дії сервера і клієнта:
1.Клієнт встановлює зв'язок і надсилає запит (повідомляє, що треба працювати в пасивному режимі) на 21 порт сервера з порту N (N> 1024)
2.Сервер посилає відповідь і повідомляє номер порту для каналу даних P (P> 1024) на порт N (N> 1024) клієнта
3.Клієнт встановлює зв'язок для передачі даних по порту N +1 на порт сервера P (P> 1024)











Активний FTP вигідний для FTP-сервера, але шкідливий для сторони клієнта. FTP сервер намагається з'єднатися з випадковими високими (за номером) портами на клієнті, таке з'єднання напевно буде блоковано брандмауером на стороні клієнта.
Пасивний FTP вигідний для клієнта, але шкідливий для FTP-сервера. Клієнт буде робити обидва з'єднання до сервера, але один з них буде до випадкового високому порту, таке з'єднання напевно буде блоковано брандмауером на стороні сервера.






Приклади[ред.ред. код]

установка з'єднання Connecting to ftp.ru ... Connected to ftp.ru [194.87.5.52]

сервер: 220 megillah.demos.su FTP server (Version wu-2.4) ready. - / / Код помилки, ім'я хоста, протокол, версія сервера, тільки для читання
клієнт: USER anonymous - / / ім'я користувача
сервер: 331 Guest login ok, send your complete e-mail address as password. - / / код помилки, ім'я користувача коректно, потрібен пароль
клієнт: PASS ****** - / / пароль клієнта
сервер: 230 Guest login ok, access restrictions apply. - / / Код помилки, користувач ідентифікований, продовжуйте
клієнт: CWD / - / / перехід до кореневої директорії
сервер: 250 CWD command successful. - / / Команда виконана успішно
клієнт: TYPE A - / / передавати інформацію в текстовому вигляді
сервер: 200 Type set to A. - / / Текстовий тип встановлений
клієнт: PASV - / / сервер повинен визначити нестандартний порт даних, почати його слухати
сервер: 227 Entering Passive Mode (194,87,5,52,9,75) - / / сервер повертає ip-адресу (194.87.5.52) і номер порту (2383)
клієнт: LIST - / / передати по з'єднанню даних список імен файлів в директорії
сервер: Data connection established - / / встановлено з'єднання даних
клієнт: 150 Opening ASCII mode data connection for / bin / ls. - / / Татусями файлу правильний, підготовляється відкриття каналу

Передача інформації по каналу даних
повідомлення: Data transfer started - / / початок передачі інформації
повідомлення: DATA connection closed by remote server - / / закриття каналу передачі даних
 
Інформування клієнтом користувача
повідомлення: Received 1428 bytes in 0:00:00 (35700 bytes / s) - / / скільки байт отримано (1428), за який час (ч.мм.сс) і з якою середньою швидкістю (35700 bytes / s)
повідомлення: JOB COMPLETED SUCCESSFULLY - / / робота завершена

Приклад запиту файлу[ред.ред. код]


Установка з'єднання
Connecting to ftp.ru ...
Connected to ftp.ru [194.87.5.52]

сервер: 220 megillah.demos.su FTP server (Version wu-2.4) ready. - / / Код помилки, ім'я хоста, протокол, версія сервера, тільки для читання
клієнт: USER anonymous - / / ім'я користувача
сервер: 331 Guest login ok, send your complete e-mail address as password. - / / Ім'я користувача коректно, потрібен пароль
клієнт: PASS ****** - / / пароль клієнта
сервер: 230 Guest login ok, access restrictions apply. - / / Користувач ідентифікований, продовжуйте
клієнт: CWD / www.FAQ.win - / / змінити каталог на / www.FAQ.win
сервер: 550 / www.FAQ.win: Not a directory. - / / Директорія / www.FAQ.win не знайдена
клієнт: TYPE I - / / передавати файл у бінарному вигляді
сервер: 200 Type set to I. - / / Бінарний тип встановлений
клієнт: STAT / www.FAQ.win - / / запит інформації про файл / www.FAQ.win
сервер: 211-status of / www.FAQ.win: - / / початок передачі інформації
сервер:-rw-r - r - 1 root root 31368 Jan 18 1999 / www.FAQ.win - / / продовження передачі інформації
сервер: 211 End of Status - / / кінець передачі інформації
клієнт: PASV - / / сервер повинен визначити нестандартний порт даних, почати його слухати
сервер: 227 Entering Passive Mode (194,87,5,52,9,79) - / / сервер повертає ip-адресу (194.87.5.52) і номер порту (2383)
клієнт: REST 64 - / / почати докачку файлу, пропустивши перші 64 байта
сервер: Data connection established - / / встановлено з'єднання даних
сервер: 350 Restarting at 64. (Null) - / / команда прийнята
клієнт: REST 0 - / / почати докачку файлу, пропустивши перший 0 байтів
сервер: 350 Restarting at 0. (Null) - / / команда прийнята
клієнт: RETR / www.FAQ.win - / / видати файл www.FAQ.win
сервер: 150 Opening BINARY mode data connection for / www.FAQ.win (31368 bytes). - / / Статус файлу правильний, підготовляється відкриття каналу даних, розмір файлу 31368 байт
 
Передача інформації по каналу даних
повідомлення: Data transfer started - / / початок передачі файлу
повідомлення: DATA connection closed by remote server - / / закриття каналу передачі даних  
Інформування клієнтом користувача
повідомлення: Received 31368 bytes in 0:00:02 (10477 bytes / s) - / / скільки байт отримано (31 368), за який час (ч.мм.сс) і з якою середньою швидкістю (10477 bytes / s)
повідомлення: JOB COMPLETED SUCCESSFULLY - / / робота завершена


Деякі команди[ред.ред. код]


управління доступом
USER - ім'я користувача
PASS - пароль
CWD - ім'я нової робочої директорії
CDUP - перейти на один рівень директорії вгору
QUIT - вихід

  установки параметрів передачі
PORT ip1, ip2, ip3, ip4, p1, p2 - IP адреса клієнта (ip1, ip2, ip3, ip4) і порт (p1, p2) (розрахунок порту p1 * 256 + p2 = номер порту)
          Приклад:
          Entering Passive Mode (194,87,5,52,9,79)
          194.87.5.52 - IP адреса
          2383 - номер порт, розрахунок порту 9 * 256 +79 = 2383
PASV - сервер повинен визначити нестандартний порт даних, почати його слухати і повернути ip-адресу та номер порту у форматі PORT
TYPE {{A | E} [N | T | C]} | I | L розмір-байта (за замовчуванням - AN) - специфікує тип інформації
 

Дії[ред.ред. код]


RETR - ім'я файлу (взяти файл)
STOR - ім'я файлу (передати файл)
REST - маркер (для докачки вже частково скаченного файлу - зазвичай вказується зсув у байтах)
DELE - ім'я файлу, що видаляється
RMD - ім'я видаляється директорії
MKD - ім'я створюваної директорії
PWD - у відповіді вказати ім'я поточної директорії
LIST [ім'я директорії або файлу] - передати по з'єднанню даних список імен файлів в директорії або інформацію про фото
SYST - відповідь повинен містити тип ОС сервера і ін корисну інформацію
STAT - відповідь містити інформацію про поточний стан сервера; якщо команда видана в процесі передачі файлу і передуватиме посилкою
сигналів telnet-а IP і Synch, то відповідь д. містити інформацію про стан пересилання
STAT ім'я файлу - відповідь повинна містити інформацію про фото  

Інше
HELP [ім'я команди] - опис роботи даної команди
NOOP - порожня команда

Деякі типи даних:[ред.ред. код]

  • Елемент маркованого списку

ASCII (TYPE A) - передача текстової інформації

  • Елемент маркованого списку

IMAGE (TYPE I) - передача бінарних файлів

Коди повернення[ред.ред. код]


При виконанні FTP система повертає трехразрядного десяткові коди-помилки, які дозволяють судити про коректність обміну. Видача коду супроводжується текстом-коментарем. Перша цифра може приймати значення від 1 до 5.

Перша цифра:
1yz - попередній позитивну відповідь: команда прийнята, але не завершена
2yz - дія успішно завершено
3yz - команда прийнята, сервер чекає додаткову інформацію
4yz - тимчасова невдача, повторити через деякий час
5yz - фатальна помилка

 
Друга цифра:
x0z - синтаксис
x1z - відповідь на запит інформації
x2z - відповідь відноситься до стану керуючого з'єднання або з'єднання даних
x3z - аутентифікація та облік
x4z - сенс не визначений
x5z - стан файлової системи сервера

Деякі коди повернення[ред.ред. код]


110 Коментар
120 Функція буде реалізована через nnn хвилин
125 Канал відкритий, обмін даними розпочато
150 Статус файлу правильний, підготовляється відкриття каналу
200 Команда коректна
211 Системний статус або відгук на довідковий запит
212 Стан каталогу
213 Стан файлу
214 Довідкове що пояснює повідомлення
220 Занадто багато підключень до FTP-сервера (можете спробувати пізніше). У деяких версіях вказує на успішне завершення проміжної процедури
221 Благополучне завершення по команді quit
225 Канал сформований, але інформаційний обмін відсутня
226 Закриття каналу, обмін завершено успішно
230 Користувач ідентифікований, продовжуйте
250 Запит пройшов успішно
331 Ім'я користувача коректно, потрібен пароль
332 Для входу в систему потрібна автентифікація
421 Процедура не можлива, канал закривається
425 Відкриття інформаційного каналу не можливо
426 Канал закритий, обмін перерваний
450 Запрошення функція не реалізована, файл не доступний, наприклад, зайнятий
451 Локальна помилка, операція перервана
452 Помилка при записі файлу (не достатньо місця)
500 Синтаксична помилка, команда не може бути інтерпретована (можливо, вона занадто довга)
501 Синтаксична помилка (невірний параметр або аргумент)
502 Команда не використовується (нелегальний тип MODE)
503 Невдала послідовність команд
504 Команда не застосовна для такого параметра
530 Система не завантажена (not logged in)
532 Необхідна аутентифікація для запам'ятовування файлу
550 Запрошення функція не реалізована, файл не доступний, наприклад, не знайдений
552 Запрошення операція перервана, недостатньо виділено пам'яті

Програми клієнти[ред.ред. код]


FTP - програма запускається з командного рядка.
Total Commander - може працювати як FTP-клієнт. Дозволяє працювати з віддаленими каталогами також як з локальними.
NetVampire - Спеціалізований FTP-клієнт, який дозволяє качати великі файли і качати по поганих каналах.

FXP[ред.ред. код]

FXP (англ. File eXchange Protocol — протокол обміну файлами) — спосіб передачі файлів між двома FTP-серверами напряму, не завантажуючи їх на свій комп'ютер. При FXP-сесії клієнт відкриває два FTP-з'єднання до двох різних серверів, запитуючи файл на першому сервері, вказуючи в команді PORT IP-адресу другого сервера.

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

FXP став використовуватися зловмисниками для атак на інші сервери: в команді PORT вказується IP-адреса і порт сервісу що атакується на комп'ютері жертви, і командами RETR / STOR проводиться звернення на цей порт від особи FTP-сервера, а не атакуючої машини, що дозволяло влаштовувати масштабні DDoS-атаки з використанням відразу багатьох FTP-серверів, або обходити систему безпеки комп'ютера жертви, якщо він покладається тільки на перевірку IP клієнта і використовуваний для атаки FTP-сервер знаходиться в довіреної мережі або на шлюзі. Відтак зараз практично усі сервери перевіряють відповідність IP-адреси, вказаної в команді PORT, IP-адресу FTP-клієнта і за замовчуванням забороняють використання там IP-адрес третіх сторін. Таким чином, використання FXP неможливо при роботі з публічними FTP-серверами.

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

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


Інтернет Це незавершена стаття про Інтернет.
Ви можете допомогти проекту, виправивши або дописавши її.