FileZilla FTP Server для домашньої чи невеликої офісної мережі. FTP – це що таке та як з ним працювати? Для протоколу ftp цей аспект

І задумався: а чи знають, що для роботи з FTP-сховищами цілком достатньо штатних інструментів Windows? У цій статті я опишу три простих методи передачі файлів по FTP на прикладі. Ті самі прийоми діють і в. Вам знадобляться лише , Провідник і командний рядок.

Спосіб перший: Internet Explorer 8

Будь-якому користувачеві Інтернету знайомі HTTP-адреси для доступу до веб-сайтів, які вводяться в адресному рядку браузера, наприклад . Адреси для доступу до FTP-серверів будуються за таким же принципом: .

Введіть адресу загальнодоступного сховища FTP, наприклад Microsoft (мал. A), і натисніть . У разі успішного підключення ви побачите кореневий каталог. Щоб отримати доступ до підкаталогів та файлів, натисніть на основному каталозі. Щоб завантажити файл, натисніть на ньому правою кнопкою миші та виберіть опцію «Зберегти об'єкт як» (Save Target As).

Як бачите, на сервері зберігаються всі статті бази даних, виправлення, оновлення, утиліти та документація Microsoft, лише представлені вони у вигляді списку з датами. Докладні відомості про FTP-сховище містяться у файлах "readme.txt".

Малюнок A. FTP-сервер Microsoft - вид із Internet Explorer 8.

Зверніть увагу: для успішного підключення до FTP-сервера за допомогою IE повинні бути включені опції «Дозволити перегляд FTP-папок (за межами Internet Explorer)» (Enable FTP folder view (outside of Internet Explorer)) та «Використовувати пасивний FTP-протокол ( для сумісності з брандмауерами та DLS-модемами» (Use Passive FTP (For Firewall and DSL modem compatibility)) у розділі «Огляд» (Browsing) на вкладці «Додатково» (Advanced) діалогового вікна «Властивості браузера» (Internet Options). Викликати його можна з меню "Сервіс" (Tools).

Для доступу до приватних FTP-серверів необхідно ввести ім'я користувача та пароль (мал. B). Однак у IE 7 або IE 8 можна подивитися лише список файлів. Для завантаження доведеться скористатися Провідником (Windows Explorer). Докладніше див. на рис. C, D, E та F.


Рисунок B. Для доступу до приватних FTP-серверів потрібне ім'я користувача та пароль.


Рисунок C. Виберіть опцію «Сторінка | Відкрити FTP-сайт в Провіднику Windows» (Page | Open FTP Site in Windows Explorer) або «Вид | Відкрити FTP-сайт в Провіднику Windows» (View | Open FTP Site in Windows Explorer), щоб запустити Провідник.



Рисунок D. У діалоговому вікні із застереженням безпеки Internet Explorer натисніть кнопку «Дозволити» (Allow).

    Абревіатура FTPпоходить від англійської F ile T ransfer P rotocol (протокол передачі файлів) - протокол прикладного рівня обміну файлами по транспортному протоколу TCP/IP між двома комп'ютерами, FTP-клиентом і FTP-сервером. Це один із найстаріших, проте, як і раніше активно використовуваний протокол.

Протокол FTP призначений для вирішення наступних завдань:

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

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

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

    FTP-клієнт є програмою, яка виконує підключення до FTP-сервера та виконує необхідні операції для перегляду вмісту каталогів сервера, прийому, передачі та видалення файлів або папок. Як така програма може використовуватися звичайний браузер, компоненти операційної системи або спеціально розроблені програмні продукти, як, наприклад, популярний менеджер завантажень Download Masterабо багатофункціональний безкоштовний FileZilla FTP Client.

    Протокол FTP розроблявся ще тоді, коли клієнт і сервер взаємодіяли безпосередньо, без будь-яких проміжних перетворень TCP- пакетів, й у стандартному режимі передбачає можливість створення TCP - з'єднання як з ініціативи клієнта, а й з ініціативи сервера від TCP порта 20 на TCP - порт клієнта, номер якого передається у процесі створення сеансу передачі.

    Реалії ж сьогоднішнього дня такі, що подібне TCP - з'єднання від сервера до клієнта в переважній більшості випадків неможливо, або дуже непросто реалізувати через те, що в більшості випадків для підключення до Інтернету використовується технологія з трансляцією мережевих адрес. NAT(Network Address Translation) , коли клієнт не має мережного інтерфейсу, доступного для створення прямого TCP-з'єднання з Інтернету. Типова схема стандартного підключення до Інтернету виглядає так:

    Підключення до Інтернету здійснюється через спеціальний пристрій - Router(маршрутизатор з функцією NAT), що має, як мінімум два мережеві порти - один підключений до мережі провайдера, що має мережний інтерфейс з IP-адресою, що маршрутизується (так званий, "білий IP"), наприклад 212.248.22.144, і порт з мережевим інтерфейсом для підключення пристроїв локальної мережі з приватною, немаршрутизованою IP-адресою, наприклад 192.168.1.1 ("сірий IP"). При створенні з'єднань від мережних пристроїв локальної мережі до зовнішніх мережних вузлів, IP-пакети направляються на маршрутизатор, який виконує трансляцію адрес і портів таким чином, щоб адресою відправника став його біла IP-адреса. Результати трансляції зберігаються і при отриманні пакету у відповідь, виконується зворотне перетворення адреси. Таким чином, маршрутизатор забезпечує пересилання TCP/IP - пакетів від будь-яких пристроїв локальної мережі до зовнішніх мереж і зворотне пересилання отриманих пакетів у відповідь. Але в тих випадках, коли на вхід мережного інтерфейсу, підключеного до мережі провайдера, приймається пакет, який не має відношення до TCP-пакетів у відповідь, можливі наступні варіанти реакції програмного забезпечення маршрутизатора:

    Пакет ігнорується, оскільки немає мережевої служби, яка б його обробити.

    Пакет приймається та обробляється мережевою службою самого маршрутизатора, якщо така служба існує і чекає на ходяче з'єднання ("слухає") порт, номер якого вказаний у прийнятому пакеті.

    Пакет пересилається серверу в локальній мережі, що очікує на цей вид вхідних з'єднань відповідно до правил перенаправлення портів (port mapping) заданими налаштуваннями маршрутизатора.

    Тому, нині, основним режимом роботи з протоколу FTP став так званий " пасивний режим " , у якому TCP - з'єднання виконуються від клієнта на TCP-порт сервера. Активний режим, використовується в тих випадках, коли існує можливість TCP - підключення від сервера на порти клієнтів, наприклад, коли вони знаходяться в одній локальній мережі. Вибір режиму FTP-з'єднання виконується спеціальними командами:

    PASV- клієнт передає команду, щоб здійснити обмін даними пасивному режимі. Сервер поверне адресу та порт до якого потрібно підключитися, щоб приймати або передавати дані. Приклад фрагмента FTP-сесії із встановленням пасивного режиму:

    PASSV- команда на перемикання в пасивний режим, що передається FTP – клієнтом FTP-серверу

    227 Entering Passive Mode (212,248,22,144,195,89)- відповідь FTP-сервера, де 227 - код відповіді, текстове повідомлення про перехід у пасивний режим та в дужках IP-адресу та номер порту, які будуть використані для створення каналу передачі даних. Адреса та номер порту відображаються у вигляді десяткових чисел, що поділяються комою. Перші 4 числа - це IP-адреса (212.248.22.144), 2 числа, що залишилися, задають номер порту, який обчислюється за формулою - перше число множиться на 256 і до результату додається друге число, в даному прикладі номер порту 195*256 +89 = 50017

    PORT IP адреса клієнта номер порту- Клієнт передає команду, щоб організувати сеанс в активному режимі. IP-адреса і номер порту задаються у тому форматі, як і попередньому прикладі, наприклад PORT 212.248.22.144,195,89 Для організації передачі даних сервер сам підключається до клієнта на вказаний порт.

    Встановлення та налаштування FileZilla FTP Server.

    Завантажити інсталяційний пакет FileZilla Server для вашої версії операційної системи можна на

    Встановлення сервера виконується стандартним чином, за винятком пункту з вибором параметрів панелі керування сервером :

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

    Після завершення інсталяції відкриється вікно запрошення для підключення до сервера:

    Після введення IP-адреси, номера порту та пароля (якщо ви задавали їх у процесі установки) відкривається панель керування FileZilla Server:

    У верхній частині вікна знаходиться основне меню та кнопки панелі керування. Нижче розташовуються дві області – інформаційних повідомлень сервера та статистичної інформації. В цілому, панель управління FTP FileZilla Servver досить проста та зручна у використанні. Пункти основного меню:

    File- Режими роботи панелі управління FTP-сервером. Містить підпункти

    - Connect to Server- підключитися до сервера
    - Disconnect- відключитися від сервера
    - Quit- Завершення роботи панелі управління.

    Server- Управління FTP-сервером. Містить підпункти:

    - Active- запустити/зупинити FTP-сервер. При встановленій галочці FTP-сервер запущено, при знятій зупинено.
    - Lock- заборонити/дозволити підключення до сервера. У разі встановлення галочки нові підключення до сервера заборонені.

    Edit- Редагування налаштувань. Підпункти:

    - Settings- Основні налаштування сервера.
    - Users- налаштування користувачів FTP-сервера
    - Groups- Налаштування груп користувачів.

    Як приклад, виконаємо налаштування сервера для наступних умов:

  • сервер знаходиться за NAT, має приватну IP-адресу, але має бути доступний з Інтернету, підтримує пасивний режим і використовує нестандартні TCP порти. Використання нестандартних портів дозволяє зменшити ймовірність атак хакерів, і крім того, деякі провайдери використовують фільтрацію трафіку і блокують стандартні 20 і 21 порти.
  • користувачі мають можливість завантажувати з сервера, закачувати на сервер, видаляти та перейменовувати файли та папки.
  • у разі використання динамічної IP-адреси, потрібно забезпечити доступність сервера за іменем DNS.
  • сервер буде функціонувати на робочій станції серед ОС Windows 7 / Windows 8.
  • Іншими словами, потрібно створити доступний з Інтернету FTP-сервер для обміну файлами між користувачами, зрозуміло безкоштовно. Цілком зрозуміло, що окрім створення необхідної конфігурації самого FTP - сервера, знадобиться зміна деяких налаштувань маршрутизатора, параметрів брандмауера Windows, вирішення проблеми динамічної IP-адреси, щоб сервер був доступний на ім'я, незалежно від зміни IP-адреси.

    Вирішення проблеми динамічної IP-адреси.

        Ця проблема не вимагає вирішення в тих випадках, коли при підключенні до інтернету використовується статична IP-адреса, або ж динамічна, але відповідно до настройок провайдера, практично завжди одна і та ж. В іншому випадку, можна скористатися технологією, що отримала назву Динамічний DNS (DDNS). Дана технологія дозволяє майже в реальному масштабі часу оновлювати інформацію про IP-адресу на DNS-сервері та отримувати доступ до маршрутизатора (і служб за ним) за зареєстрованим ім'ям, не звертаючи уваги на зміну динамічного IP.

    Для безкоштовної реалізації даної технології знадобиться реєстрація на якомусь сервісі динамічного DNS та встановлення клієнтського програмного забезпечення для оновлення запису DNS у разі зміни відповідної IP-адреси. Підтримку динамічного DNS, як правило, здійснюють виробники мережного обладнання (D-Link, Zyxel та ін), деякі хостингові та спеціалізовані компанії, як, наприклад, широко відома DynDNS. Однак, після того, як у другій половині 2014 року всі послуги, які надавалися зареєстрованим користувачам безкоштовно для некомерційного використання, стали платними, найбільш популярним рішенням, мабуть, стало використання динамічного DNS на базі сервісу No-IP.org, який у безкоштовному режимі надає послуги з підтримки 2-х вузлів із динамічним IP. Для безкоштовного використання сервісу знадобиться реєстрація, і періодичне (приблизно 1 раз на місяць) відвідування сайту для оновлення інформації про вузли з динамічним IP. Якщо пропустити оновлення даних про сайт, то послуга припиняється, і, відповідно, підключитися до сайту на ім'я стане неможливо. Під час платного використання сервісу оновлення не потрібне.

        Практично всі сучасні маршрутизатори (модеми) мають вбудовану підтримку динамічного DNS-клієнта. Його налаштування зазвичай дуже проста - заповнюються поля з ім'ям користувача і паролем, а також з ім'ям вузла, отримані при реєстрації на сервісі DDNS. Приклад для Zyxel P660RU2

        Використання клієнта DDNS, вбудованого в маршрутизатор/модем краще в порівнянні з утилітою оновлення даних DNS, що працює в середовищі ОС, оскільки дозволяє реалізувати додаткові можливості, як, наприклад, управління маршрутизатором через Інтернет при вимкненому комп'ютері та віддалене включення електроживлення комп'ютерів за NAT за технологією Wake On Lan.

    У тих випадках, коли немає можливості використання вбудованого клієнта DDNS, доведеться обходитися прикладним програмним забезпеченням - програмою-клієнтом підтримки динамічного DNS. Така програма періодично підключається до сервера, який підтримує зареєстроване доменне ім'я, пов'язане з маршрутизатором, через який виконується підключення до Інтернету, і викликає процедуру оновлення IP, при його зміні. Налаштування сервера виконані таким чином, що зіставлення DNS-ім'я та IP-адреси інтернет-підключення виконується за дуже короткий час, і динамічний характер адреси практично не позначається на працездатності сервісів, пов'язаних з DNS-іменем.

    Порядок дій наступний:

  • Ідемо на сайт No-IP.org. Для роботи з вже наявним або новим обліковим записом використовується кнопка "Sign In"(У верхній правій частині сторінки).

  • Створюємо, якщо вона ще не створена, свій обліковий запис - тиснемо "Create Account". Форма реєстрації періодично змінюється, але обов'язковими є введення бажаного імені користувача, пароля та вашого E-mail. На вказаний при реєстрації e-mail надходить лист із посиланням на підтвердження реєстрації. При реєстрації вибираємо безкоштовний доступ - тиснемо кнопку Free Sign Upпісля заповнення всіх потрібних полів форми.
  • Після успішної реєстрації входимо на сайт і додаємо запис для свого вузла – тиснемо кнопку "Add Hosts"

    Фактично необхідно ввести тільки обране ім'я вузла, в даному випадку - myhost8.ddns.net. Інші параметри змінювати не потрібно. Потім необхідно завантажити та встановити спеціальне програмне забезпечення - Dynamic Update Client(DUC), посилання на який розміщено на головній сторінці сайту. Після завершення встановлення DUC виконається його запуск та відкриється вікно авторизації, де потрібно ввести ім'я користувача або E-mail та пароль, отримані при реєстрації на сайті no-ip.org. Потім натиснути кнопку Edit Hostaі поставити галочку навпроти створеного раніше імені сайту (myhost8.ddns.net). Тепер вибраному імені вузла буде постійно відповідати "біла IP-адреса" вашого підключення до Інтернету. У разі виникнення проблем із оновленням IP-адреси, перевірте, чи не блокується мережна активність клієнта DUC брандмауером.

    Налаштування FTP-сервера

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

    Налаштування FileZilla Server виконуються через меню "Edit" - "Settings"

    Вікно General Settingsпризначено для загальних налаштувань сервера FTP.

    У полі "Listen on this port" можна вказати номер порту для вхідних TCP-з'єднань. За промовчанням у цьому полі встановлено значення 21 , і для використання нестандартного номера потрібно вказати обране значення, наприклад - 12321 . Використання нестандартного TCP-порту має деяку незручність, оскільки вимагає обов'язкової вказівки його значення під час створення сеансу:

    Якщо сервер планується використовувати як з доступом з Інтернету, так і в локальній мережі, є сенс залишити стандартне значення 21, а нестандартний номер порту використовувати для підключень з Інтернету, налаштувавши перенаправлення пакетів, що прийшли на порт 12321 маршрутизатора, на порт 21 FTP-сервера локальної мережі. При такому налаштуванні для FTP-сесій усередині локальної мережі вказувати номер порту не потрібно.

    Інші параметри призначені для налаштування продуктивності та таймутів сесій. Їх можна залишити без змін. Інші розділи загальних налаштувань також можна залишити за замовчуванням:

    Welcome Message- Текст, який передається клієнту при підключенні.

    IP Binding- на якому мережевому інтерфейсі очікутимуться клієнтські підключення. За замовчуванням – на будь-якому, але можна вказати конкретний, наприклад – 192.168.1.3.

    IP Filter- Налаштування правил фільтрації IP-адрес клієнтів. За замовчуванням - Дозволено підключення для будь-яких IP.

    Розділ Passive mode settingsслужить для налаштувань пасивного режиму FTP і вимагатиме зміни практично всіх параметрів, прийнятих за умовчанням.

    Номери портів, які будуть використовуватися для передачі даних у пасивному режимі, потрібно задавати вручну, оскільки потрібно налаштування маршрутизатора для перенаправлення їх на мережевий інтерфейс, що слухається сервером. Тому потрібно встановити галочку на роздільну здатність режиму "Use custom port range" і задати діапазон - наприклад від 50000 до 50020 . Кількість портів, які слухає сервер, визначає граничну кількість одночасних сеансів передачі даних.

    Підрозділ IPv4 specificвизначає IP-адресу, яка буде відправлятися сервером у відповідь на команду PASV. В даному випадку, це має бути не власний IP сервер 192.168.1.3, а "білий IP" нашого підключення до Інтернету. Тому потрібно встановити режим "Use the following IP" і замість IP-адреси ввести ім'я, отримане під час реєстрації на сервісі динамічного DNS - myhost8.ddns.net. Як альтернатива, можна використовувати режим визначення зовнішньої IP-адреси засобами проекту FileZilla, увімкнувши. "Retrieve external IP Address from:". Даний варіант можна вибрати у випадках, коли немає можливості використовувати засіб динамічного DNS. Якщо передбачається використання FTP-сервера у своїй локальній мережі, потрібно встановити режим "Don"t use external IP for local connections" (не використовувати зовнішню IP-адресу для з'єднань усередині локальної мережі)

    Інші налаштування сервера можна залишити без змін або, при необхідності, виконати пізніше: Security settings- налаштування безпеки. За замовчуванням - заборонені з'єднання, які можуть бути використані для реалізації DDoS-атак

    Miscellaneous- Налаштування розмірів буферів та інших параметрів журналів та деяких команд FTP.

    Admin Interface settings- Налаштування панелі керування сервером. Можна вказати мережний інтерфейс, номер порту, що слухається, IP-адреси, з яких дозволено підключення до панелі керування і пароль.

    Logging- Налаштування журналу подій сервера. За промовчанням запис у файл не виконується.

    Speed ​​Limit- Налаштування обмеження швидкості передачі даних. За замовчуванням – без обмежень.

    Filetransfer compression- Налаштування стиснення файлів під час передачі. За замовчуванням – без стиску.

    SSL/TLS settingsувімкнення режиму шифрування переданих даних. За замовчуванням – без шифрування.

    Autoban- увімкнення автоматичного блокування користувачів, які підбирають пароль для підключення. За замовчуванням автоматичне блокування вимкнено.

    Налаштування перенаправлення портів та брандмауера

    Для того, щоб FTP-сервер був доступний з Інтернету, необхідно виконати налаштування маршрутизатора таким чином, щоб вхідні з'єднання, що прийшли на певні TCP-порти зовнішнього інтерфейсу, перенаправлялися на TCP-порти, що слухаються FTP-сервером внутрішньої мережі. Для різних моделей маршрутизаторів налаштування можуть відрізнятися термінологією, але зміст їх один і той же - прийнятий на зовнішньому (WAN) інтерфейс TCP-пакет з певним номером порту переслати в локальну мережу на потрібну IP-адресу і порт. Приклад налаштувань маршрутизатора D-Link DIR-320NRU для перенаправлення портів, що використовуються для пасивного режиму FTP:

    Пакети, прийняті на інтерфейсі з "білим IP" і мають номери портів в діапазоні 50000-50020, будуть перенаправлятися на IP-адресу, що задається полем "Внутрішній IP" (у нашому випадку - 192.168.1.3). Аналогічно створюється перенаправлення для порту 50021, якщо ви змінили номер стандартного порту, або порт 21 FTP-сервера, якщо ви залишили його без зміни.

    Після застосування цих налаштувань, FTP-сервер буде доступний за URL ftp://myhost8.ddns.net:50021або, для з'єднання всередині локальної мережі:

    ftp://192.168.1.3- якщо ви не змінювали стантартний номер порту (21) у налаштуваннях FTP-сервера.

    ftp://192.168.1.3:50021- якщо використовується нестандартний номер порту.

    Замість IP-адреси можна використовувати ім'я комп'ютера, якщо вона може бути дозволена в IP-адресу

    ftp://comp1

    ftp://comp1.mydomain.ru

    Діагностика проблем

    Якщо підключення до FTP-сервера не відбувається, можливо, виникли проблеми з блокуванням брандмауером з'єднань, необхідних для роботи створеного FTP-сервера. Якщо використовується вбудований брандмауер Windows, необхідно додати правило, що дозволяє мережну активність для служби "FileZilla FTP server". Якщо використовується сторонній брандмауер або антивірус з фільтрацією трафіку, необхідно створити відповідне правило наявними засобами налаштувань для дозволу мережних з'єднань. Можливі варіанти, коли налаштування робляться для вирішення будь-якої мережної активності конкретної програми, або для дозволу вибраних адрес та портів, що застосовуються до всіх програм.

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

    telnet localhost 21- якщо стандартний номер порту використовується.

    telnet localhost 50021- якщо змінено стандартний номер порту.

    Під час виконання цієї команди відбувається підключення до FTP-сервера за петльовим інтерфейсом і у вікні telnet має відобразитися запрошення сервера (Welcome Message). Якщо цього не відбувається, можливо, сервер зупинено, чи має місце конфлікт портів, або слухається не порт 21 (50021) . Для діагностики можна використовувати команду netstat:

    netstat -nab

    Параметри командного рядка означають:

    n- використовувати числові номери портів та адреси IP

    a- відображати всі з'єднання та слухаються порти

    b- відображати імена програм, які беруть участь у створенні з'єднань.

    Приклад відображених результатів виконання команди:

    Активні підключення

    Ім'я     Локальна адреса     Зовнішня адреса     Стан
    TCP         0.0.0.0:21                 0.0.0.0:0            
    TCP         0.0.0.0:135               0.0.0.0:0                
    RpcSs

    У колонці Локальна адресає значення 0.0.0.0:21 , Що говорить про те, що програма з ім'ям FileZilla Server.exeслухає (стан LISTENING) TCP порт з номером 21 всіх мережевих інтерфейсах. Якщо в налаштуваннях FTP-сервера було вказано конкретний інтерфейс та інший номер порту, це значення міститиме IP:порт, наприклад - 192.168.1.3:50021

    Для виведення результатів у посторінковому режимі, можна скористатися командою:

    netstat-nab | more

    Або використовувати пошук результатів за номером порту: netstat-nab | find ":21"

    Якщо сервер недоступний на непетлевому інтерфейсі, і доступний на петльовому - потрібно розбиратися з параметрами брандмауера.

    Налаштування користувачів та груп.

    Налаштування користувачів та груп виконується через меню "Edit" - "Users" ("Groups"). Групи створювати необов'язково, але іноді зручно, для випадків, коли є велика кількість користувачів, і їх права стосовно FTP-серверу різняться. Налаштування та груп та користувачів практично ідентичні:

    У цьому прикладі відображено результат додавання користувача FTP-сервера з ім'ям user1має повні права на запис, читання, видалення та злиття файлів, а також на перегляд вмісту, видалення та створення підкаталогів у каталозі C:\ftp\public

    На сторінці Generalвиконується додавання, видалення та зміна властивостей користувачів.
    На сторінці Shared Foldersвиконуються налаштування, що визначають перелік каталогів файлової системи, які використовуватимуться FTP-сервером для надання доступу до них за протоколом FTP. Кожному користувачеві або групі користувачів може надаватись свій каталог з певними правами по відношенню до його вмісту.
    На сторінці Speed ​​limitsможна задавати обмеження швидкості обміну даними.
    На сторінці IP Filterможна встановити правила фільтрації для IP-адреси користувача, вказавши адреси з яких заборонено або дозволено підключення до сервера.

    Список основних команд FTP

    ABOR - Перервати передачу файлу
    CDUP - Змінити директорію на вищу.
    CWD – Змінити поточну директорію.
    DELE - Видалити файл (DELE filename).
    HELP - Виводить список команд, що приймаються сервером.
    LIST – Повертає список файлів директорії. Список передається через з'єднання даних (20 порт).
    MDTM – Повертає час модифікації файлу.
    MKD - Створити директорію.
    NLST - Повертає список файлів директорії у більш короткому форматі, ніж LIST. Список передається через з'єднання даних (20 порт).
    NOOP - Порожня операція
    PASV - Увійти до пасивного режиму. Сервер поверне адресу та порт до якого потрібно підключитися, щоб забрати дані. Передача розпочнеться під час введення команд RETR, LIST тощо.
    PORT – Увійти в активний режим. Наприклад PORT 12,34,45,56,78,89. На відміну від пасивного режиму передачі даних сервер сам підключається до клієнта.
    PWD – Повертає поточну директорію сервера.
    QUIT - Вимкнутись
    REIN - Реініціалізувати підключення
    RETR - Завантажити файл. Перед RETR має бути команда PASV чи PORT.
    RMD - Видалити директорію
    RNFR та RNTO - Перейменувати файл. RNFR - що перейменовувати, RNTO - у що.
    SIZE - Повертає розмір файлу
    STOR - Завантажити файл на сервер. Перед STOR має бути команда PASV чи PORT.
    SYST - Повертає тип системи (UNIX, WIN,)
    TYPE - Встановити тип передачі файлу (A-текстовий ASCII, I - двійковий)
    USER - Ім'я користувача для входу на сервер

    Приклад FTP-сесії

    FTP-клієнт підключається до сервера з ім'ям користувача user1порожнім паролем і завантажує файл з ім'ям cpu-v. Червоним кольором виділено повідомлення FTP-сервера, синім – FTP-клієнта. Обмін директивами та параметрами може незначно відрізнятися для різних версій програмного забезпечення FTP-клієнта та FTP-сервера.

    Після підключення сервер передає клієнту відомості про себе:
    220-FileZilla Server version 0.9.45 beta
    220-written by Tim Kosse ( [email protected])
    220 Please visit http://sourceforge.net/projects/filezilla/
    Клієнт передає ім'я користувача:
    USER user1
    Сервер запитує введення пароля:
    331 Password required for user1
    Клієнт передає порожній пароль:
    PASS
    Сервер перевіряє обліковий запис користувача та повідомляє про початок сеансу:
    230 Logged on
    Клієнт запитує тип операційної системи на сервері:
    SYST
    Сервер повідомляє, що тип Unix, емульований Filezilla-сервером:
    215 UNIX emulated by FileZilla
    Клієнт запитує перелік параметрів, які підтримує сервер:
    FEAT
    Сервер відповідає переліку підтримуваних параметрів:
    211-Features:
    MDTM
    REST STREAM
    SIZE
    MLST type*;size*;modify*;
    MLSD
    UTF8
    CLNT
    MFMT
    211 End

    Клієнт запитує поточний каталог сервера:
    PWD
    Сервер повідомляє, що поточний каталог – кореневий ("/"):
    257"/" is current directory.
    Клієнт повідомляє, що передаватиме двійкові дані:
    TYPE I

    Сервер підтверджує тип даних, що передаються:
    200 Type set to I
    Клієнт повідомляє, що використовуватиме пасивний FTP-режим:
    PASV
    Сервер повідомляє про перехід у пасивний режим і передає IP та порт для пасивного FTP-режиму.
    227 Entering Passive Mode (212,248,22,114,195,97)
    Клієнт просить прийом файлу з ім'ям cpu-vз поточного каталогу сервера
    RETR cpu-v
    Сервер повідомляє про початок передачі:
    150 Opening data channel for file download від "/cpu-v"
    Після завершення сервер повідомляє про успішну передачу:
    226 Successfully transferred "/cpu-v"

    На закінчення додам, що проект Filezilla включає не тільки розробку та підтримку якісного безкоштовного FTP-сервера, але й популярного безкоштовного FTP-клієнта

    Стаття з коротким описом безкоштовного клієнта FTP для Linux, Mac OS і Windows. Даний FTP клієнт підтримує безліч прикладних протоколів передачі - FTP, FTP поверх SSL/TLS (FTPS), SSH File Transfer Protocol (SFTP), HTTP, SOCKS і FTP-Proxy. Іншими словами, Filezilla FTP Client – ​​це універсальне програмне забезпечення для прийому та передачі файлів по всіх сучасних прикладних протоколах між вузлами на різних платформах.

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

    У чому переваги використання FTP?

    Служба FTP в Інтернеті призначена для прийому та передачі різноманітних файлів. Вона має свої сервери, в яких зберігаються великі архіви з різними даними та файлами. У таких архівах є величезні обсяги абсолютно різної інформації. Є й дублюючі архіви, у яких інформація цілком ідентична між кількома серверами, їх називають дзеркалами.

    Переваги цієї служби полягають у кількох моментах:

    Що таке протокол FTP?

    Служба файлів FTP використовує протокол, який безпосередньо взаємодіє з протоколом на транспортному рівні, інакше TCP:

    • Початковий стандарт – RFC-114.
    • Останній – RFC-959.

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

    1. Керуюче з'єднання- воно призначене передачі команд серверу і отримання від нього вже оброблених відповідей. Для організації цього з'єднання потрібен протокол Telnet (надсилання запиту та очікування обробленої відповіді, після його отримання дає сигнал, що можливо передати команду).
    2.З'єднання наявних або всіх файлів, що посилаються і одержуються.Після встановлення Telnet-з'єднання передача файлів здійснюється шляхом логічного процесу, який організовує TCP, він перевіряє доступність портів у FTP-сервері.
    Такі постійно формуються, а в разі потреби ліквідуються.

    FTP-протокол може працювати у двох режимах:

    активному;
    - пасивному.

    Що таке FTP-клієнт?

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

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

    Є типи FTP-клієнта - так звані Наприклад, ReGet, Go! Zilla та багато інших. Завдяки ним користувач може здійснювати завантаження з будь-якого Web-сервера. Головна особливість таких програм у тому, що вони можуть інтегруватися під будь-який браузер автоматично перехоплювати необхідні файли для користувача. FTP-завантажувачі мають зручне керування, гарний інтерфейс і у разі обриву зв'язку відновлять докачування після його включення.

    Що мається на увазі під FTP-сервером?

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

    FTP-сервер – це обмежені системи, вони доступні лише зареєстрованим користувачам, при підключенні до них необхідно вводити логін та пароль. Є безліч так званих відкритих серверів, інакше їх ще називають анонімними. Щоб увійти туди, треба ввести логін - anonymous і пароль - password.

    Archie – пошукова програма для FTP-архівів

    Пошук необхідного FTP-сервера в інтернеті – завдання дуже трудомістке і складне, для його полегшення було розроблено спеціальний програмний модуль Archie. Працювати з ним можна через електронну пошту, через сесію Telnet або локально. Слід розуміти, що служба архівів FTP та archie – це абсолютно різні за можливостями технології. Найчастіше, щоб отримати можливість доступу до archie-сервера, користувач спочатку повинен звернутися до archie-клієнта.

    Для роботи через Telnet користувачу слід відкрити сесію Telnet, у потрібному рядку написати слово archie. Виглядає так: telnet archie.mcgill.са login: archie.
    Після появи рядок: archie>. Можна поцікавитись і можливостями сервера, ввівши в рядок команду: help.

    Як самостійно в Інтернеті?

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

    Є безліч програм, які дозволяють створити власний FTP-сервер на персональному комп'ютері. Однією з таких спеціалізованих програм GuildFTPd. Вона досить проста в установці та інтуїтивно зрозуміла, якщо знати деякі нюанси створення FTP. Спочатку її треба знайти на просторах інтернету та встановити на свій комп'ютер. Проблем із її встановленням не повинно виникнути. А ось у налаштуванні програми необхідно буде зробити деякі дії – це необхідно для подальшої коректної роботи створеної FTP-служби.

    Інтернет-служба передачі файлів FTP, створена через GuildFTPd

    Після завантаження та встановлення на комп'ютер цієї програми треба перейти в панель налаштувань (GuildFTPd options), там вийде кілька вкладок та пунктів. У категорії General знаходяться всі основні настройки, які визначають кількість з'єднань, номери портів та інші важливі параметри. Тут треба виконати всі необхідні налаштування. У кожного сервера вони індивідуальні і залежить лише від бажань творця.

    Тепер треба вибрати, яким саме методом створюватиметься сервер. Система GuildFTPd працює так, що майбутні користувачі повинні підрозділятися на групи, на підставі цього буде створюватись певний сервер: на основі персональних облікових записів або потрібної директорії.

    Який вид створюваного FTP-сервера вибрати? Сервер на основі персональних облікових записів

    Цей вид підходить тоді, коли організовується файловий сервер, яким користуватимуться знайомі. В цьому випадку для кожного окремого користувача можна буде створити персональну систему файлів.

    Для цього створюється група, їй дається назва, робиться загальний доступ до кореневого каталогу. Для цього треба натиснути кнопку Add і перейти в розділ Edit Path. Потім створюється база користувача, Admin, далі Add User, необхідно ввести ідентифікаційні дані (логін, пароль) всіх майбутніх користувачів створюваного сервера. Таких користувачів може бути будь-яка кількість, бажано відразу визначитися з ним, якщо, наприклад, буде користуватися людина 16. Служба FTP в інтернеті призначена для обміну документами між необмеженою кількістю людей.

    Коли основна база готова, за потреби може створюватись віртуальна файлова система під кожного користувача. Для цього треба знову пройти в Add – Edit Path, там вказати імена файлів та папок для кожного окремого логіну.

    Як створюється відкритий сервер FTP?

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

    Створити відкритий сервер набагато простіше, ніж із персональними акаунтами. У цьому випадку створюється лише один користувач, у рядку вказівки імені слід ввести anonymous. Також обов'язково треба зняти галочку, яка стоїть біля назви List. Далі залишається тільки закачати файлові каталоги, які будуть доступні для будь-якого користувача інтернету.

    Протокол FTP входить до стандартів Інтернету і служить передачі великих обсягів інформації. Перші специфікації, в яких був цей протокол, з'явилися в 1971 році. З того часу можливості FTP значно розширилися і складно собі уявити, як користувачі змогли б без нього обходитися, якщо їм потрібно було завантажити або завантажити в онлайн-сховище кілька гігабайт потрібних файлів. А скільки часу довелося б витратити, щоб перенести сайт із локальної машини на сервер, чи навпаки? Звичайно, можна скористатися архіватором, але якщо сервер не підтримує цю функцію? Страшно навіть уявити. Так що FTP – це досить корисний інструмент.

    Поняття "протокол" означає узгоджений формат обміну інформацією між двома пристроями. А як «file transfer protocol», що можна перекласти як «протокол передачі файлів». Для протоколу FTP використовує TCP-канал. Обмін побудований за принципом клієнт-сервер. Передавати за цим протоколом не можна, оскільки у ньому немає захисту даних і сервер передається відкритий текст. Звичайно, зазвичай для підключення до FTP-серверу потрібно проходити автентифікацію, але на це не варто надію, оскільки ідентифікатор і пароль користувача передається відкритим текстом.

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

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

    Як використовувати протоколFTPякщо ваша ОС не Windows

    Якщо ви віддаєте перевагу Linux, то можна ознайомитися з документацією доступних операцій, набравши команду $ man ftp. А для того щоб підключитися до FTP-сервера, потрібно набрати $ftp yoursite.at.domain. Найчастіше використовуються такі команди:

    • binary - зміна режиму передачу двійкових (нетекстових) файлів, наприклад, картинок;
    • ascii – переключення на передачу текстової інформації;
    • cd foldername - зміна поточного каталогу на віддаленому комп'ютері на папку, що входить до нього, з ім'ям foldername;
    • dir – перегляд усіх файлів у поточному каталозі віддаленого комп'ютера;
    • help - допомога щодо використання команд;
    • mget - одночасне завантаження декількох файлів;
    • put filename – служить для завантаження на віддалений ресурс локального файлу filename;
    • mput – завантаження на віддалений ресурс кількох файлів;
    • exit - завершення роботи з FTP та вихід у ОС.

    Також можна скористатися такими програмами, як gFTP, FOFF і FileZilla.

    Як використовувати протоколFTP, якщо ви віддаєте перевагу Windows

    В цьому випадку все набагато простіше, і вам підійде будь-який FTP-клієнт, який легко знайти у мережі. З безкоштовних найбільшою популярністю користуються такі програми, як FileZilla, FTPInfo, WinSCP. З'єднання за допомогою протоколу FTP можуть підтримувати такі популярні файлові менеджери, як Total Commander і FAR manager. Тож якщо ви не так часто використовуєте цей протокол, то ними цілком можна обійтися.

    Ну а якщо просто разово знадобилося щось завантажити, можна набрати в браузері замість URL приблизно таку команду:

    ftp://user: [email protected]:port, в якій

    site.at.domain - ім'я сервера,

    port – номер порту для підключення (зазвичай це 21, і його можна пропустити).

    Якщо потрібно підключитися до анонімного FTP, то використовується скорочений запис команди:

    ftp://host.at.domain:port

    Буває так, що при підключенні протоколу FTP виникають будь-які проблеми. У цьому випадку є сенс перевірити налаштування FireWall та антивірусу.

    Якщо ви давно читаєте цей блог, то можете пам'ятати про те, як я вирішив зібрати в ньому опис популярних (і не дуже) мережевих протоколів. Навіщо це мені потрібно, можна прочитати у статті Достатньо повний опис протоколу SMTP. Ось вирішив поповнити колекцію протоколом FTP, що повсюдно використовується для передачі файлів.

    1. Заходимо

    За традицією, відразу почну з прикладу:

    $ telnet example.ru 21
    Trying 192.168.0.1...
    Connected to example.ru
    Escape character is "^]".
    220-Welcome to Pure-FTPd
    You user number 5 of 100 дозволено.
    Local time is now 17:41. Server port: 21
    220 You will be disconnected after 15 minutes of inactivity.
    USER afiskon
    331 User afiskon OK. Password required
    PASS lamepassword
    230-User afiskon has group access to: coders
    230 ОК. Current restricted directory is /

    FTP-сервер зазвичай працює на 21 порту. У наведеному прикладі рядки, що починаються з цифр, надсилаються сервером, інші - клієнтом. Запити клієнта завжди складаються з одного рядка формату КОМАНДА [аргументи], а відповіді сервера можуть містити кілька рядків.

    Перший і останній рядки починається з трьох цифр, що є кодом відповіді, за якими йде текстовий опис відповіді, відокремлений від коду або пробілом, або тире. Якщо як роздільник використовується пробіл, значить рядок є останнім у відповіді (і, можливо, єдиним), інакше ми отримали перший рядок багаторядкової відповіді. Десь ми це вже бачили, чи не так?

    Існує п'ять груп відповідей сервера:

    Як видно з прикладу, все починається з посилки на сервер коду 220. Потім користувач повинен залогінитися за допомогою команд USER і PASS. Якщо все зроблено правильно, на першу сервер відповість кодом 331, а на другу - 230. Для анонімного входу (якщо він дозволений налаштуваннями сервера), як ім'я користувача слід вказати "anonymous", а як пароль - свій e-mail. Насправді зазвичай посилається або порожній e-mail, або щось типу [email protected].

    Як видно, пароль передається у відкритому вигляді, тому дуже бажано шифрувати FTP-з'єднання за допомогою SSL (це називається FTPS - FTP плюс SSL), а ще краще - передавати файли по SSH за допомогою утиліт scp, sftp або WinSCP. Перші дві є в будь-якій unix-системі та використовують для передачі файлів однойменні протоколи, що працюють поверх SSH. WinSCP написаний для Windows і зовні нагадує Total Commander, вміє працювати як із застарілим SCP (Secure Copy), так і SFTP (SSH File Transfer Protocol), що з'явилося лише у SSH-2.

    2. Оглядаємось

    Але щось мене не в той степ понесло. Після проходження аутентифікації (треба ж, більше не плутаю з авторизацією) FTP-сервер з радістю виконає наші команди. Ось їх список:

    Команда Очікуваний код Опис
    DELE 250 Видалити файл
    RMD 250 Видалити директорію
    CWD 250 Перейти до директорії
    MKD 257 Створити директорію
    PWD 257 Дізнатись поточну директорію
    QUIT 221 Закінчити роботу
    TYPE 200 Встановити тип передачі
    PORT 200 Перейти в активний режим
    PASV 227 Перейти у пасивний режим
    LIST 150, 226 Отримати вміст каталогу
    RETR 150, 226 Завантажити файл
    STOR 150, 226 Залити файл
    ABOR 426,226 Скасувати передачу
    RNFR 350 Вибрати файл для перейменування
    RNTO 250 Перейменувати файл

    Тут я перерахував лише основні команди, яких достатньо для написання повноцінного FTP-клієнта. Справа в тому, що в реальних умовах FTP-сервери дуже вибірково відносяться до підтримки команд, описаних у RFC959 та RFC3659. Отже, якщо ми хочемо отримати дійсно працююче застосування, а не сферичного коня у вакуумі, доведеться обмежитися лише командами з наведеного списку.

    Найпростіші команди - це QUIT, DELE, MKD, CWD та RMD. Просто командуємо та перевіряємо код, який повертається сервером. Якщо він дорівнює очікуваному, то все ОК, якщо ні — обробляємо помилку.

    MKD ftp_test
    257 "ftp_test" : The directory був успішно створений
    CWD ftp_test
    250 ОК. Current directory is /ftp_test
    CWD ..
    250 ОК. Current directory is /
    RMD ftp_test
    250 The directory був успішно removed

    Якби я писав FTP-клієнт, то код, який відповідає за виконання названих команд, виглядав би приблизно так:

    int code;
    char*dir;
    // ...
    if (code = rawcmd(250 , "RMD %s \r \n ", dir) )
    printf ("Error: %d \n ", code);
    else
    printf ("All done!" \n ") ;

    Ледве складніше з парсингом відповіді сервера на команду PWD:

    PWD
    257 "/ftp_test" є ваш поточний місцезнаходження

    Поточна директорія передається в єдиному (останньому?) рядку відповіді сервера, укладена у подвійні лапки. Якщо повне ім'я поточної директорії містить подвійні лапки, вони замінюються на дві лапки:

    PWD
    257 "/ftp""test" is your current location

    Для перейменування файлів використовується пара команд. RNFR та RNTO:

    RNFR old_file.zip
    350 Are you kidding?
    RNTO new_file.zip
    250 Done!

    Очевидно, це оптимізація, щоб буфер, у якому сервер читає команди клієнта, був порядку максимально допустимої довжини повного імені файлу, а чи не вдвічі більше. У 1971 році, коли було створено протокол, це могло бути важливо.

    Команда TYPEдозволяє встановити режим передачі файлів. Приклад:

    TYPE E
    200 TYPE is now EBCDIC
    TYPE A
    200 TYPE is now ASCII
    TYPE I
    200 TYPE is now 8-bit binary

    Наскільки я можу судити сьогодні ця команда вже застаріла і всі дані можна спокійно передавати в бінарному форматі (TYPE I). Цитата з Вікіпедії:

    Перші комп'ютери використовували формат, розміром байт, машинне слово, подвійне машинне слово, не кратне 8. Зазвичай вони були кратні шести. Вісім біт у байті було прийнято під час розробки системи машинних команд IBM System/360. Це стало міжнародним стандартом та з початку 1970-хбільшість комп'ютерів використовує байти, що складаються з 8 біт, і машинні слова, кратні 8.

    3. Діємо

    Особливість протоколу FTP – для виконання команд та передачі файлів використовуються різні з'єднання. Це загалом нормальне проектне рішення. Ми ж не знаємо, що там у цих файлах записано, а якщо передавати їх разом із командами, доведеться якось кодувати вміст файлу, щоб відрізнити його від команд. Навіщо збільшувати обсяг трафіку та ускладнювати протокол, коли можна просто відкрити нове з'єднання та надіслати файл, як є?

    При встановленні нового з'єднання хтось повинен власне з'єднуватись, а хтось з'єднання приймати. Якщо клієнт відкриває порт, а сервер коннектиться до нього, режим передачі файлу називається активним. У протилежному випадку – пасивним. Завдяки тому, що багато користувачів Інтернету сьогодні сидять за NAT, зазвичай використовується пасивний режим. І це не дуже добре, тому що кількість портів у сервера обмежена.

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

    Для переходу до пасивного режиму використовується команда PASV, для переходу в активний PORT:

    PORT 192,168,10,1,21,133
    200 PORT command successful
    PASV
    227 Entering Passive Mode (192,168,0,1,21,216)

    Як нескладно здогадатися, за допомогою цифр кодується IP-адреса та порт для з'єднання. Допустимо, ми знаходимося в пасивному режимі та хочемо встановити з'єднання для передачі даних:

    $ telnet 192.168.0.1 `expr 21 \* 256 + 216`
    Trying 192.168.0.1...
    Connected to example.ru
    Escape character is "^]".

    Після чого можемо, наприклад, переглянути вміст поточного каталогу, забравши команду LIST:

    LIST
    150 Accepted data connection
    226-Options: -a -l
    226 5 матчів total

    Дивимося на висновок telnet:

    drwx------ 5 afiskon coders 512 Jul 7 11:35 .
    drwx------ 5 afiskon coders 512 Jul 7 11:35 ..
    drwxr--r-- 3 afiskon coders 512 Jun 6 14:30 сайт
    drwxr-xr-x 2 afiskon coders 1024 Jul 7 00:16 logs
    drwxr--r-- 2 afiskon coders 512 Jun 6 14:30 tmp
    Connection closed by foreign host.

    Абсолютно аналогічно відбувається скачування та аплоад файлів, тільки використовуються команди RETR (файл)і STOR (файл)відповідно. Команди RETR, STOR та LIST можна перервати у процесі виконання за допомогою команди ABOR, у відповідь на яку сервер повинен відповісти 426 "передача перервана", а потім - 226 "скасування операції відбулася успішно".

    4. Висновок

    На цьому я, мабуть, закінчу свою розповідь. Вийшло 9 Кб тексту проти 130 Кб RFC959. За цією статтею можна написати нескладний FTP клієнт або сервер, я перевіряв! Найголовніше — це протестувати його на сумісність із максимально можливою кількістю ПЗ, оскільки, як я вже зазначав, у світі FTP мало хто суворо слідує RFC. Ну і останнє - пам'ятайте золоте правило "Be liberal with input, strict with output".