Ты - мне, я - тебе

C приходом в Киров по-настоящему быстрого доступа в интернет, думаю, многие из наших читателей стали активно пользоваться файлообменными сетями, как локальными, так и глобальными. В этой статье мы рассмотрим основные P2P-протоколы, их плюсы и минусы.

Как наверняка знают многие наши читатели, существует несколько видов топологии сетей: централизованные, иерархические, децентрализованные. Централизованная сеть представляет собой один компьютер-сервер, к которому присоединяются клиенты и через который осуществляются все передачи. Естественно, надёжность всей системы в таком случае зависит только от состояния сервера, и в случае выхода последнего из строя (а для этого есть великое множество способов, включая классический «у меня упал сервер… со стула») повлечёт полную неработоспособность сети.

Обычная структура клиенты-сервер.

Обычная структура клиенты-сервер.

Иерархическая сеть позволяет частично решить проблему надежности, и в случае остановки одного из серверов «отпадет» лишь часть сети из всей многоуровневой системы. Но наиболее жизнеспособной является децентрализованная сеть, где каждый компьютер исполняет роль и клиента — то есть инициализирует подключение, — и сервера — отвечает на пришедшие к нему запросы. Отключение какого-либо компьютера от сети не приведёт к остановке работы сети в целом.

Типичная сеть p2p.

Типичная сеть p2p.

Среди последнего вида сетей наибольшее распространение получила структура p2p (peer-to-peer, «от участника к участнику»). Первым протоколом такого рода стал Napster, появившийся в 1999 году благодаря усилиям Шона Фаннинга и двух его друзей. Парни решили найти более удобный способ передачи песен, нежели существующие на тот момент, и довольно быстро воплотили своё желание в реальность. Сеть Napster состояла из множества компьютеров и сервера, хранившего списки компьютеров и файлов, сама же передача данных проходила между пользовательскими ПК — и именно этот принцип лёг в основу практически всех P2P-протоколов. К сожалению, спустя два года после старта проект пришлось закрыть из-за проблем — с кем бы вы думали? — естественно, с правообладателями. В итоге бренд был продан, затем преобразован в платный сервис, и в 2008 году был перекуплен Best Buy за сумму $127 млн.

Но на месте одного Napster’a выросло большое количество других протоколов, более защищённых и технологически совершенных — P2P-сети только начинали развиваться. Добавлю также, что один из разработчиков Napster’a — Нил Эрбель — впоследствии создал сеть SoulSeek, ласково именуемую русскоговорящими пользователями интернета «сусликом». Контент, как несложно догадаться, — опять же музыка, корректную работу сети обеспечивают два сервера, скачивание идёт непосредственно между пирами. К сожалению, количество пользователей «суслика» невелико, и, следовательно, вероятность найти что-то редкое довольно мала. Наибольшее же распространение в настоящее время имеют сети eDonkey, Direct Connect и BitTorrent.

Первая сеть — eDonkey — была разработана компанией MetaMachine, и для работы с ней предполагалось использовать пропиетарную программу EDonkey2000, однако наибольшее распространение получил eMule — свободный клиент с открытым кодом. После появления свободно распространяемого Lugdunum server количество независимых от MetaMachine серверов значительно выросло, и eDonkey практически вышла из под контроля «родительницы». Несомненным плюсом здесь нужно отметить взаимосвязь независимых серверов, которые периодически опрашивают друг друга на предмет наличия других серверов, и обеспечивают постоянное функционирование сети и её масштабность. Пользователи данной сети могут одновременно подключаться к нескольким серверам, осуществлять поиск и, соответственно, принимать/отдавать информацию в порядке очереди, остальные возможности определяются программой-клиентом. Поиск осуществляется по контрольной сумме MD4, что позволяет находить файлы одного содержания с разными названиями. Большинство клиентов сети eDonkey также поддерживают молодой протокол Kademlia, являющийся полностью бессерверным, что позволяет увеличить надёжность сети и количество доступной информации. Отметим плюсы данной связки протоколов: большое количество доступных серверов, лёгкость расшаривания своих файлов, возможность найти очень редкий контент. Минусы: низкая скорость — из-за наличия нескольких версий одного и того же контента в нескольких вариантах (песни с различной записью тегов, к примеру) скачивание будет происходить лишь с части источников; отсутствие базовой информации о релизе, из-за чего иногда приходится качать «кота в мешке» или, что ещё хуже, напороться на «фейк» («fake” — подделка по-английски) в виде запароленного архива или XXX-видео; слегка «тормознутая» система очередей, ради которой приходится держать компьютер постоянно включенным.

Direct Connect — сеть, созданная в 1999 компанией NeoModus. Собственный клиент «Direct Connect» так же, как и в случае с «осликом», не снискал популярности у пользователей, которые предпочли бесплатные и более функциональные аналоги: DC++, StrongDC++, ApexDC++, FlyLinkDC++ (последние два основаны на StrongDC++). Данная сеть является более сервероориентированной, то есть чаще всего пользователь подключается к нескольким серверам различной тематики. Особенностями протокола являются чат, возможность обмена личными сообщениями, представление файлов пользователей в виде древовидной структуры.

Типичное окно dc-клиента.

Типичное окно dc-клиента.

Вместо eDonkey-очередей в DC введены слоты — их количество определяет число доступных upload-соединений. Поиск осуществляется по контрольным суммам, информация «расшаривается» по папкам — в этом плане полная аналогия с eDonkey. В силу указанной специфики серверы Direct Connect часто размещают внутри локальных сетей, где пользователи могут общаться и скачивать друг у друга файлы с большой скоростью. Таким образом, DC в меньшей степени страдает недостатком скорости, в сравнении с ed2k, а вот отсутствие информации о контенте также остается проблемой, характерной для DC.

Наконец, третья распространённая сеть — BitTorrent. Не думаю, что после разработки этого протокола в 2001 году Брэм Коен предполагал, насколько популярным окажется его детище. Однако именно на его долю сейчас приходится львиная доля интернет-трафика. И естественно, во многом это обусловлено очень грамотной и функциональной структурой протокола. Основное отличие BitTorrent от рассмотренных ранее протоколов в несколько иной организации поиска и хранении списков файлов — здесь уже сам пользователь ищет на определённых сайтах, называемых торрент-трекерами (см. пояснения по терминологии во врезке), необходимый контент, получает торрент-файл и добавляет его в клиент.

Терминология сети BitTorrent
Пир — это активный участник сети, который либо скачивает информацию, либо её отдает другим. В первом случае его также называют «личером», во втором — «сидером».
Торрент-файл — небольшой (10-200 Кбайт) файл, содержащий данные о непосредственно трекере, информацию о файле/нескольких файлах, которые, собственно, ищет пользователь, и контрольные суммы частей файла.
Трекер — сайт, на котором хранятся торрент-файлы и имеется функция поиска по ним. Сайт-трекер также обеспечивает многофункциональное управление аккаунтами пользователей: доступ для скачивания в зависимости от рейтинга/статуса, подсчёт статистики, начисление бонусов и, естественно, возможность оставить комментарий — куда без этого.
Рейтинг/ратио — соотношение количества отданного трафика и скачанного.
Анонс — обращение клиента к трекеру для получения списка пиров и сообщения о количестве отданного и принятого трафика.
Анонс-URL — ссылка на трекер, часто включает пасскей.
Пасскей — набор символов, персональный идентификатор пользователя, по которому трекер определяет, на какой аккаунт засчитывать статистику. В целях безопасности не «светите» свой пасскей (и торрент-файлы с пасскеем), иначе рискуете увидеть неприятно большие цифры в графе «скачано» — злоумышленник хоть и не сможет залогиниться под вашим аккаунтом, зато сможет скачать что-либо за ваш счёт. В случае кражи пасскея как можно быстрее смените его в настройках профиля.

Клиент обращается к трекеру, получает список пиров (IP, номер порта), соединяется с ними и открывает соединение. Скачивание ведётся по кусочкам файлов, завершенные фрагменты проверяются по контрольной сумме и после удачной верификации становятся доступными уже для отдачи — таким образом, обмен происходит не только между сидером и личером, но и между личерами — что значительно ускоряет передачу при малом количестве полных источников. Отмечу также режим «SuperSeed”, который изначально хоть и не являлся частью протокола, но присутствует в некоторых клиентах и позволяет минимизировать количество данных, передаваемых личерам, до первого скачавшего. Для этого единственный сидер раздает только те куски, которых ещё нет у личеров, избегая повторной передачи одних и тех же фрагментов. BitTorrent также поддерживает сеть DHT (Distributed Hash Table — распределённая хеш-таблица), в которой можно найти других пиров (в добавок к тем, которые ему выдал трекер) и начать скачивать/отдавать данные, что особенно помогает в случаях малого числа раздающих. Несмотря на теоретические утверждения, что использование DHT не влияет на статистику, на практике значения «скачано» и «отдано» зачастую оказываются меньше, чем должны быть на самом деле. И, конечно же, по закону подлости, потерь «отданного» всегда больше нежели «скачанного» — так что на трекерах с учётом статистики от DHT лучше отказаться. Хотя, конечно, никто не мешает вам скачать торрент-файл, удалить из него announce-url, получить по DHT список пиров, скачать файлы, вернуть announce-url и встать на раздачу — в этом случае вам будет начислена лишь отдача. Один нюанс этого трюка — обязательное наличие большого числа сидов (>100).
Самые распространенные клиенты для BitTorrent: uTorrent и Vuze (бывший Azureus), первому присущи минималистичный размер и внешне аскетичный интерфейс, второй, наоборот, предлагает пользователю весьма продвинутый GUI.

* * *
Пришла пора подвести некоторые итоги. eD2k сейчас, на мой взгляд, не очень удобен для поиска какого-либо материала в сети, хотя если вас не отпугнули указанные выше минусы — можете попробовать пользоваться этой сетью, но не думаю, что результаты вас порадуют. DC++ занял свою нишу в локальных сетях, благодаря своей простоте и отсутствию рейтинга — что вполне устраивает львиную долю пользователей, только и скачивающих фильмы да игры из сети. Торрент-трекеры, как открытые, так и закрытые, представляют собой, пожалуй, самый удобный для поиска и богатый по наполнению «архив всего интернета», где можно скачать практически что угодно.
В следующей статье мы рассмотрим основные общенаправленные, закрытые, музыкальные, игровые и фильмовые трекеры для BitTorrent.


Рекомендуем почитать: