eDonkey2000 (сеть)

Поделись знанием:
Перейти к: навигация, поиск

eDonkey2000, eDonkey, eD2k — файлообменная сеть, построенная по принципу P2P на основе сетевого протокола прикладного уровня MFTP. Распространённые в Рунете неформальные названия: «ослик», «осёл»[1] пользователи сети — «ословоды».

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





Поиск

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

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

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

Загрузка

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

Принцип работы: Client Z имеет все части Файла (символы прописных букв представляют части файла). Client W, X, и Y хотят загрузить Файл. Начиная с Client X и Client Y, оба имеют различные части Файла, они могут не только получить файл от Client Z, но и могут посылать файл друг другу. Это позволяет скачивать файл намного быстрее вместо того, чтобы загружать канал Client Z. Client W может запустить загрузку файла, даже если источник файла (Client Z) больше не имеет достаточной ширины канала для отсылки.

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

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

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

Файлы в сети 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-хеш сумма всего файла.

Существует второй вариант алгоритма вычисления контрольной суммы файлов, дающих другой результат для файлов, размер которых кратен размеру секции, то есть с размерами 9,728,000 байт, 19,456,000 байт и т. д. Оригинальный алгоритм (использовавшийся в edonkey2000 до версии v0.5.0) содержит ошибку (особенность), благодаря которой, для файлов, кратных 9,728,000 байт, добавляется контрольная сумма пустой секции. Эту особенность учитывают в расчётах далеко не все программы (например, emule учитывает, а shareaza нет). В edonkey2000 с версии v0.5.0 до версии v1.4.3 эта «особенность» исправлена.

Отличия от оригинального алгоритма в следующем:

  1. Если размер файла меньше или равен 9,728,000 байт, то в качестве идентификатора используется MD4 сумма всего файла.
  2. Если размер файла кратен 9,728,000 байт, то контрольная сумма «пустого» остатка не добавляется.

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

Вот, например, контрольные суммы для файлов, состоящих из одних нулевых кодов для разных «вариантов» алгоритма. Получить их (файлы) можно, например, такой командой bash для unix-систем:

for i in 1 2 3;do dd if=/dev/zero of=zero$i bs=9728000 count=$i;done
Размер файла (байт) «Оригинальный» алгоритм ed2k «Исправленный» алгоритм ed2k Сумма MD5
9,728,000 fc21d9af828f92a8df64beac3357425d d7def262a127cd79096a108e7a9fc138 0a62f20c78368021785dbb79b826d26c
19,456,000 114b21c63a74b6ca922291a11177dd5c 194ee9e4fa79b2ee9f8829284c466051 d01f6501678711bdaf6ef11237117c95
29,184,000 1932517fb346b94b5fbdcab55bf92169 9a68abb94d13f1e6ea13e968279652d7 fc0548e86e6106b68ffc248d871b8c2a

ED2K Ссылка

Используется для обмена файлами и публикации на порталах.

Пример[2]:

ed2k://|file|[Имя файла]|[Размер файла]|[ ed2k хеш файла ]
|h=[ AICH хеш файла]|p=[ Md4 хеш 1-й части ]:[ Md4 хеш 2-й части ]:...
|s=[ URL ссылка на файл]|/|sources,[ IP адрес источника ]:[ Порт источника]|/

Чаще всего встречается короткий вид.

ed2k://|file|[Имя файла]|[Размер файла]|[ ed2k хеш файла ]|/
  • Имя файла рекомендуется URI кодировать.
  • Размер файла — точный размер в байтах.

h — AICH (Advanced Intelligent Corruption Handler)

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

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

Расчёт AICH хеша

Для получения хеша стандартный ed2k чанк (9728000 байт) делится на 53 части (52x 180KB и 1x 140KB). Каждая часть позже обрабатывается алгоритмом sha1. Далее пары хешей снова проходят через алгоритм sha1 до тех пор, пока не получается один единственный хеш.

p — набор MD4 хешей

В этом поле перечисляются MD4 хеши ed2k чанков через двоеточие «:». Позволяет проверять части на соответствие даже если нет возможности получить набор хешей другим путём. Например, если единственным источником файла является URL ссылка.

s — URL ссылка

Позволяет при отсутствии ed2k источников загрузить файл по URL ссылке. Обычно сервера доступны постоянно в отличие от ed2k источников которыми в основном являются персональные компьютеры подключенные к сети интернет. Благодаря этому первичная загрузка происходит с сервера а дальнейшее распространение идет уже в сети ed2k что разгружает сервер и увеличивает доступность файла.

Перед вставкой ссылка должна быть URI кодирована.

sources — источники

Позволяет указать ed2k источники, к которым можно обратиться для загрузки файла. Это даёт возможность начать загрузку файла без подключения к ed2k серверу просто подключившись к перечисленным источникам напрямую.

Данное поле имеет смысл использовать только если источник имеет постоянный IP адрес.

Коллекции

Для публикации на порталах ссылки могут быть объединены в коллекции.

Lugdunum server

  • Lugdunum server — серверное ПО сети eDonkey2000. Большинство серверов ed2k-сети работает на Lugdunum. Он более масштабируем и эффективен, чем оригинальный MetaMachine eDonkey server.

См. также

Напишите отзыв о статье "EDonkey2000 (сеть)"

Ссылки

  • [www.edonkey2000.com/ Официальный сайт]. Закрытый (прекративший работу)  (англ.)
  • [wiki.anidb.info/w/Ed2k-hash#How_is_an_ed2k_hash_calculated_exactly Алгоритм ed2k_hash]  (англ.)
  • [www.compulenta.ru/285940/ eDonkey понарошку закрылась] на compulenta.ru (13 сентября 2006)
  • [rhash.anz.ru/ RHash] консольная Open Source программа, вычисляющая ED2K и AICH хэши и EDonkey ссылки.

Примечания

  1. Неформальное название «ослик», «осёл», и «ослик ИЕ» также может относиться к браузеру Microsoft Internet Explorer.
  2. ссылка разбита на строчки для удобочитаемости

Отрывок, характеризующий EDonkey2000 (сеть)

«Какое там у них несчастие, какое может быть несчастие? У них все свое старое, привычное и покойное», – мысленно сказала себе Наташа.
Когда она вошла в залу, отец быстро выходил из комнаты графини. Лицо его было сморщено и мокро от слез. Он, видимо, выбежал из той комнаты, чтобы дать волю давившим его рыданиям. Увидав Наташу, он отчаянно взмахнул руками и разразился болезненно судорожными всхлипываниями, исказившими его круглое, мягкое лицо.
– Пе… Петя… Поди, поди, она… она… зовет… – И он, рыдая, как дитя, быстро семеня ослабевшими ногами, подошел к стулу и упал почти на него, закрыв лицо руками.
Вдруг как электрический ток пробежал по всему существу Наташи. Что то страшно больно ударило ее в сердце. Она почувствовала страшную боль; ей показалось, что что то отрывается в ней и что она умирает. Но вслед за болью она почувствовала мгновенно освобождение от запрета жизни, лежавшего на ней. Увидав отца и услыхав из за двери страшный, грубый крик матери, она мгновенно забыла себя и свое горе. Она подбежала к отцу, но он, бессильно махая рукой, указывал на дверь матери. Княжна Марья, бледная, с дрожащей нижней челюстью, вышла из двери и взяла Наташу за руку, говоря ей что то. Наташа не видела, не слышала ее. Она быстрыми шагами вошла в дверь, остановилась на мгновение, как бы в борьбе с самой собой, и подбежала к матери.
Графиня лежала на кресле, странно неловко вытягиваясь, и билась головой об стену. Соня и девушки держали ее за руки.
– Наташу, Наташу!.. – кричала графиня. – Неправда, неправда… Он лжет… Наташу! – кричала она, отталкивая от себя окружающих. – Подите прочь все, неправда! Убили!.. ха ха ха ха!.. неправда!
Наташа стала коленом на кресло, нагнулась над матерью, обняла ее, с неожиданной силой подняла, повернула к себе ее лицо и прижалась к ней.
– Маменька!.. голубчик!.. Я тут, друг мой. Маменька, – шептала она ей, не замолкая ни на секунду.
Она не выпускала матери, нежно боролась с ней, требовала подушки, воды, расстегивала и разрывала платье на матери.
– Друг мой, голубушка… маменька, душенька, – не переставая шептала она, целуя ее голову, руки, лицо и чувствуя, как неудержимо, ручьями, щекоча ей нос и щеки, текли ее слезы.
Графиня сжала руку дочери, закрыла глаза и затихла на мгновение. Вдруг она с непривычной быстротой поднялась, бессмысленно оглянулась и, увидав Наташу, стала из всех сил сжимать ее голову. Потом она повернула к себе ее морщившееся от боли лицо и долго вглядывалась в него.
– Наташа, ты меня любишь, – сказала она тихим, доверчивым шепотом. – Наташа, ты не обманешь меня? Ты мне скажешь всю правду?
Наташа смотрела на нее налитыми слезами глазами, и в лице ее была только мольба о прощении и любви.
– Друг мой, маменька, – повторяла она, напрягая все силы своей любви на то, чтобы как нибудь снять с нее на себя излишек давившего ее горя.
И опять в бессильной борьбе с действительностью мать, отказываясь верить в то, что она могла жить, когда был убит цветущий жизнью ее любимый мальчик, спасалась от действительности в мире безумия.
Наташа не помнила, как прошел этот день, ночь, следующий день, следующая ночь. Она не спала и не отходила от матери. Любовь Наташи, упорная, терпеливая, не как объяснение, не как утешение, а как призыв к жизни, всякую секунду как будто со всех сторон обнимала графиню. На третью ночь графиня затихла на несколько минут, и Наташа закрыла глаза, облокотив голову на ручку кресла. Кровать скрипнула. Наташа открыла глаза. Графиня сидела на кровати и тихо говорила.
– Как я рада, что ты приехал. Ты устал, хочешь чаю? – Наташа подошла к ней. – Ты похорошел и возмужал, – продолжала графиня, взяв дочь за руку.
– Маменька, что вы говорите!..
– Наташа, его нет, нет больше! – И, обняв дочь, в первый раз графиня начала плакать.


Княжна Марья отложила свой отъезд. Соня, граф старались заменить Наташу, но не могли. Они видели, что она одна могла удерживать мать от безумного отчаяния. Три недели Наташа безвыходно жила при матери, спала на кресле в ее комнате, поила, кормила ее и не переставая говорила с ней, – говорила, потому что один нежный, ласкающий голос ее успокоивал графиню.
Душевная рана матери не могла залечиться. Смерть Пети оторвала половину ее жизни. Через месяц после известия о смерти Пети, заставшего ее свежей и бодрой пятидесятилетней женщиной, она вышла из своей комнаты полумертвой и не принимающею участия в жизни – старухой. Но та же рана, которая наполовину убила графиню, эта новая рана вызвала Наташу к жизни.
Душевная рана, происходящая от разрыва духовного тела, точно так же, как и рана физическая, как ни странно это кажется, после того как глубокая рана зажила и кажется сошедшейся своими краями, рана душевная, как и физическая, заживает только изнутри выпирающею силой жизни.
Так же зажила рана Наташи. Она думала, что жизнь ее кончена. Но вдруг любовь к матери показала ей, что сущность ее жизни – любовь – еще жива в ней. Проснулась любовь, и проснулась жизнь.
Последние дни князя Андрея связали Наташу с княжной Марьей. Новое несчастье еще более сблизило их. Княжна Марья отложила свой отъезд и последние три недели, как за больным ребенком, ухаживала за Наташей. Последние недели, проведенные Наташей в комнате матери, надорвали ее физические силы.
Однажды княжна Марья, в середине дня, заметив, что Наташа дрожит в лихорадочном ознобе, увела ее к себе и уложила на своей постели. Наташа легла, но когда княжна Марья, опустив сторы, хотела выйти, Наташа подозвала ее к себе.
– Мне не хочется спать. Мари, посиди со мной.
– Ты устала – постарайся заснуть.
– Нет, нет. Зачем ты увела меня? Она спросит.
– Ей гораздо лучше. Она нынче так хорошо говорила, – сказала княжна Марья.
Наташа лежала в постели и в полутьме комнаты рассматривала лицо княжны Марьи.
«Похожа она на него? – думала Наташа. – Да, похожа и не похожа. Но она особенная, чужая, совсем новая, неизвестная. И она любит меня. Что у ней на душе? Все доброе. Но как? Как она думает? Как она на меня смотрит? Да, она прекрасная».
– Маша, – сказала она, робко притянув к себе ее руку. – Маша, ты не думай, что я дурная. Нет? Маша, голубушка. Как я тебя люблю. Будем совсем, совсем друзьями.
И Наташа, обнимая, стала целовать руки и лицо княжны Марьи. Княжна Марья стыдилась и радовалась этому выражению чувств Наташи.
С этого дня между княжной Марьей и Наташей установилась та страстная и нежная дружба, которая бывает только между женщинами. Они беспрестанно целовались, говорили друг другу нежные слова и большую часть времени проводили вместе. Если одна выходила, то другаябыла беспокойна и спешила присоединиться к ней. Они вдвоем чувствовали большее согласие между собой, чем порознь, каждая сама с собою. Между ними установилось чувство сильнейшее, чем дружба: это было исключительное чувство возможности жизни только в присутствии друг друга.
Иногда они молчали целые часы; иногда, уже лежа в постелях, они начинали говорить и говорили до утра. Они говорили большей частию о дальнем прошедшем. Княжна Марья рассказывала про свое детство, про свою мать, про своего отца, про свои мечтания; и Наташа, прежде с спокойным непониманием отворачивавшаяся от этой жизни, преданности, покорности, от поэзии христианского самоотвержения, теперь, чувствуя себя связанной любовью с княжной Марьей, полюбила и прошедшее княжны Марьи и поняла непонятную ей прежде сторону жизни. Она не думала прилагать к своей жизни покорность и самоотвержение, потому что она привыкла искать других радостей, но она поняла и полюбила в другой эту прежде непонятную ей добродетель. Для княжны Марьи, слушавшей рассказы о детстве и первой молодости Наташи, тоже открывалась прежде непонятная сторона жизни, вера в жизнь, в наслаждения жизни.
Они всё точно так же никогда не говорили про него с тем, чтобы не нарушать словами, как им казалось, той высоты чувства, которая была в них, а это умолчание о нем делало то, что понемногу, не веря этому, они забывали его.
Наташа похудела, побледнела и физически так стала слаба, что все постоянно говорили о ее здоровье, и ей это приятно было. Но иногда на нее неожиданно находил не только страх смерти, но страх болезни, слабости, потери красоты, и невольно она иногда внимательно разглядывала свою голую руку, удивляясь на ее худобу, или заглядывалась по утрам в зеркало на свое вытянувшееся, жалкое, как ей казалось, лицо. Ей казалось, что это так должно быть, и вместе с тем становилось страшно и грустно.
Один раз она скоро взошла наверх и тяжело запыхалась. Тотчас же невольно она придумала себе дело внизу и оттуда вбежала опять наверх, пробуя силы и наблюдая за собой.
Другой раз она позвала Дуняшу, и голос ее задребезжал. Она еще раз кликнула ее, несмотря на то, что она слышала ее шаги, – кликнула тем грудным голосом, которым она певала, и прислушалась к нему.
Она не знала этого, не поверила бы, но под казавшимся ей непроницаемым слоем ила, застлавшим ее душу, уже пробивались тонкие, нежные молодые иглы травы, которые должны были укорениться и так застлать своими жизненными побегами задавившее ее горе, что его скоро будет не видно и не заметно. Рана заживала изнутри. В конце января княжна Марья уехала в Москву, и граф настоял на том, чтобы Наташа ехала с нею, с тем чтобы посоветоваться с докторами.