Edonkey2018 (мережа)

Файли в мережі eDonkey ідентифікуються завдяки використанню кореневої MD4-хеш суми MD4-сума частин файлу. Це дозволяє вважати однаковими файли з різними назвами, але однаковим вмістом, і розрізняти файли з різним вмістом, але однаковою назвою.

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

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

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

Періодично сервери зв'язуються один з одним на короткий час. Під час цього сеансу зв'язку сервер, оголошуючи про своє існування, посилає список всіх інших відомих йому серверів. Таким чином, сервери підтримують список інших активних серверів. Коли клієнт підключається до сервера, сервер може видати йому список відомих йому серверів.

Хеш-алгоритм, який використовується для обчислення ідентифікатора (кореневої MD4-суми) файлу:

  1. Файли діляться на рівні шматочки по 9 728 000 байт (9500 КБ) і залишок.
  2. Для кожного шматочка обчислюється 128-бітна MD4-хеш сума.
  3. Якщо розмір файлу кратний 9 728 000 байтам, тобто розмір залишку дорівнює 0, все одно розраховується сума для цього порожнього залишку.
  4. Потім все розраховані суми об'єднуються в один єдиний масив (хеш-список) і розраховується MD4-хеш сума всього цього масиву. Ця сума є кореневої MD4-сумою файлу - і ідентифікатором в мережі eDonkey.
  5. Якщо розмір файлу менше ніж 9 728 000 байт, то хеш-список не складається, а ідентифікатором файлу служить MD4-хеш сума всього файлу.

Відмінності від оригінального алгоритму в наступному:

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

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

Розмір файлу (байт)

«Оригінальний» алгоритм ed2k

«Виправлений» алгоритм ed2k

Найчастіше зустрічається короткий вид.

  • Файл рекомендується URI -кодіровать.
  • Розмір файлу - точний розмір в байтах.

h - AICH (Advanced Intelligent Corruption Handler)

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

Рекомендується публікувати його разом з посиланням, тоді він відразу стає довіряти хешем і відразу ж може використовуватися для відновлення файлу. Якщо ж його не публікувати разом з посиланням, то клієнту необхідно буде отримати один і той же AICH хеш з кількох джерел, перш ніж цей хеш буде визнаний достовірним.

Розрахунок AICH-хешу

Для отримання хешу стандартний ed2k чанк (9 728 000 байт) ділиться на 53 частині (52 по 180 КБ і 1 - 140 КБ). Кожна частина пізніше обробляється алгоритмом sha1. Далі пари хешів знову проходять через алгоритм sha1 до тих пір, поки не виходить один єдиний хеш.

p - набір MD4 -хешей

Дозволяє при відсутності ed2k-джерел завантажити файл по URL -Посилання. Зазвичай сервера доступні постійно, на відміну від ed2k джерел, якими в основному є персональні комп'ютери, підключені до мережі Інтернет. Завдяки цьому первинна завантаження відбувається з сервера, а подальше поширення йде вже в мережі ed2k, що розвантажує сервер і збільшує доступність файлу.

sources - джерела

Дозволяє вказати ed2k-джерела, до яких можна звернутися для завантаження файлу. Це дає можливість почати завантаження файлу без підключення до ed2k-сервера просто підключившись до перерахованих джерел безпосередньо.