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