Відповіді:
Ось порівняння продуктивності цих двох. HTTP є більш чутливим до відповіді на запит невеликих файлів, але FTP може бути кращим для великих файлів при правильній настройці. Зазвичай FTP вважається швидшим. FTP вимагає каналу управління, а стан, крім TCP, підтримується, але HTTP цього не підтримує. Є 6 пакетних передач до початку передачі даних у FTP, але лише 4 у HTTP.
Я думаю, що правильно налаштований рівень TCP матиме більший вплив на швидкість, ніж різниця між протоколами шару додатків. Програма TCP, що розбирається в програмі Sun Blueprint, має детальну інформацію.
Ось ще одне добре порівняння індивідуальних характеристик кожного протоколу.
Я просто орієнтував передачу файлів як на FTP, так і на HTTP:
Результат:
fdm
): 1 хвилинаОтже, в основному в ситуації "реального життя":
1) HTTP швидше, ніж FTP, коли завантажується один великий файл.
2) HTTP може використовувати паралельне завантаження, що робить його в 6 разів швидше, ніж FTP, залежно від умов мережі.
Багато брандмауерів скидають вихідні з'єднання, які не мають портів 80 або 443 (http & https); деякі навіть переривають з'єднання з тими портами, які не є HTTP (S). FTP може або не може бути дозволено, не кажучи про активні / PASV режими.
Крім того, HTTP / 1.1 дозволяє набагато краще часткові запити ("надсилати лише з байту 123456 до кінця файлу"), умовні запити та кешування ("надсилати лише у випадку зміни вмісту / якщо змінено останню дату") та стиснення вмісту (gzip).
HTTP набагато простіше використовувати через проксі.
З моїх анекдотичних доказів, HTTP легше зробити роботу з перерваними / повільними / розмитими з'єднаннями; наприклад, не потрібно (повторно) встановлювати сеанс входу до (повторного) ініціювання передачі.
Інакше, HTTP не має статусу без громадянства, тому вам доведеться зробити аутентифікацію та створити слід «хто робив коли».
Єдина різниця в швидкості, яку я помітив, - це передача безлічі невеликих файлів: HTTP з конвеєрним рухом швидше (зменшує обертання, особливо помітно в мережах з високою затримкою).
Зауважте, що HTTP / 2 пропонує ще більше оптимізацій, тоді як протокол FTP не спостерігається жодних оновлень протягом десятиліть (і навіть розширення до FTP мають незначне сприйняття користувачами). Отже, якщо ви не переносите файли через машину часу, HTTP, здається, перемогла.
(Дотично: є протоколи, які краще підходять для передачі файлів, наприклад, rsync
або BitTorrent, але у них не так багато розуму, тоді як HTTP - Everywhere ™)
Одне враження полягає в тому, що FTP може використовувати нестандартні порти, що може ускладнити отримання хоч брандмауерів (особливо якщо ви використовуєте SSL). HTTP зазвичай знаходиться на відомому порту, тому це рідко є проблемою.
Якщо ви все-таки вирішили використовувати FTP, обов’язково прочитайте про Активний та Пасивний FTP .
З точки зору продуктивності, в кінці дня вони обидва шпигують файли безпосередньо по TCP-з'єднанням, тому повинно бути приблизно однакове.