Сравнение HTTP и FTP для передачи файлов
Каковы преимущества (или ограничения) одного над другим для передачи файлов через Интернет?
(Я знаю об защищенных формах обоих протоколов. Я бы хотел услышать сравнения с помощью личного опыта с точки зрения производительности, надежности, ограничений размера файла и т. Д.).
- Как использовать Simple HTTP-клиент в Android?
- htaccess перенаправляет для не-www как http, так и https
- Android HttpPost: как получить результат
- Каков предел для параметров QueryString / GET / URL
- HTTP и HTTPS iframe
- Локальный сайт по умолчанию - https
- В каких случаях HTTP_REFERER будет пустым
- Http получить из оболочки в Mac OS X
- Что означает код состояния HTTP 0
- Как отправить разрыв строки с помощью curl?
- Можно ли кэшировать методы POST в HTTP?
- Ubuntu IPTables позволяет разрешить только 1 страну
- HTTP POST с параметрами запроса URL - хорошая идея или нет?
Вот сравнение производительности двух. HTTP более отзывчив для запросов-ответов небольших файлов, но FTP может быть лучше для больших файлов при правильной настройке. Обычно FTP считался быстрее. FTP требует, чтобы канал управления и состояние поддерживались помимо состояния TCP, но HTTP нет. Перед передачей данных по FTP передается 6 пакетов, но только 4 в HTTP.
Я думаю, что правильно настроенный уровень TCP будет иметь большее влияние на скорость, чем разница между протоколами уровня приложения. В Sun Blueprint Общие сведения о настройке TCP имеют подробную информацию.
Имеет еще одно хорошее сравнение индивидуальных характеристик каждого протокола.
Многие брандмауэры отбрасывают исходящие соединения, которые не относятся к портам 80 или 443 (http и https); некоторые даже отбрасывают соединения с теми портами, которые не являются HTTP (S). FTP может или не может быть разрешен, а не говорить о режимах active / PASV.
Кроме того, HTTP / 1.1 разрешает намного лучшие частичные запросы («только отправлять с байта 123456 в конец файла»), условные запросы и кеширование («только отправлять, если контент изменен / если последний изменен-дата изменен») и сжатие содержимого (GZIP).
HTTP гораздо проще использовать через прокси.
Из моих анекдотических доказательств HTTP легче выполнять работу с отброшенными / медленными / шелушащимися соединениями; например, не требуется (повторно) устанавливать сеанс входа в систему до (повторного) начала передачи.
OTOH, HTTP не имеет апатрида, поэтому вам нужно будет сделать аутентификацию и построить след «кто сделал то, что», когда вы сами.
Единственная разница в скорости, которую я заметил, – это передача большого количества небольших файлов: HTTP с конвейерной обработкой быстрее (уменьшает округлые поездки, особенно заметные в сетях с высокой задержкой).
Обратите внимание, что HTTP / 2 предлагает еще больше оптимизаций, тогда как протокол FTP не видел каких-либо обновлений в течение десятилетий (и даже расширения FTP имеют незначительное поглощение пользователями). Таким образом, если вы не передаете файлы через машину времени, HTTP, похоже, выиграл.
(Тангенциально: существуют протоколы, которые лучше подходят для передачи файлов, такие как rsync
или BitTorrent, но у них не так много разума, тогда как HTTP – это Everywhere ™)
Я просто сравнивал передачу файлов по FTP и HTTP:
- над двумя очень хорошими подключениями к серверу
- используя тот же 1GB .zip-файл
- при тех же условиях сети (проверенных один за другим)
Результат:
- с использованием FTP: 6 минут
- используя HTTP: 4 минуты
- используя параллельное программное обеспечение для скачивания http (
fdm
): 1 минута
Итак, в основном в ситуации «реальной жизни»:
1) HTTP-загрузка быстрее, чем FTP при загрузке одного большого файла.
2) HTTP может использовать параллельную загрузку chunk, что делает ее в 6 раз быстрее FTP в зависимости от условий сети.
Одно из соображений заключается в том, что FTP может использовать нестандартные порты, что может затруднить получение брандмауэров (особенно если вы используете SSL). HTTP обычно находится на известном порту, поэтому это редко бывает проблемой.
Если вы решите использовать FTP, обязательно прочитайте об Active и Passive FTP .
Что касается производительности, то в конце концов они оба извергают файлы непосредственно по TCP-соединениям, поэтому они должны быть примерно одинаковыми.
Оба они используют TCP в качестве транспортного протокола, но HTTP использует постоянное соединение, что повышает производительность TCP.