Что такое DistrPeer?

DistrPeer - это клиент к p2p-сети обмена и хранения файлами, имеющую незамысловатое название - Distributed Storage :)

Главные особенности сети следующие:

  1. Полная децентрализованность: каждый участник сети абсолютно равен в правах с любыми другими участниками. В частности, любой участник сети может выступать в роли хранилища ресурсов, скачивающего ресурсы, хранителя метаинформации о ресурсах и т.д. Данная особенность значительно повышает устойчивость к отказам сети в целом. Так, в обычных сетях, при "падении" или отключении центрального сервера (трекера, хаба) сеть не может функционировать. В нашей сети такая ситуация невозможна.
  2. Распределённое хранение файлов: Грубо говоря, файл кодируется и "разрезается" на некоторое число независимых частей (скажем, N). Это "разрезание" устроено так, что по любым доступным K частям (K<N) можно декодировать и собрать файл, но если имеется менее K частей, то о содержимом файла ничего сказать нельзя. Таким образом ещё и обеспечивается избыточность в хранении файлов, что повышает устойчивость работы сети относительно отдельного ресурса - в случае отсутствия некоторых участников сети, ресурсы всё равно остаются доступными. Подчеркнём, что отдельная часть - не есть фрагмент исходного файла, и ею никак нельзя воспользоваться.
  3. Устойчивость к подмене ресурсов: хранитель части, если захочет подменить содержимое части, конечно может это сделать, но механизм проверки при сборке выявит его и сообщит пользователю, скачивающем ресурс, на что он может принять соответствующие меры, например занесение узла в чёрный список.

При "расшаривании" файла клиент проделывает следующую процедуру:

  1. ищет в сети N узлов, готовых стать хранилищем части файла.
  2. кодирует и разрезает файл на N частей
  3. на каждый из найденных узлов посылает одну часть
  4. помещает в сети метаинформацию, необходимую для обеспечения поиска