eD2k

eD2k (также употреляется eDonkey2000, eDonkey) — это сеть для файлообмена, построенная по принципу P2P. В основе лежит сетевой протокол прикладного уровня MFTP. Также сеть носит неформальные названия типа «ослик» или «осел», а ее пользователи в шутку именуются «ословодами».

Сеть включает в себя несколько миллионов клиентов и несколько десятков серверов, осуществляющих взаимодействие между собой. Клиентами выступают пользователи, загружающие файлы, а также пользователи, обладающие полной версией файлов. Благодаря серверам можно находить опубликованные файлы и других пользователей, имеющих эти файлы (как целиком, так и частично). Файлы же не проходят через серверы.

Как происходит поиск?

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

Кроме того, можно осуществлять поиск и по нескольким серверам одновременно. Такие запросы и их результаты передаются через протокол UDP, дабы сократить загрузку канала и количество подключений к серверам. Такая функция полезна, особенно, если поиск на сервере, к которому подключен клиент, выдает низкий результат.

Также, ссылки на файлы публикуются на специализированных форумах в Интернете, в виде «релизов».

Как происходит загрузка файла? 

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

Межсерверные соединения

Cерверы связываются друг с другом периодами на короткое время. В ходе сеанса связи сервер, объявляя о своем существовании, посылает список всех других известных ему серверов. Так, серверы поддерживают список активных серверов. При подключении клиента к серверу, тот может выдать ему список актуальных для него серверов.

Хеш-алгоритм

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

  1. Файлы разделяются на равные составляющие по 9,728,000 байт (9500 КБ) и остаток.
  2. Для каждого куска вычисляется 128-битная MD4-хеш сумма.
  3. Если размер файла кратен 9,728,000 байтам, то есть размер остатка равен 0, для этого пустого остатка все равно рассчитывается сумма.
  4. После этого все рассчитанные суммы объединяются в один единый массив (хеш-список) и рассчитывается MD4-хеш сумма всего этого массива. Данная сумма является корневой MD4-суммой — и идентификатором в сети eDonkey.
  5. Если размер файла не превышает 9,728,000 байт, то хеш-список не составляется, а идентификатором файла является MD4-хеш сумма всего файла.
#