Лучше объяснить на примере. Допустим у вас есть файл в 20 мб.
Http/s
Get /files/file.mp3
и сервер отдает 20 мегабайт. Если произошел обрыв то клиент может послать запрос отдайка мне файл с 10 мегабайта. Проблема в том что не все сервера это поддерживают.
В итоге нагрузка на сервер FileSize * N * 1.5
В случае торрента. Файл бьется на чанки (части), там считается как весь хэш файла, так и хэши частей.
Дальше что происходит.
Seeder разбивает файл на чанки пусть будет по 2 мб.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Lecher 1
скачивает 0 и ставит на загрузку 1
Lecher 2
Опрашивает всех вокруг, мол у кого есть? начинает качать с Lecher 1 чанк 0
Lecher 3
Опрашивает всех вокруг, мол у кого есть? начинает качать с Lecher 2 чанк 1
Так в идеале нагрузка на Seeder будет FileSize.
Все остальное передадут друг другу личи. Поэтому часто можно видеть сообщение не уходите с раздачи. То есть вы скачали файл и если нет сидера, то скачивать будут через вас.
В общем это если упрощенно.