Відповіді:
Активний та пасивний - це два режими роботи FTP.
Для фону FTP фактично використовує два канали між клієнтом і сервером, командні та канали даних, які насправді є окремими TCP-з'єднаннями.
Командний канал призначений для команд та відповідей, тоді як канал даних фактично передає файли.
Такий поділ інформації команди та даних на окремі канали - чудовий спосіб можливості відправляти команди на сервер, не вимагаючи чекати завершення поточної передачі даних. Відповідно до RFC, це призначено лише для підмножини команд, таких як вихід, припинення поточної передачі та отримання статусу.
В активному режимі клієнт встановлює командний канал, але сервер відповідає за встановлення каналу даних. Це насправді може бути проблемою, якщо, наприклад, клієнтська машина захищена брандмауерами і не дозволить несанкціоновано запитувати сеанси від сторонніх сторін.
У пасивному режимі клієнт встановлює обидва канали. Ми вже знаємо, що він встановлює командний канал в активному режимі, і він робить те ж саме тут.
Однак він просить сервер (на командному каналі) почати прослуховування через порт (на розсуд серверів), а не намагатися встановити з'єднання назад з клієнтом.
В рамках цього сервер також повертає клієнту номер порту, який він вибрав для прослуховування, щоб клієнт знав, як до нього підключитися.
Після того, як клієнт це знає, він може успішно створити канал даних і продовжити.
Більш детальна інформація доступна в RFC: https://www.ietf.org/rfc/rfc959.txt
Нещодавно я наштовхнувся на це питання на своєму робочому місці, тому думаю, що тут слід щось більше сказати. Я буду використовувати зображення, щоб пояснити, як FTP працює як додаткове джерело для попередньої відповіді.
Активний режим:
Пасивний режим:
В конфігурації активного режиму сервер намагатиметься підключитися до випадкового порту на стороні клієнта. Тож існує ймовірність, що цей порт не був би одним із заздалегідь визначених портів. В результаті, брандмауер заблокує спробу підключення до нього, і з'єднання не буде встановлено.
Пасивна конфігурація не матиме цієї проблеми, оскільки клієнт буде тим, хто ініціює з'єднання. Звичайно, можливо, і на стороні сервера є брандмауер. Однак, оскільки очікується, що сервер отримає більшу кількість запитів на з'єднання порівняно з клієнтом, тоді адміністратору сервера було б логічно адаптуватися до ситуації та відкрити вибір портів для задоволення конфігурацій пасивного режиму.
Тож найкраще буде налаштувати сервер для підтримки пасивного режиму FTP. Однак пасивний режим зробить вашу систему вразливою до атак, оскільки клієнти повинні підключатися до випадкових портів сервера. Таким чином, для підтримки цього режиму не тільки, якщо ваш сервер повинен мати кілька портів, ваш брандмауер повинен також дозволяти проходити з'єднання з усіма цими портами!
Щоб пом'якшити ризики, хорошим рішенням було б вказати діапазон портів на вашому сервері, а потім дозволити лише той діапазон портів на вашому брандмауері.
Для отримання додаткової інформації, будь ласка, прочитайте офіційний документ .
Перероблена версія моєї статті Режими підключення FTP (Активне проти Пасивного) :
Режим з'єднання FTP (активний або пасивний) визначає спосіб встановлення з'єднання даних. В обох випадках клієнт створює з'єднання управління TCP з командним портом сервера FTP 21. Це стандартне вихідне з'єднання, як і будь-який інший протокол передачі файлів (SFTP, SCP, WebDAV) або будь-який інший клієнтський додаток TCP (наприклад, веб-браузер ). Так, зазвичай не виникає проблем при відкритті керуючого з'єднання.
Якщо протокол FTP є складнішим порівняно з іншими протоколами передачі файлів, це передача файлів. Хоча інші протоколи використовують одне і те ж з'єднання як для управління сеансом, так і для передачі файлів (даних), протокол FTP використовує окреме з'єднання для передачі файлів і списків каталогів.
В активному режимі клієнт починає прослуховувати на випадковому порту для вхідних з'єднань даних із сервером (клієнт відправляє команду FTP, PORT
щоб повідомити сервер, на якому порту він слухає). В даний час типово, що клієнт знаходиться за брандмауером (наприклад, вбудованим брандмауером Windows) або маршрутизатором NAT (наприклад, модемом ADSL), не в змозі прийняти вхідні TCP-з'єднання.
З цієї причини пасивний режим був введений і в основному використовується в наш час. Використання пасивного режиму є кращим, оскільки більшість складної конфігурації проводиться лише один раз на стороні сервера, досвідченим адміністратором, а не індивідуально на стороні клієнта (можливо) недосвідченими користувачами.
У пасивному режимі клієнт використовує керування з'єднанням для відправлення PASV
команди на сервер, а потім отримує IP-адресу сервера та номер порту сервера від сервера, який клієнт потім використовує для відкриття з'єднання даних з IP-адресою сервера та сервером номер порту отримано.
У пасивному режимі більша частина конфігураційного навантаження лежить на стороні сервера. Адміністратор сервера повинен налаштувати сервер, як описано нижче.
Брандмауер та NAT на стороні FTP-сервера повинні бути налаштовані не тільки для дозволу / маршрутизації вхідних з'єднань на FTP-порт 21, але й діапазону портів для вхідних з'єднань даних. Зазвичай програмне забезпечення сервера FTP має параметр конфігурації для установки діапазону портів, які сервер буде використовувати. І той самий діапазон має бути відкритий / маршрутизований на брандмауері / NAT.
Коли FTP-сервер стоїть за NAT, він повинен знати, що це зовнішня IP-адреса, щоб він міг надати його клієнту у відповіді на PASV
команду.
В активному режимі більша частина навантаження на конфігурацію лежить на стороні клієнта.
Брандмауер (наприклад, брандмауер Windows) та NAT (наприклад, правила маршрутизації модему ADSL) на стороні клієнта повинні бути налаштовані так, щоб дозволити / прокласти ряд портів для вхідних з'єднань даних. Щоб відкрити порти в Windows, перейдіть до Панелі управління> Система та безпека> Брандмауер Windows> Додаткові налаштування> Вхідні правила> Нове правило . Для маршрутизації портів на NAT (якщо такі є) див. Його документацію.
Коли у вашій мережі є NAT, клієнт FTP повинен знати свою зовнішню IP-адресу, яку WinSCP потрібно надати серверу FTP за допомогою PORT
команди. Так що сервер може правильно підключитися назад до клієнта, щоб відкрити з'єднання для передачі даних. Деякі клієнти FTP здатні автоматично визначати зовнішню IP-адресу, деякі повинні бути налаштовані вручну.
Деякі міжмережеві стіни / NAT намагаються автоматично відкривати / закривати порти даних, перевіряючи з'єднання FTP-контролю та / або перекладаючи IP-адреси з'єднання даних у трафік з'єднання управління.
З таким брандмауером / NAT, наведена вище конфігурація не потрібна для простого незашифрованого FTP. Але це не може працювати з FTPS, оскільки трафік з'єднання управління зашифрований, а брандмауер / NAT не може перевірити його і не змінити.
Активний режим: -сервер ініціює з'єднання.
Пасивний режим: -client ініціює з'єднання.
Активний режим - клієнт видає сервер команду PORT, сигналізуючи про те, що він "активно" надасть IP-номер та номер порту, щоб відкрити З'єднання даних назад клієнту.
Пасивний режим - Клієнт видає команду PASV, щоб вказати, що він буде «пасивно» чекати, коли сервер подасть IP-номер та номер порту, після чого клієнт створить Підключення даних до сервера.
Вище є гарних відповідей, але ця публікація в блозі містить корисну графіку і дає досить ґрунтовне пояснення: https://titanftp.com/2018/08/23/what-is-the-difference-bet between-active-and -пасивний-ftp /