Перш ніж роз’яснити різницю між активним та пасивним режимами роботи FTP, слід встановити, що таке сам FTP і як він працює. Англомовна абревіатура FTP розшифровується як File Transfer Protocol , що у перекладі українською означає «протокол передачі файлів». Він призначений для встановлення з’єднання між клієнтом (користувачем) та сервером.

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

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

При активному режимі роботи, клієнт встановлює керуєче з’єднання з сервером, а ось підключення для передавання даних здійснює вже сам сервер. При пасивному режимі роботи підключення для передавання даних, як і керуюче з’єднання з сервером ініціюється лише клієнтом. Тобто, в активному режимі сервер підключається до клієнта для передачі даних, а в пасивному — клієнт до серверу.

Розглянемо ці режими наочно.

Активний режим FTP

Як в активному, так і пасивному режимі, встановлення з’єднання починається з відправки запиту клієнтом на сервер. Спочатку встановлюється керуюче з’єднання. Для цього на клієнті створюється тимчасовий порт з номером в діапазоні від 1024 до 65535 для встановлення керуючого з’єднання, а також порт для передавання даних. В активному режимі все відбувається так:

  1. Клієнт посилає з тимчасового порту діапазоном 1024-65535 запит на порт сервера номер 21.
  2. Сервер відповідає на тимчасовий порт клієнта (у прикладі порт 1036).
  3. Клієнт підтверджує встановлення з’єднання.
  4. Клієнт відправляє команду PORT , яка говорить про використання активного режиму FTP, свою IP-адресу, а також номер порту для встановлення з’єднання для передавання даних, до якого підключиться сервер (у прикладі порт 1037).
  5. Команда підтверджується сервером.
  6. Клієнт задає серверу команди для роботи з FTP.
  7. Сервер створює з’єднання для передавання даних. Для цього він надсилає запит із 20 порту на вказаний клієнтом у четвертому пункті порт (1037).
  8. Клієнт відповідає на запит.
  9. Сервер підтверджує встановлення з’єднання та дає клієнту можливість передавати дані.

Схематично це можна виразити в наступному вигляді:

Активний режим FTP

Пасивний режим FTP

У пасивному режимі процедура встановлення з’єднання для передавання даних дещо відрізняється. Дії відбуваються так:

  1. Клієнт посилає з тимчасового порту діапазоном 1024-65535 запит на порт сервера номер 21.
  2. Сервер відповідає на тимчасовий порт клієнта (у прикладі порт 1036 ).
  3. Клієнт підтверджує встановлення з’єднання.
  4. Клієнт відправляє команду PASV, яка говорить про використання пасивного режиму FTP.
  5. Сервер підтверджує роботу в пасивному режимі, посилає свою IP-адресу, а також номер порту для встановлення з’єднання передачі даних, до якого підключиться клієнт (у прикладі 2154 ).
  6. З порту передачі даних (у прикладі 1037) клієнт посилає запит на встановлення з’єднання на виданий сервером порт (2154).
  7. Сервер підтверджує встановлення з’єднання.
  8. Клієнт встановлює з’єднання.
  9. Клієнт задає команди серверу (з порту керуючого на порт 21 , у прикладі — з порту 1036 на порт 21 ), після чого можлива передача даних.

Уявімо це у вигляді схеми:

Пасивний режим FTP

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