|
|
Компьютеры - Gnutella - Механизм работы04 мая 2011
Оглавление: 1. Gnutella 2. Механизм работы 3. Клиенты
- Пользователь загружает программу.
- При первом запуске программы, пользователь сообщает клиенту IP-адрес одного из функционирующих узлов. Данная процедура может и не повторяться в будущем, но при первом запуске она обязательна. Это один из самых «скользких» моментов в реализации данной сети: без адреса хотя бы одного из работающих в данный момент узла пользователь не сможет подключиться. В принципе, существует целый ряд централизованных серверов, предоставляющих подобную информацию, но такая схема уже приводит к некой централизованности.
- Программа посылает запрос узлу B на предмет подтверждения активности.
- Узел В подтверждает свою активность, если нет — см. шаг 2.
- Узел А посылает узлу В так называемый Ping-запрос. В этом запросе указывается, помимо прочей информации, TTL — число, означающее, сколько переходов от узла к узлу данный запрос может совершить. Обычно TTL равняется 7.
- Другие узлы, получив Ping-запрос, посылают Pong-ответ, в котором содержится IP-адрес отправителя, номер порта и минимальная информация о файлах в фонде обмена.
- Кроме того, узлы, получившие Ping-запрос, уменьшают TTL данного запроса на единицу, и если TTL больше 0, а также если данный запрос они не получали ранее, рассылают его своим соседям.
- Каждый узел, получивший Ping-запрос, отсылает Pong-ответ, тем же путем, которым этот запрос получил.
- Когда Pong-ответы доходят до своего источника, программа составляет список доступных узлов. Как правило, этот список насчитывает от 2 до 10 тысяч узлов и от 500 тысяч до миллиона файлов в обменном фонде.
- Пользователь вводит запрос. Программа рассылает запрос на поиск файла всем узлам в списке, а далее просто ждет входящих сообщений.
- Каждый узел, получивший запрос на поиск, ищет в своем фонде указанный файл. Если файл не найден, то узел просто не отвечает.
- Если файл найден, узел отсылает инициатору запроса ответ с информацией о файле и о себе.
- Получив ряд ответов, программа выбирает один из узлов, устанавливает с ним стандартное HTTP-соединение и загружает файл. При этом все сообщения посылаются по HTTP, что затрудняет их отслеживание и блокировку.
Некоторые клиенты Gnutella работают в соответствии с приведенным алгоритмом, а некоторые нет. Связано это с тем, что Gnutella — это, прежде всего, протокол взаимодействия узлов, и в нем не определены некоторые из аспектов этого взаимодействия.
Поиск в Gnutella построен на децентрализованной технологии gPulp.
Просмотров: 2724
|