Торренты и p2p

p2p сети (peer-to-peer, равный равному) – пользовательская сеть, основанная на равноправии участников и с отсутствием ярко выраженного серверного компьютера. По сути каждый компьютер такой сети является как клиентом (компьютер, который получает данные из сети), так и сервером (с того момента, как на жестком диске появляются сохраненные данные, он может их передавать другим участникам сети). Немного о терминах:

Раздача – процесс распространения файла (или группы файлов) по одному из протоколов сетей p2p.

Сегмент – одна из частей, на которые делится раздача для оптимизации процесса передачи данных в p2p-сети.

Хеш (хеш-сумма) – строка буквенно-цифровых символов, которая ставится в соответствие файлам раздачи. Хеш-строка задается индивидуально для каждой раздачи; после закачивания каждый сегмент раздачи сверяется с хеш-строкой. Если сегмент не проходит проверку, он закачивается заново. После сбоя программы клиента очень часто возникают случаи перехеширования закаченных данных, то есть файлы каждой активной раздачи проверяются на соответствие с «эталонными» хеш-строками, хранящимися на серверах раздачи или трекерах.

Трекер – специализированный сервер, работающий по протоколу HTTP и необходимый для связи клиентов p2p-сети. На данном сервере обычно хранятся данные о IP-адресах и входящих портах клиентов сети, хеш-суммы раздач. Помимо этого на таком сервере может хранится информация описательного характера для каждой раздачи, статистика зарегистрированных на трекере пользователей, статистика подключений к раздачам (количество сидеров и личеров)

Пир (от Peer – равный, соучастник) – клиент, участвующий в раздаче.

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

Личер (от leech – пиявка) – пир, который закачивает файлы раздачи (на компьютере клиента нет всех файлов раздачи, и продолжается скачивание). Иногда в некоторых p2p-сетях личерами называют клиентов, скачивающих файлы и не остающихся потом на раздаче (рейтинг личеров обычно меньше единицы).

Рейтинг – отношение объема розданных данных к объему скаченных данных.

Доступность – количество доступных для скачивания полных копий данной раздачи. Каждый сидер эквивалентен 1 в доступности (то есть, если есть 8 сидеров, то доступность раздачи как минимум равна 8). Личеры влияют на показатель доступности эквивалентно проценту закачанных данных раздачи (если у личера скачано 58,6% раздачи, то он добавляет в показатель доступности 0,586). Доступность раздачи можно увидеть в специальной колонке в окне программы-клиента.

A теперь мы рассмотрим три самых распространенных на данный момент типа p2p-сетей: торренты, DC, ed2k. Каждый тип имеет свою определенную нишу использования, свои особенности передачи данных, а следовательно и индивидуальные программы-клиенты.

Торрент-сети

Торрент (или точнее BitTorrent – битовый поток) – сетевой протокол для кооперативного обмена файлами через Интернет. Протокол был создан в 2001 году Брэмом Коэном. Для каждой раздачи создается файл метаданных с расширением .torrent, содержащий информацию:

1.URL-адрес торрент-трекера

2.Общую информацию о файлах в данной раздаче (имена файлов, объем и т.д.)

3.Хеш-суммы сегментов раздаваемых файлов

4.Passkey пользователя (если для участия в раздаче необходима регистрация на трекере) для последующего ведения статистики.

Размеры сегментов в раздаче обычно выбираются в диапазоне от 128 Кбайт до 4 Мбайт (кратным 2) в зависимости от общего объема раздачи. Если раздача состоит из группы файлов, то в процессе хеширования они файлы считываются подряд непрерывным потоком данных. Поэтому нередко можно заметить, как окончание одного файла лежит в одном сегменте с началом следующего файла. Если клиент выбирает для скачивания не все файлы, участвующие в раздаче, возможны случаи закачивания лишних кусков данных (начала или окончания файлов, не выбранных для закачки, так как они лежат в одном сегменте с активными файлами). Данные лишние куски данных хранятся в отдельном временном файле в корневой папке раздачи.

Принцип работы

Перед началом скачивания данных, клиент подключается к торрент-трекеру по URL-ссылке, указанной в torrent-файле. Клиент обменивается с трекером IP-адресом, хеш-суммой, после чего трекер передает клиенту информацию о других клиентах, участвующих в данной раздаче. Такой обмен данными называется анонсированием (или объявлением). Далее во время непосредственного участия в процессе раздачи объявление проходит по умолчанию обычно 1 раз в 30 минут. Делается это для обновления информации о участвующих в раздаче клиентах (обычно это добавление IP-адресов сидеров и личеров).

После анонсирования клиент по очереди проверяет список других клиентов, участвующих в данной раздаче: отправляет каждому клиенту запрос на получение сегмента раздачи. Собственно, чем больше активных участников раздачи и чем больше открытых входящих соединений открыто в программе-клиенте, тем выше скорость закачивания данных.

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

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

Основные программы-клиенты: uTorrent, BitTorrent.

Самые известные торрент-трекеры: Rutracker.org (требует регистрации) – общей направленности, Rutor.org (не требует регистрации) – общей направленности, RGFootball.net (требует регистрации) – спортивной направленности, hdclub.com.ua (требует регистрации) – фильмы в высоком разрешении и многие другие.

Из инстранных торрент-трекеров можно выделить знаменитую «Пиратскую бухту» - thepiratebay.se

DC-сети 

DC (Direct Connect) – частично централизованная p2p-сеть. Роль администрирующего сервера выполняет хаб – сервер, хранящий и передающий DC-клиентe информацию о других DC-клиентах, в первую очередь IP-адрес, имя клиента, объем информации, открытой DC-клиентом для скачивания. Так же на большинстве современных DC-хабах есть возможность общения с другими DC-клиентами в режиме реального времени с помощью встроенного чата. Иногда данную возможность ставят во главу угла и создают специализированные DC-хабы для проведения соревнований (викторины), хабы для знакомств и т.д.

Особенностью раздачи по данному протоколу является наличие слотов у раздающего, то есть ограниченного числа подключений DC-клиентов для скачивания файлов. При превышении числа желающих относительно количества слотов создается очередь скачивания, в которой каждму DC-клиенту и файлу, который он закачивает, задается приоритет (приоритет определяет, кт в первую очередь будет занимать свободные слоты закачки, какое количество аппаратных ресурсов будет выделяться для раздачи конкретному DC-клиенту и т.д.).

Принцип работы

Для начала нужно зайти на DC-хаб. Для этого нужно создать новое подключение:

1.Ввод сетевого адреса DC-хаба ( dchub://[ IP или Домен хаба]:[ порт хаба(цифровой) ]

2.Имя пользователя

3.Пароль пользователя (если требуется)

4.Имя подключения. Данное имя будет выводиться в названии закладки подключения.

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

Стандартный экран DC-хаба можно разделить на три зоны

1.Список доступных DC-клиентов

2.Чат хаба

3.Список активных процессов закачки\передачи файлов.

Для закачки файлов от DC-клиента необходимо:

1.Получить от DC-клиента список доступных для скачивания файлов. Обычно список файлов имеет древовидную структуру каталогов. Способ закачки очень похож на скачивание с FTP-сервера, можно выделить несколько папок или файлов для скачивания одновременно.

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

3.В списке закачек можно выставлять приоритет для отдельных файлов, папок или всех закачек. Файлы с более высоким приоритетом закачиваютсяв первую очередь. Так же в можно выставить приоритет «пауза» (или «не закачивать»). С таким приоритетом закачка данного объекта временно приостанавливается.

Главное отличие от торрентов состоит в том, что раздающий клиент не создает строго определенную раздачу с постоянной хеш-суммой, а открывает в общий доступ файлы и папки, находящиеся у него на компьютере. В DC-сетях более простой способ добавления в общий доступ файлов для скачивания, нежели в торрент-сетях. От раздающего клиента не требуется создавать и обновлять при каждом изменении ссылки для скачивания (как в торрент-сетях .torrent-файлы). Все это делается автоматически DC-хабом. От скачивающего клиента только требуется перезагрузить соединение с раздающим клиентом.

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

Основные программы-клиенты: StrongDC++, ApexDC++, FlylinkDC++

ED2K-сети

ED2k (eDonkey2000) – файлообменная сеть p2p на основе прикладного сетевого протокола MFTP. Для связи клиентов в сети используется, в основном, две основных программы-клиента: eDonkey (осел; собственно, название программы и дало название всему типу p2p-сетей) и eMule (мул; более усовершенствованная версия клиента, судя по названию, специально «выведенная» версия программы-клиента с большей производительностью и с более удобным интерфейсом).

Принцип работы 

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

При запросе файла на закачку, сервер также опрашивает всех подключенных к нему клиентов, а также сканирует списки других серверов на наличие закачиваемого файла. Формируется индекс доступности, создается алгоритм закачивания сегментов раздачи. На данном этапе процесс закачки очень похож на процесс закачки в торрент-сетях.

Формирование очереди доступа к файлу происходит по принципу «чем больше ты уже раздал сегментов данной раздачи, тем больше у тебя прав на закачку оставшихся незакаченных сегментов». После окончания закачки, файл полностью проверяется на соответствие хеш-сумме оригинала, после чего перемещается из папки для временных закачек в основную папку (в настройках можно указать одну и ту же папку, чтобы лишний раз не нагружать жесткий диск перемещением данных).

Если в DC-клиентах предусмотрен встроенный чат, то в ED2k-клиентах есть встроенный IRC-клиент (англ. Internet Relay Chat, протокол прикладного уровня для обмена сообщениями в режиме реального времени). Данный клиент позволяет отправлять не только текстовую информацию, но и файлы различных типов.

В Интернете достаточно много тематических сайтов, дающих ссылки для ed2k-сети. В русском сегменте Интернета наиболее известен sharereactor.ru – тематика «Кино», регистрации для получения ссылки не нужно.

Компьютерный портал "Компаньон" © 2016.
В случае перепечатки материалов обязательна прямая ссылка на сайт cs-companion.ru.