Загрузка файлов в Dropbox проста и может осуществляться двумя способами: через веб-интерфейс на сайте и через приложение. На сайте это делается следующим образом:
Dropbox: взгляд изнутри
В этой статье я расскажу, как работает популярный облачный сервис хранения данных Dropbox. В частности, я рассмотрю дизайн протокола Dropbox и приведу статистику использования в некоторых европейских странах. Я также сравню его с другими сервисами, такими как iCloud, Google Drive и SkyDrive.
Статья носит чисто технический характер. Здесь не будет сводных таблиц стоимости одного гигабайта и анализа того, сколько еще можно получить за приглашенных «друзей».
Этот пост основан на научной статье под названием «Внутри Dropbox: Понимание персональных облачных сервисов хранения данных» PDF В последние годы популярность облачных сервисов хранения данных резко возросла. В гонке вооружений участвуют все крупные компании и некоторые молодые стартапы. В основном, вся информация о внутренней работе сервисов и фактические показатели использования держатся в секрете. Мы получаем только данные, пропущенные через отдел маркетинга, и они, конечно, несколько отличаются от реальности. Итак, давайте подробнее разберемся с Идилио Драго, Анной Сперотто, Марко Меллиа, Рамином Садре, Маурицио М. Мунафо и Айко Прас — авторами исследования.
Вступление
Клиент Dropbox в основном разработан на Python и использует сторонние библиотеки, такие как librsync. Клиент поддерживает все распространенные операционные системы: Windows, Mac, Linux. Использование Python ясно показывает, что при разработке клиента основное внимание уделялось легкой переносимости на различные платформы.
Основным компонентом системы является фрагмент размером до 4 Мб. Если файл больше, он разбивается на несколько кусков, и каждый кусок обрабатывается независимо. Для каждого чанка вычисляется хэш SHA256, и эта информация является частью метаинформации файла. Dropbox уменьшает объем передаваемых данных, передавая только разницу между измененными блоками файла. Он также локально содержит всю метаинформацию о файлах, которую синхронизирует с сервером и переносит только изменения из предыдущей версии (инкрементные обновления).
Dropbox использует два типа серверов: сервер управления и сервер хранения данных. Управляющие серверы контролируются Dropbox, а серверы данных — это серверы Amazon (Amazon S3, EC2). Во всех случаях связь с серверами осуществляется через HTTPS.
Доменные имена, используемые Dropbox, всегда заканчиваются на dropbox.com. В следующей таблице перечислены поддомены для серверов управления и данных.
Поддомен | Размещено на сайте | Описание |
---|---|---|
client-lb/clientX | Dropbox | Метаданные |
уведомитьX | Dropbox | Уведомления |
api | Dropbox | Контроль API |
www | Dropbox | Веб-сервер |
d | Dropbox | Журналы событий |
dl | Amazon | Прямые ссылки |
dl-clientX | Amazon | Клиентский магазин |
dl-debugX | Amazon | Следы на спине |
dl-web | Amazon | Хранение в Интернете |
содержание api | Amazon | API-хранилище |
Dropbox: изнутри
Поскольку Dropbox использует HTTPS для шифрования всего трафика между серверами, простое прослушивание не может дать никакой полезной информации. Для нашего исследования мы установили Squid и направили весь трафик с Linux-машины на этого посредника. Мы также установили SSL-bump на прокси-сервер, чтобы он мог расшифровывать SSL. Последний шаг — установить самоподписанный сертификат на Squid и изменить сертификат в запущенном приложении Dropbox. С помощью этой настройки вы можете расшифровывать и просматривать трафик Dropbox.
На рисунке показан протокол, который Dropbox использует для загрузки локально измененных блоков на свои серверы. После регистрации клиента на серверах управления clientX.dropbox.com команда list получает изменения в метаданных, указывающие на разницу между локальной копией и копией на сервере. Как только происходит локальное изменение файла, Dropbox вызывает команду commit_batch ( client-lb.dropbox.com ) и отправляет измененные метаданные на сервер. Затем сервер отвечает командой need_blocks, какие блоки ему нужны, и клиент отправляет эти блоки на Amazon ( dl-clientX.dropbox.com ). Каждый блок сохраняется с помощью команды OK.
Затем локальный клиент повторно отправляет команду commit_batch на сервер и получает подтверждение, что все блоки были получены. Транзакции хранения могут выполняться параллельно.
Протокол управления
Dropbox использует следующие группы серверов управления:
- Уведомления. Dropbox поддерживает постоянное открытое TCP-соединение с серверами уведомлений (notifyX.dropbox.com) для получения информации об изменениях файлов, которые могли быть сделаны другими клиентами. В отличие от другого трафика, эта информация не шифруется. Задержка ответа HTTP используется для быстрого уведомления клиентов (механизм push). Клиент отправляет запрос, а сервер задерживает ответ примерно на 60 секунд. По истечении 60 секунд клиент немедленно отправляет новый запрос на сервер. Если ответ генерируется раньше, сервер отвечает немедленно.
- Управление метаданными Серверы управления метаданными отвечают не только за обновление изменений в блоках и файлах, но и за аутентификацию клиентов. Для этих серверов используются следующие доменные имена: client-lb.dropbox.com, clientX.dropbox.com. Кроме того, серверы управления могут контролировать поведение клиентов. В ходе эксперимента было обнаружено, что серверы могут указывать клиенту максимальное количество блоков, которое он может отправить на сервер. Это контролирует трафик, генерируемый клиентом.
- Системные журналы сервера предоставляются компанией Amazon и имеют имя dl-debug.dropbox.com; другие сообщения отправляются непосредственно в Dropbox d.dropbox.com .
Набор данных и популярность клиентов
Мы выбрали пассивный способ мониторинга Dropbox. Для сбора трафика мы использовали инструмент с открытым исходным кодом Tstat, который может быть использован для сбора различной информации о TCP и предоставляет информацию о более чем сотне различных параметров соединения. Чтобы проанализировать Dropbox, мы предприняли несколько дополнительных шагов.
Поскольку Dropbox использует HTTPS, мы обнаружили, что имя во всех сертификатах, используемых Dropbox, — *.dropbox.com. Это было важно для правильной классификации трафика.
Вы также можете получить бонус за установку программы на свой компьютер, поэтому обязательно сделайте это. Если вы не загрузили Dropbox сразу, как это сделал я, вы можете найти ссылку в том же списке «С чего начать?».
Основная функция облачного хранилища заключается в следующем: Система отслеживает состояние файлов и папок на различных устройствах и обменивается этой информацией между ними и серверным хранилищем. В остальном работа сервиса ничем не отличается от работы обычного компьютерного хранилища.
Вся информация хранится в облачном хранилище и шифруется с помощью алгоритма AES-256. Обмен данными происходит по протоколу SSL, поэтому папки и файлы, хранящиеся в Dropbox, надежно защищены от доступа неавторизованных третьих лиц.
Функции и возможности
Dropbox предлагает пользователям следующие возможности
- Быстрый доступ к данным, хранящимся на сервере,
- актуальную информацию для всех устройств пользователей,
- Служба хранит историю изменений, сделанных за последние 30 дней, поэтому за этот период сохраняются разные версии файлов,
- Многопользовательская работа над проектами с удаленных рабочих станций,
- резервное копирование информации,
- кросс-платформенность сервиса: для работы с сервисом разрабатываются клиенты для операционных систем от широко распространенных Windows, Mac OS X и Android до экзотических систем, таких как Fedora Core 9,
- Бесплатное хранилище емкостью 2 ГБ.
Как пользоваться облачным хранилищем
Работать с Dropbox очень просто. Сначала вы регистрируетесь на сайте службы. Кстати, там есть подробное описание системы, так что понять, как работает Dropbox, не составит труда. Клиентское программное обеспечение устанавливается на компьютер пользователя, и для начала работы пользователю необходимо ввести имя пользователя и пароль. В файловой системе автоматически создается папка «My Dropbox», содержимое которой синхронизируется с сервером и устройствами пользователя.
Эта папка является основным рабочим инструментом для использования репозитория. Когда вы храните, удаляете или редактируете файлы в нем, содержимое каталога синхронизируется с серверным хранилищем в фоновом режиме.
Вы можете создавать различные папки в «My Dropbox» и задавать для них определенные свойства, например, чтобы сделать их доступными. Это позволяет использовать сервис для совместных проектов.
Здесь вы найдете всю необходимую информацию о Dropbox — что это такое и как им пользоваться.