Почему Dropbox может быть очень быстрым по сравнению с FTP?

Я хотел бы знать, почему технически Dropbox намного быстрее, чем FTP? Какую технологию он использует?

Я не говорю о файлах различий, я говорю о передаче новых файлов в обоих случаях, Dropbox намного быстрее.

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

30
задан Peter Mortensen
03.12.2022 20:29 Количество просмотров материала 3396
Распечатать страницу

6 ответов

для этого может быть несколько причин.

Протокол FTP far из эффективных.

  1. для передачи по FTP требуется по крайней мере два соединения (одно для управления и одно для данных), где DropBox может использовать только одно соединение HTTP. Кроме того, подключение для передачи данных для сеанса FTP может быть открыт с сервера на ваш клиент, и если вы NATed это может произойти сбой, так что ваш FTP-клиент может пытаться подключиться таким образом вокруг, сбой затем стараюсь наоборот.

  2. существует много to-ing и fro-ing на FTP-соединение. Чтобы отправить файл, клиент должен отправить как минимум две команды (одну для открытия подключения к данным и одну для начала отправки) и каждый раз, когда он должен ждать ответа сервера, добавляя дополнительную задержку. Так же, как эти два приема-передачи в файле есть несколько команд-ответных обходов для начального соединения-один для отправки имени пользователя, один для пароля, и по крайней мере, один, чтобы установить параметры передачи (чтобы убедиться, что сервер ожидает двоичные, а не ASCII, данные). Клиент может также выполнить несколько дополнительных команд для получения информации от сервера о себе. Dropbox, скорее всего, будет использовать только один HTTP-запрос или не более двух (один для аутентификации, один для отправки данных).

  3. кроме того, в зависимости от того, какой клиент вы используете для передачи FTP (который вы не указываете, было бы неплохо отредактировать вопрос для включения этой информации) это может быть отбрасывание соединения после каждой операции отправки и повторное подключение в следующий раз. Не исключено, что DropBox поддерживает соединение открытым в течение некоторого времени для целей длительного опроса, чтобы реагировать, как только это возможно, на новые данные, которые этот клиент должен загрузить, поэтому, пока ему нужно будет создать новое соединение HTTP, чтобы отправить файл, ему не нужно будет проходить повторную проверку подлинности.

  4. Это не маловероятно, что DropBox клиент сжимает данные перед отправкой (чтобы улучшить скорость и сохранить пропускную способность), где ваш FTP-клиент не будет. Таким образом, даже для больших файлов (если они не предварительно сжаты или зашифрованы) DropBox и подобные утилиты могут быть быстрее, чем базовая передача FTP с некоторым запасом.

для больших файлов первые три пункта выше побледнеют по сравнению со временем, затраченным на фактическую передачу данных, но пункт 4 все еще может быть весьма важным. Для малых файлы все дополнительные настройки добавлен протокол FTP может быть в пару раз больше, чем время, необходимое для собственно передачи данных.

31
отвечен David Spillett 2022-12-05 04:17

Как уже упоминалось, Dropbox может пропускать части файлов, которые не изменились. Но также,Dropbox пропустит загрузку файлов, если у него уже есть копия на стороне сервера (тот, который вы или кто-то уже загрузил).

таким образом, если вы пытаетесь загрузить файл, идентичный файлу, который уже есть в Dropbox, загрузка пропускается (и другие связанные машины могут начать загрузку с серверов Dropbox). Если вы загружаете файл, который почти идентичен другому, уже загруженному файлу (неясно, должен ли уже загруженный файл быть " вашим’ или мог быть получен от любого пользователя), тогда он просто отправит достаточно частей файла, чтобы воссоздать его на сервере в сочетании с файлом, который уже был загружен.

FTP не может делать ничего из этого (это простой протокол для отправки и получения потоков данных без ссылки на любые другие данные, доступные на удаленном конце). Инструменты как rsync и унисон может "пропускать блоки, которые уже есть у другой стороны", но обычно ограничивается сравнением блоков внутри файлов по одинаковому пути в синхронизированной иерархии. Dropbox, похоже, расширяет эту идею до коллекций файлов (поэтому, если вы "загружаете" два почти идентичных файла, предположительно, он может организовать только отправку одного плюс достаточно "diff", чтобы воссоздать другой).

15
отвечен Chris Johnsen 2022-12-05 06:34

Я предполагаю, что вы имеете в виду быстрее в плане передачи файлов. Когда вы сохраняете файл в папке Dropbox, Dropbox отправляет только delta (или diff) данных на удаленный сервер хранения. FTP (скорее всего) отправляет файл байт за байтом (а не просто отправляет изменения), что потенциально занимает гораздо больше времени для передачи по сети. Аналогично, при синхронизации С удаленный сервер, локальные клиенты будут загружать только изменения.

локальная сеть функция синхронизации может также потенциально ускорить синхронизацию и уменьшить сетевой трафик.

11
отвечен sblair 2022-12-05 08:51

Dropbox может быть быстрее, когда вы отправляете большее количество файлов. FTP так же быстро, как вы можете получить, когда мы говорим скорость, но это занимает слишком много" разговора " между сервером и клиентским компьютером для каждого файла, так что ftp, кажется, медленнее. Если вы загружаете какое-то приложение с открытым исходным кодом с тысячами файлов, удобнее сжать все файлы, загрузить его через FTP и распаковать на сервере.

0
отвечен Greenleader 2022-12-05 11:08

Я думаю, они используют простые методы хэширования, аналогичные md5 / sha

всякий раз, когда вы уроните файл внутри локального "dropbox", dropbox-client вычисляет хэш этого файла и должен отправлять некоторые дополнительные данные, такие как размер файла, имя файла на dropbox-сервер.

Если dropbox-сервер находит похожие файлы (они должны поддерживать индекс хэшей и file-data на своем сервере) он просто сообщит клиенту, что файл был "загружен" успешно. ; -)

таким образом, вы в конечном итоге "загрузка" файл логически только. Поскольку нет никакой реальной передачи файлов и контента, это должно быть быстрее, чем что-либо еще.

Я не уверен, какой алгоритм хэширования использует dropbox, но я на 100% уверен, что их принцип работы похож на тот, который я описал выше.

0
отвечен rahul286 2022-12-05 13:25

хотя Dropbox использует другие сервисы, они исторически используют Amazon AWS (Amazon Web Services). Похоже, что ваш перевод от источника к месту назначения имеет очень большую передаточную трубу. По моему опыту, Dropbox использует место назначения, которое может принимать большие объемы данных сразу. Dropbox также распространяет загрузку на разные IP-адреса. Сайт, на который вы FTPing, вероятно, имеет гораздо меньший канал передачи и не имеет возможности распространять загрузки как эффективно.

если запустить Монитор ресурсов (resmon), и перейдите на вкладку Сеть, вы заметите различные процессы, использующие пропускную способность сети.

  • в разделе Процессы с сетевой активностью выберите столбец Total (B/sec)
  • в разделе TCP-подключения выберите столбец Total (B/sec)

для меня, когда я загружаю файл в Dropbox, он использует 4 соединения для отправки 4 разных IP адреса.

enter image description here

0
отвечен Sun 2022-12-05 15:42

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх