Peer-to-peer — различия между версиями
Belonogov (обсуждение | вклад) (начало статьи) |
|||
Строка 7: | Строка 7: | ||
==Частично децентрализованные сети== | ==Частично децентрализованные сети== | ||
В некоторых peer-to-peer сетях кроме равноправных node присутствуют сервера, которые выполняют административные функции, такие как поддержка базы он-лайн пользователей. | В некоторых peer-to-peer сетях кроме равноправных node присутствуют сервера, которые выполняют административные функции, такие как поддержка базы он-лайн пользователей. | ||
+ | |||
+ | |||
+ | |||
+ | ==BitTorrent протокол== | ||
+ | |||
+ | Протокол BitTorrent был разработан в 2001 году Коэном Брахмом, чтобы позволить | ||
+ | набору узлов быстро и легко обеспечивать общий доступ к файлам. | ||
+ | |||
+ | Сам протокол состоит в следующем: есть небольшой торрент-файл, содержащий | ||
+ | информацию о трекере, который следит за файлом, и список сегментов, из которых | ||
+ | состоит файл: для сегмента хранится 160-битовый SHA-1 соответствующего сегмента | ||
+ | файла (обычный размер сегмента -- 64-512 кб). Таким образом, скачав файл, можно | ||
+ | посчитать от него хеши и проверить, все ли скачалось без ошибок. Кроме | ||
+ | торрент-файла есть трекер: сервер, который следит за состоянием пиров -- узлов, | ||
+ | имеющих отношение к раздаче. Пир, получив торрент-файл, подключается к трекеру | ||
+ | и узнает список сидов -- пиров, у которых уже есть некоторые сегменты файла, | ||
+ | готовые их отдать. Узнав адрес сида, у которого можно что-то скачать, клиент | ||
+ | уже обращается напрямую к нему и скачивает у него файл. Таким образом, все данные | ||
+ | идут напрямую от пира к пиру (peer-to-peer), а трекер участвует лишь в качестве | ||
+ | координатора процесса. | ||
+ | |||
+ | Таким образом, протокол не является особо централизованным (нет никаких выделенных | ||
+ | хранилищ с данными), но решает проблему "А где же мне найти, где бы скачать вот | ||
+ | этот фрагмент файла". | ||
+ | |||
+ | Для того, чтобы не было проблем с поиском какой-то части | ||
+ | файла, трекер сначала предлагает загружать сегменты, которые есть у наименьшего | ||
+ | числа участников сети. Это позволяет избежать проблемы, характерной для | ||
+ | последовательной загрузки файла, когда много участников скачали почти весь файл, а | ||
+ | вот самого конца сейчас ни у кого нет. | ||
+ | |||
+ | Система работает хорошо, когда каждый ее участник скачал документ, а потом еще | ||
+ | и остался на его раздаче, отдавая свой долг перед родиной. К сожалению, бывает так, | ||
+ | что клиент скачал все, что ему нужно, и решил не оставаться на раздаче -- таких | ||
+ | пиров называют личерами. Если в системе много личеров, то раздавать файлы некому, | ||
+ | и скорость скачивания падает. Для решения этой проблемы трекер может применить | ||
+ | систему поощрений: отдавать пиру очередной сегмент, лишь если его отношение | ||
+ | "скачал/отдал" не меньше, чем какое-то конкретное число, мотивируя клиентов | ||
+ | оставаться на раздаче, повышая свой рейтинг. К сожалению, это не всегда хорошо | ||
+ | работает, так как бывают компьютеры, имеющие хорошую скорость скачивания и малую | ||
+ | скорость отдачи. Таким клиентам сложно иметь хороший рейтинг, и они в итоге страдают | ||
+ | от этой системы. |
Версия 18:37, 17 января 2017
Peer-to-peer
Peer-to-peer -- это архитектура передачи данных, основанная на идее равноправия всех участников сети. В сети отсутствует выделенный сервера. В отличие от традиционных сетей, каждый из участников является как клиентом так и сервером. Основным преимуществом такой сети является практически полная независимость работоспособности сети от её размера. В то время, как построить и поддерживать сервер на сотни тысяч пользователей является не простой задачей, peer-to-peer сети отлично с этим справляются.
Идея peer-to-peer общения заключается в том, что каждый peer знает и поддерживает информацию о других участниках. Когда новый клиент подключается к сети он может узнать у любого пира информацию о том, где и какие файлы сейчас доступны. Когда клиент начинает скачивает файл себе на компьютер, то скаченные части этот файла сразу становятся доступны для скачивания другим пользователям. Никто не даёт гарантию, что каждый сервер будет находится длительное время в сети и давать скачивать информацию, напротив ситуация, когда сервер пропадает в процессе загрузки является естественной. В данном случае будет найден новый сервер, который может продолжить передачу данных.
Частично децентрализованные сети
В некоторых peer-to-peer сетях кроме равноправных node присутствуют сервера, которые выполняют административные функции, такие как поддержка базы он-лайн пользователей.
BitTorrent протокол
Протокол BitTorrent был разработан в 2001 году Коэном Брахмом, чтобы позволить набору узлов быстро и легко обеспечивать общий доступ к файлам.
Сам протокол состоит в следующем: есть небольшой торрент-файл, содержащий информацию о трекере, который следит за файлом, и список сегментов, из которых состоит файл: для сегмента хранится 160-битовый SHA-1 соответствующего сегмента файла (обычный размер сегмента -- 64-512 кб). Таким образом, скачав файл, можно посчитать от него хеши и проверить, все ли скачалось без ошибок. Кроме торрент-файла есть трекер: сервер, который следит за состоянием пиров -- узлов, имеющих отношение к раздаче. Пир, получив торрент-файл, подключается к трекеру и узнает список сидов -- пиров, у которых уже есть некоторые сегменты файла, готовые их отдать. Узнав адрес сида, у которого можно что-то скачать, клиент уже обращается напрямую к нему и скачивает у него файл. Таким образом, все данные идут напрямую от пира к пиру (peer-to-peer), а трекер участвует лишь в качестве координатора процесса.
Таким образом, протокол не является особо централизованным (нет никаких выделенных хранилищ с данными), но решает проблему "А где же мне найти, где бы скачать вот этот фрагмент файла".
Для того, чтобы не было проблем с поиском какой-то части файла, трекер сначала предлагает загружать сегменты, которые есть у наименьшего числа участников сети. Это позволяет избежать проблемы, характерной для последовательной загрузки файла, когда много участников скачали почти весь файл, а вот самого конца сейчас ни у кого нет.
Система работает хорошо, когда каждый ее участник скачал документ, а потом еще и остался на его раздаче, отдавая свой долг перед родиной. К сожалению, бывает так, что клиент скачал все, что ему нужно, и решил не оставаться на раздаче -- таких пиров называют личерами. Если в системе много личеров, то раздавать файлы некому, и скорость скачивания падает. Для решения этой проблемы трекер может применить систему поощрений: отдавать пиру очередной сегмент, лишь если его отношение "скачал/отдал" не меньше, чем какое-то конкретное число, мотивируя клиентов оставаться на раздаче, повышая свой рейтинг. К сожалению, это не всегда хорошо работает, так как бывают компьютеры, имеющие хорошую скорость скачивания и малую скорость отдачи. Таким клиентам сложно иметь хороший рейтинг, и они в итоге страдают от этой системы.