Gnutella
Материал из Википедии — свободной энциклопедии
Gnutella — полностью децентрализованная файлообменная сеть в рамках Интернета, потомок Napster, отличается принципиальным отсутствием центрального сервера. Сеть формируется, когда один пользователь Gnutella соединяется с другим пользователем, после чего они могут обмениваться доступной информацией. Обмениваться можно любым форматом файлов, есть множество удобных функций. Система позволяет задавать несколько поисков одновременно: получив результаты поиска на один запрос, можно задать другой, и он будет искать, пока вы разбираетесь с предыдущим, это экономит время. Результаты поиска достаточно подробны и неограниченны. Поддерживается докачка. Каждому файлу в результатах поиска выставляет баллы, которые показывают, как хорошо будет качаться файл. Сеть действительно большая, хотя то, насколько вы ее сможете осмотреть, зависит от скорости канала и мощности компьютера. Это связано с тем, что каждый подключенный пользователь — есть узел, обрабатывающий и пропускающий поисковые запросы. Вы можете даже наблюдать за этим сами. Количество связанных с вами хостов зависит также от мощности компьютера и скорости сети.
Содержание |
[править] История появления сети Gnutella
America-on-Line началa создавать сеть Gnutella с корыстными целями. Собрали лучших сетевых программистов из подразделения Nullsoft, которые и придумали непобедимое чудо сетевых технологий. 14 марта 2000 г. появилась программа размером 104 килобайта, которая давала возможность пользователю искать и обмениваться всеми видами файлов с другими владельцами Gnutella без всяких серверов. Но так получилось, что AOL объединилась со звукозаписывающей компанией и поняла, какую свинью она себе подложила. Сеть попытались закрыть, но она оказалась непобедимой, плюс, непосредственно создатели (Джастин Френкель и Том Пеппер) сопротивлялись. От AOL они ушли и стали строить эту сеть сами. Поиск в Gnutella построен по собственной особой технологии без центральных узлов gPulp. Узлами здесь служат сами пользователи, а саму программу вывести из строя невозможно. Поэтому, даже если самих программистов «раскулачат», сеть закрыть никто не сможет.
[править] Механизм работы
- 1. Пользователь загружает программу.
- 2. При первом запуске программы (назовем наш узел — A), пользователь сообщает клиенту IP-адрес одного из функционирующих узлов (условно узел B). Данная процедура может и не повторяться в будущем, но при первом запуске она обязательна. Это один из самых «скользких» моментов в реализации данной сети: без адреса хотя бы одного из работающих в данный момент узла пользователь не сможет подключиться. В принципе, существует целый ряд централизованных серверов, предоставляющих подобную информацию (connect1.gnutellanet.com:6346, gnutella.hostscache.com и др.), но такая схема уже приводит к некой централизованности.
- 3. Программа посылает запрос узлу B на предмет подтверждения активности.
- 4. Узел В подтверждает свою активность, если нет — см. шаг 2.
- 5. Узел А посылает узлу В так называемый Ping-запрос. В этом запросе указывается, помимо прочей информации, TTL (Time To Live) — число, означающее, сколько переходов от узла к узлу данный запрос может совершить. Обычно TTL равняется 7.
- 7. Другие узлы, получив Ping-запрос, посылают Pong-ответ, в котором содержится IP-адрес отправителя, номер порта и минимальная информация о файлах в фонде обмена.
- 8. Кроме того, узлы, получившие Ping-запрос, уменьшают TTL данного запроса на единицу, и если TTL больше 0, а также если данный запрос они не получали ранее (защита от зацикливания), рассылают его своим соседям.
- 9. Каждый узел, получивший Ping-запрос, отсылает Pong-ответ, тем же путем, которым этот запрос получил.
- 10. Когда Pong-ответы доходят до своего источника (т. е. нашего узла А), программа составляет список доступных узлов. Как правило, этот список насчитывает от 2 до 10 тысяч узлов и от 500 тысяч до миллиона файлов в обменном фонде.
- 11. Пользователь вводит запрос (например, название mp3-файла). Программа рассылает запрос на поиск файла всем узлам в списке, а далее просто ждет входящих сообщений.
- 12. Каждый узел, получивший запрос на поиск, ищет в своем фонде указанный файл. Если файл не найден, то узел просто не отвечает.
- 13. Если файл найден, узел отсылает инициатору запроса ответ с информацией о файле и о себе (IP-адрес).
- 14. Получив ряд ответов, программа выбирает один из узлов, устанавливает с ним стандартное HTTP-соединение и загружает файл. При этом все сообщения (от Ping-запроса до скачивания файла) посылаются по HTTP, что затрудняет их отслеживание и блокировку.
Некоторые клиенты Gnutella работают в соответствии с приведенным алгоритмом, а некоторые нет. Связано это с тем, что Gnutella — это, прежде всего, протокол взаимодействия узлов (такой же, как HTTP, например), и в нем не определены некоторые из аспектов этого взаимодействия.
[править] Клиенты
На данный момент Gnutella является одной из наиболее популярных файлообменных сетей. Работа сети Gnutella непрерывно совершенствуется благодаря усилиям разработчиков множества клиентов сети:
[править] Специализированные
[править] Мультисетевые
[править] См. также
[править] Ссылки
- Cайт Gnutella Protocol Development - описание спецификаций протокола Gnutella.