Гадаю, українською ніц не знайду, а, як сформувати запит ґуґлю англійською не знаю. Буду вдячний за допомогу.
Суть алгоритму в тому, що файл розбивається на блоки. Для кожного блоку рахується контрольна сума. Далі операції ведуться не просто з файлом, а зі списком контрольних сум і блоками файлів ідентифікованих по контрольній сумі.
Тобто, якщо на вході ми мали цілий файл, то на виході маємо коротенький опис файлу (назва, час створення, etc.), список блоків і їхні контрольні суми. Ну це приблизно так само як порізати архів на шматки щоб можна було дискетами перенести.
Коли хтось хоче завантажити файл, він в першу чергу вантажить список блоків, а далі шукає по інету - "В тебе є блок від файлу foo.bar з контрольною сумою XXXXXXXX?".
Є різні системи. В торентах, клієнти реєструються на сервері для кожного файлу і кожен клієнт може взнати список зареєстрованих клієнтів щоб зв’язатися з ними напряму і попросити чи передати блок файлу.
В DC, клієнти реєструються на хабах, які містять велику кількість файлів, так що не треба робити підписку на кожен конкретний файл.