Сравнение HTTP и FTP для передачи файлов - PullRequest
108 голосов
/ 04 апреля 2009

Каковы преимущества (или ограничения) одного перед другим для передачи файлов через Интернет?

(Мне известны безопасные формы обоих протоколов. Я хотел бы услышать сравнения на основе личного опыта с точки зрения производительности, надежности, ограничений размера файлов и т.

Ответы [ 5 ]

85 голосов
/ 04 апреля 2009

Вот сравнение производительности из двух. HTTP более отзывчив на запрос-ответ для небольших файлов, но FTP может быть лучше для больших файлов, если настроен правильно. Обычно раньше FTP считался быстрее. FTP требует, чтобы канал управления и состояние поддерживались помимо состояния TCP, а HTTP - нет. Перед отправкой данных по FTP передается 6 пакетов, а по HTTP - только 4.

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

Вот еще одно хорошее сравнение индивидуальных характеристик каждого протокола.

25 голосов
/ 21 июля 2015

Я только что протестировал передачу файлов по FTP и HTTP:

  • через два очень хороших соединения с сервером
  • , используя тот же 1 ГБ ZIP-файл
  • в одинаковых условиях сети (проверено одно за другим)

Результат:

  • с использованием FTP: 6 минут
  • с использованием HTTP: 4 минуты
  • с использованием параллельного программного обеспечения http-загрузчика (fdm): 1 минута

Итак, в основном в реальной ситуации:

1) HTTP быстрее, чем FTP, при загрузке одного большого файла.

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

25 голосов
/ 04 апреля 2009

Многие брандмауэры сбрасывают исходящие соединения, которые не подключены к портам 80 или 443 (http & https); некоторые даже сбрасывают соединения с теми портами, которые не являются HTTP (S). FTP может или не может быть разрешено, не говоря уже об активных / PASV режимах.

Кроме того, HTTP / 1.1 допускает гораздо лучшие частичные запросы («только отправка из байта 123456 в конец файла»), условные запросы и кэширование («только отправка, если содержимое изменилось / если дата последнего изменения изменилась») и сжатие контента (gzip).

HTTP гораздо проще использовать через прокси.

Исходя из моего анекдотического свидетельства, HTTP легче заставить работать с пропущенными / медленными / нестабильными соединениями; например нет необходимости (пере) устанавливать сеанс входа в систему до (пере) инициирования передачи.

OTOH, HTTP не имеет состояния, поэтому вам придется выполнять аутентификацию и составлять список «кто что сделал когда» сам.

Единственное различие в скорости, которое я заметил, - это передача большого количества маленьких файлов: HTTP с конвейерной передачей работает быстрее (сокращает количество обращений, особенно в сетях с высокой задержкой).

Обратите внимание, что HTTP / 2 предлагает еще больше оптимизаций, в то время как протокол FTP не видел обновлений в течение десятилетий (и даже расширения FTP имеют незначительное восприятие пользователями). Так что, если вы не передаете файлы через машину времени, похоже, HTTP победил.

(Тангенциально: существуют протоколы, которые лучше подходят для передачи файлов, такие как rsync или BitTorrent, но у них не так много общего, в то время как HTTP - это Everywhere ™)

12 голосов
/ 04 апреля 2009

Одним из соображений является то, что FTP может использовать нестандартные порты, что может затруднить получение доступа через брандмауэры (особенно если вы используете SSL). HTTP обычно находится на известном порту, поэтому это редко является проблемой.

Если вы решили использовать FTP, обязательно прочитайте о Активном и пассивном FTP .

С точки зрения производительности, в конце концов они оба изрыгают файлы напрямую по TCP-соединениям, поэтому должны быть примерно одинаковыми.

0 голосов
/ 25 сентября 2014

Оба они используют TCP в качестве транспортного протокола, но HTTP использует постоянное соединение, что повышает производительность TCP.

...