Порівняння HTTP та FTP для передачі файлів


125

Які переваги (або обмеження) одного над іншим для передачі файлів через Інтернет?

(Я знаю про безпечні форми обох протоколів. Я хотів би почути порівняння через особистий досвід щодо продуктивності, надійності, обмеження розміру файлів тощо).

Відповіді:


99

Ось порівняння продуктивності цих двох. HTTP є більш чутливим до відповіді на запит невеликих файлів, але FTP може бути кращим для великих файлів при правильній настройці. Зазвичай FTP вважається швидшим. FTP вимагає каналу управління, а стан, крім TCP, підтримується, але HTTP цього не підтримує. Є 6 пакетних передач до початку передачі даних у FTP, але лише 4 у HTTP.

Я думаю, що правильно налаштований рівень TCP матиме більший вплив на швидкість, ніж різниця між протоколами шару додатків. Програма TCP, що розбирається в програмі Sun Blueprint, має детальну інформацію.

Ось ще одне добре порівняння індивідуальних характеристик кожного протоколу.


22
+1 хороша відповідь. Я думаю, що день FTP минув і минув, він вже мало стосується. Це також абсолютна свиня для реалізації.
skaffman

7
Який розмір мається на увазі під "малими" або "великими" файлами?
Урбікоз

Посилання порівняння ефективності вказує на аналіз очікуваних вигод від впровадження P-HTTP, T / TCP та S-TCB. Ні де не згадується FTP. Також порушено правильно налаштоване посилання.
Trisped

@Trisped Ви читали посилання порівняння ефективності? Є 12 посилань на FTP, і в першому розділі йдеться про те, що "Протокол HTTP був спочатку розроблений для зменшення неефективності FTP ...", а потім продовжує пояснювати. Я також оновив посилання "Розуміння налаштування TCP" ... схоже, Oracle викинув усі старі програми Sun Blueprints.
Джон Еллінвуд

2
16 серпня 1996 року ... справді? Навіть у своїй відповіді 2009 року ви не могли очікувати, що це буде представником поточного стану справ. -1
користувач541686

29

Я просто орієнтував передачу файлів як на FTP, так і на HTTP:

  • понад два дуже хороших підключення до сервера
  • використовуючи той же .zip файл 1 Гб
  • в тих же мережевих умовах (тестуються одна за одною)

Результат:

  • за допомогою FTP: 6 хвилин
  • за допомогою HTTP: 4 хвилини
  • за допомогою одночасного програмного забезпечення для завантаження http ( fdm): 1 хвилина

Отже, в основному в ситуації "реального життя":

1) HTTP швидше, ніж FTP, коли завантажується один великий файл.

2) HTTP може використовувати паралельне завантаження, що робить його в 6 разів швидше, ніж FTP, залежно від умов мережі.


18
Це здається дуже анекдотичним.
spenibus

5
@anecdotal він наводив цифри (факти досліджень), які є менш анекдотичними, ніж будь-яка інша відповідь на даний момент.
користувач1133275

Чи можна відтворити часи, принаймні приблизно?
masterxilo

кілька днів тому я спробував завантажити 90MB файлів з http, не вдалося мережею на 2 Мб. Але з ftp (той же сервер, той самий файл, та сама мережа через мобільну точку доступу) успіх завантаження. Я не знаю чому.
Рахмат Іхсан

1
ftp швидше для одних файлів за рахунок менших накладних витрат. Якщо ваше тестування отримало іншу відповідь, спробуйте іншого клієнта (або менш вірогідно, іншого сервера). http не може завантажуватись швидше, ніж максимальна швидкість передачі даних, і будь-який паралельний варіант, який намагається перевищити, введе протокол накладних витрат. Vs. Мультифайли можна передавати назад до спини зі швидкістю лінії через FTP, без накладних протоколів. Паралельний параметр FTP використовує декілька підключень TCP, які зазвичай перевершують одноточкові з'єднання (наприклад, SMB3.1 vSMB2.1, 3.x може використовувати багатоз'єднання).
Астара

27

Багато брандмауерів скидають вихідні з'єднання, які не мають портів 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 ™)


13

Одне враження полягає в тому, що FTP може використовувати нестандартні порти, що може ускладнити отримання хоч брандмауерів (особливо якщо ви використовуєте SSL). HTTP зазвичай знаходиться на відомому порту, тому це рідко є проблемою.

Якщо ви все-таки вирішили використовувати FTP, обов’язково прочитайте про Активний та Пасивний FTP .

З точки зору продуктивності, в кінці дня вони обидва шпигують файли безпосередньо по TCP-з'єднанням, тому повинно бути приблизно однакове.


-5

Обидва вони використовують TCP як транспортний протокол, але HTTP використовує стійке з'єднання, що робить продуктивність TCP кращою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.