В вычислительной технике ссылки eD2k ( ed2k:// ) представляют собой гиперссылки, используемые для обозначения файлов, хранящихся на компьютерах, подключенных к P2P-сети обмена файлами eDonkey .
Многие программы, такие как eMule , MLDonkey и оригинальный клиент eDonkey2000 от MetaMachine , который ввел тип ссылки, а также другие, использующие протокол обмена файлами eDonkey, можно использовать для управления файлами, хранящимися в файлообменной сети.
Ссылки eD2k позволяют идентифицировать файл по ссылке в веб-браузере и затем загружать его клиентом, таким как eMule, Shareaza или любым другим совместимым программным обеспечением. Эта функция ссылок была одним из первых URI , введенных в одноранговый обмен файлами, и оказала огромное влияние на развитие сети eDonkey, поскольку она позволила внешним сайтам ссылок предоставлять проверенный контент в сети. В настоящее время так называемые Magnet-ссылки на практике заменили ссылки eD2k. Они выполняют аналогичную роль, но не ограничиваются хешем eD2k и могут содержать другие хеши, такие как SHA-1 или MD5 , например, что позволяет использовать эти ссылки для указания на файлы в нескольких сетях (а также в BitTorrent) одновременно.
Ссылки eD2k включают хэши файлов, поскольку эти хэши могут использоваться в качестве уникального идентификатора для файлов в сети, поэтому даже если файл, на который ссылается, имеет разное имя на двух компьютерах в сети, файл может быть найден на обоих компьютерах, и фрагменты файла могут быть получены из обоих источников. Это делается с помощью использования хэш-функции для файла для вычисления его контрольной суммы, зависящей только от содержимого файла, а не от его имени.
Как и другие протоколы URI, веб-браузеры можно настроить на автоматическую обработку URI ed2k. После установки клиента eD2k протокол eD2k может быть дополнительно зарегистрирован, так что нажатие на него в браузере автоматически запускает загрузку или спрашивает, хочет ли пользователь начать загрузку.
Ссылки на файлы предваряются маркером "file", который указывает, что это ссылка на файл, в отличие от ссылки server
, serverlist
, nodelist
или friend
. Типичная ссылка на файл eD2k также включает имя файла и размер файла. Пример (ссылка на трейлер Purist Edit объемом 15 МБ) приведен ниже:
ed2k://|файл|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/
Ссылки eD2k также могут включать ссылку на IP-адрес и порт определенных клиентов, которые, как известно, делятся связанным файлом. Это делается путем добавления списка источников после основной части ссылки, как показано в следующем примере:
ed2k://|файл|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/|источники,202.89.123.6:4662|/
В eMule ссылка часто также содержит верхний хэш AICH |h=H52BRVWPBBTAED5NXQDH2RJDDAKRUWST|, который помогает восстановить файл в случае его повреждения во время передачи.
Хэш-функция eD2k — это корневой хеш списка хэшей MD4 . Она дает другой результат, чем простое использование алгоритма MD4.
Данные файла делятся на полные куски по 9500 КиБ (9728000 байт) плюс остаточный кусок, и для каждого вычисляется отдельная 128-битная контрольная сумма MD4. Если файл больше 9500 КиБ (что означает, что есть более одного куска), хэш eD2k вычисляется путем объединения контрольных сумм MD4 кусков по порядку и повторного хэширования результата с использованием MD4. В противном случае хэш MD4 единственного куска файла используется без дальнейших изменений. [1]
Этот метод хеширования позволяет получателю проверить, соответствует ли список хешей исходному хешу файла eD2k, без необходимости фактического наличия файла на диске.
В прошлом существовала некоторая неоднозначность для файлов, размер которых был кратен размеру фрагмента (9500 КиБ). Старые версии некоторых хэш-инструментов eD2k вычисляли хэши файлов с дополнительным 0-байтовым фрагментом в конце. Это связано с неоднозначностью термина « остаточный фрагмент» , который можно интерпретировать как последний фрагмент или как неполный фрагмент в конце . Следуя последней интерпретации, некоторые реализации добавляли нулевой байтовый фрагмент в случае, если последний фрагмент файла был полным. Однако эта практика не приветствуется, и в настоящее время в качестве стандарта используется первая интерпретация, чтобы предотвратить появление у некоторых файлов разных хэшей в зависимости от реализации алгоритма, используемого для вычисления их хэша. [2]
AICH (Advanced Intelligent Corruption Handling) — это расширение eMule. Оно подразделяет фрагмент размером 9500 КиБ на блоки по 180 КиБ и строит дерево Меркла из хэшей SHA1 53 блоков, так что корневой хэш каждого блока называется хешем блока . Хэши блоков далее поступают в дерево Меркла, корневой хэш которого является фактическим корневым хешем AICH. Меньший размер блока позволяет клиентам eMule точнее определять места повреждения. [3]
Ссылка на сервер — это ссылка на сервер eDonkey2000; нажатие на такую ссылку обычно добавляет ее в список серверов. Ссылки на сервер обозначаются токеном server
в начале ссылки и имеют следующий формат:
ed2k://|сервер|IP|ПОРТ|/
Пример:
ed2k://|сервер|207.44.222.51|4242|/
CKnownFile::CreateFromFile
.