Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Gnutella - это большая одноранговая сеть . Это была первая децентрализованная одноранговая сеть в своем роде, которая привела к тому, что другие, более поздние сети приняли эту модель. [1] 14 марта 2020 года ему исполнилось два десятилетия , и у него миллионы пользователей для однорангового обмена файлами .

В июне 2005 года население Gnutella составляло 1,81 миллиона компьютеров [2], а к январю 2006 года оно увеличилось до более чем трех миллионов узлов. [3] В конце 2007 года это была самая популярная сеть обмена файлами в Интернете с оценочной долей рынка более чем 40%. [4]

История [ править ]

Первый клиент (также называемый Gnutella), от которого сеть получила свое название [5] [6], был разработан Джастином Франкелем и Томом Пеппером из Nullsoft в начале 2000 года, вскоре после приобретения компании AOL . 14 марта программа стала доступна для скачивания на серверах Nullsoft. О мероприятии было заранее объявлено на Slashdot , и в тот день тысячи пользователей скачали программу. [7] [8] исходный код должен был быть выпущен позже, под GNU General Public License (GPL); однако у первоначальных разработчиков так и не было возможности достичь этой цели. [9]

На следующий день AOL прекратил доступ к программе из-за юридических проблем и запретил Nullsoft продолжать работу над проектом. Это не остановило Gnutella; через несколько дней протокол был реконструирован , и начали появляться совместимые бесплатные клоны с открытым исходным кодом . [10] Эта параллельная разработка разных клиентов разными группами остается сегодня способом разработки Gnutella.

Среди первых независимых пионеров Gnutella были Джин Кан и Спенсер Кимбалл , они запустили первый портал, призванный собрать сообщество разработчиков ПО с открытым исходным кодом для работы над Gnutella, [11] [12], а также разработали GNUbile, одну из первых программ с открытым исходным кодом. исходный код (GNU-GPL) для реализации протокола Gnutella. [13] [14] [15]

Сеть Gnutella - это полностью распределенная альтернатива таким полуцентрализованным системам, как FastTrack ( KaZaA ) и исходной Napster . Первоначальная популярность сети была вызвана угрозой юридической кончины Napster в начале 2001 года. Этот рост популярности выявил пределы масштабируемости исходного протокола. В начале 2001 года вариации протокола (впервые реализованные в частных клиентах и клиентах с закрытым исходным кодом ) позволили улучшить масштабируемость. Вместо того чтобы рассматривать каждого пользователя как клиента и сервера, некоторые пользователи теперь рассматривались как ультраперы , маршрутизирующие поисковые запросы и ответы для пользователей, подключенных к ним.

Это позволило сети набрать популярность. В конце 2001 года клиент Gnutella LimeWire Basic стал бесплатным и с открытым исходным кодом. В феврале 2002 года Morpheus , коммерческая группа по обмену файлами, отказалась от своего однорангового программного обеспечения на основе FastTrack и выпустила новый клиент на основе бесплатного клиента Gnutella с открытым исходным кодом Gnucleus .

Слово Gnutella сегодня относится не к какому-то одному проекту или программному обеспечению, а к открытому протоколу, используемому различными клиентами.

Именем является контаминацией из GNU и Nutella , торговая марка итальянского фундука приправленного распространения: предположительно, Френкель и перец съело много Nutella работы по оригинальному проекту, и предназначен для лицензирования их готовой программы под GNU General Public License. Gnutella не связана с проектом GNU [16] или собственной одноранговой сетью GNU, GNUnet .

26 октября 2010 года популярный клиент Gnutella, LimeWire, был приказан судьей Кимба Вуд из окружного суда Соединенных Штатов в Южном округе Нью-Йорка, когда она подписала Указ о согласии, с которым согласились истцы звукозаписывающей индустрии и LimeWire. Это событие стало вероятной причиной заметного падения [17] в размере сети, потому что, в то время как переговоры о судебном запрете , LimeWire персонал вставил дистанционное отключение кода в программное обеспечение. После вступления судебного запрета в силу пользователи, установившие уязвимые версии (новее 5.5.10), были отключены от P2P-сети.. Поскольку LimeWire был бесплатным программным обеспечением , ничто не препятствовало созданию форков , в которых отсутствовал код отключения, до тех пор, пока не использовались товарные знаки LimeWire. Выключение не повлияло, например, на FrostWire , ветвь LimeWire, созданную в 2004 году, которая не содержит ни кода удаленного отключения, ни рекламного ПО .

9 ноября 2010 года LimeWire был воскрешен секретной командой разработчиков и назван LimeWire Pirate Edition . [18] Он был основан на LimeWire 5.6 BETA. В этой версии были удалены зависимости от сервера, и все функции PRO были включены бесплатно.

Дизайн [ править ]

Протокол поиска и извлечения gnutella

Чтобы представить себе, как изначально работала Gnutella, представьте себе большой круг пользователей (называемых узлами), у каждого из которых есть клиентское программное обеспечение Gnutella. При первоначальном запуске клиентское программное обеспечение должно выполнить загрузку и найти хотя бы один другой узел. Для этого использовались различные методы, в том числе уже существующий список адресов возможных рабочих узлов, поставляемый с программным обеспечением, с использованием обновленных веб-кешей известных узлов (так называемых веб-кешей Gnutella ), кешей хостов UDP и, в редких случаях, даже IRC.. После подключения клиент запрашивает список рабочих адресов. Клиент пытается подключиться к узлам, с которыми он был доставлен, а также к узлам, которые он получает от других клиентов, до тех пор, пока не достигнет определенной квоты. Он подключается только к этому количеству узлов, локально кэшируя адреса, которые он еще не пробовал, и отбрасывая адреса, которые он пытался найти и которые оказались недействительными. [ необходима цитата ]

Когда пользователь хочет выполнить поиск, клиент отправляет запрос каждому активно подключенному узлу. В версии протокола 0.4 количество активно подключенных узлов для клиента было довольно небольшим (около 5). В этой версии протокола каждый узел пересылает запрос всем своим активно подключенным узлам, которые, в свою очередь, пересылают запрос. Это продолжается до тех пор, пока пакет не достигнет заранее определенного количества переходов от отправителя (максимум 7). [ необходима цитата ]

Начиная с версии 0.6 (2002 [19] ), Gnutella представляет собой составную сеть, состоящую из листовых узлов и ультраузлов (также называемых ультрапирами). Листовые узлы связаны с небольшим количеством ультрапиров (обычно с 3), в то время как каждый ультрапир связан с более чем 32 другими ультрапирами. С этой более высокой исходящей степенью максимальное количество переходов, которое может пройти запрос, было снижено до 4.

Leaves и ultrapeers используют протокол маршрутизации запросов для обмена таблицей маршрутизации запросов (QRT), таблицей из 64 слотов Ki и до 2 слотов Mi, состоящих из хешированных ключевых слов. Листовой узел отправляет свой QRT каждому из ультрапира, к которому он подключен, и ультрапир объединяет QRT всех своих листьев (уменьшенных до 128 слотов Ki ) плюс свой собственный QRT (если они совместно используют файлы) и обменивается им со своими собственными соседи. Затем выполняется маршрутизация запроса путем хеширования слов запроса и проверки, все ли они совпадают в QRT. Ультраперы выполняют эту проверку перед пересылкой запроса на листовой узел, а также перед пересылкой запроса на одноранговый ультраузел при условии, что это последний переход, который может пройти запрос.

Если поисковый запрос обнаруживает результат, узел, у которого есть результат, связывается с искателем. В классическом протоколе Gnutella ответные сообщения отправлялись обратно по маршруту, выбранному запросом, поскольку сам запрос не содержал идентифицирующей информации для узла. Позднее эта схема была пересмотрена, чтобы доставлять результаты поиска по UDP непосредственно на узел, который инициировал поиск, обычно это ультрапир узла. Таким образом, в текущем протоколе запросы содержат IP-адрес и номер порта любого узла. Это снижает объем трафика, маршрутизируемого через сеть Gnutella, что делает ее значительно более масштабируемой. [ необходима цитата ]

Если пользователь решает загрузить файл, он согласовывает передачу файла . Если узел, на котором находится запрошенный файл, не защищен брандмауэром , запрашивающий узел может подключиться к нему напрямую. Однако, если узел защищен брандмауэром, что мешает исходному узлу получать входящие соединения, клиент, желающий загрузить файл, отправляет ему так называемый push-запрос на сервер, чтобы удаленный клиент вместо этого инициировал соединение (чтобы отправить файл) . Сначала эти push-запросы направлялись по исходной цепочке, которая использовалась для отправки запроса. Это было довольно ненадежно, потому что маршруты часто ломались, а маршрутизируемые пакеты всегда подлежали управлению потоком. проталкивать проксибыли введены для решения этой проблемы. Обычно это ультраперы листового узла, и они объявляются в результатах поиска. Клиент подключается к одному из этих push-прокси с помощью HTTP-запроса, и прокси-сервер отправляет push-запрос листу от имени клиента. Обычно также можно отправить push-запрос через UDP на push-прокси, что более эффективно, чем использование TCP. У проталкивающих прокси есть два преимущества: во-первых, соединения ультрапир-лист более стабильны, чем маршруты. Это делает push-запросы намного более надежными. Во-вторых, это уменьшает объем трафика, проходящего через сеть Gnutella. [ необходима цитата ]

Наконец, когда пользователь отключается, клиентское программное обеспечение сохраняет список известных узлов. Он содержит узлы, к которым был подключен клиент, и узлы, полученные из пакетов pong. Клиент использует его в качестве начального списка при следующем запуске, тем самым становясь независимым от служб начальной загрузки. [ необходима цитата ]

На практике этот метод поиска в сети Gnutella часто был ненадежным. Каждый узел является обычным пользователем компьютера; как таковые, они постоянно подключаются и отключаются, поэтому сеть никогда не бывает полностью стабильной. Кроме того, стоимость полосы пропускания для поиска в Gnutella экспоненциально росла с увеличением количества подключенных пользователей [20], часто приводя к насыщению соединений и делая более медленные узлы бесполезными. Поэтому поисковые запросы часто отбрасывались, и большинство запросов достигало лишь очень небольшой части сети. Это наблюдение определило сеть Gnutella как немасштабируемую распределенную систему и вдохновило на разработку распределенных хэш-таблиц , которые гораздо более масштабируемы, но поддерживают только поиск с точным соответствием, а не по ключевым словам. [цитата необходима ]

Для решения проблем узких мест разработчики Gnutella реализовали многоуровневую систему ультрапиров и листьев . Вместо того, чтобы все узлы считались равными, узлы, входящие в сеть, оставались на «краю» сети, как лист. Листья не обеспечивают маршрутизации. Узлы, способные маршрутизировать сообщения, повышаются до ультрапиров. Ультраперы принимают конечные соединения, поиск маршрутов и сообщения обслуживания сети. Это позволяет поиску распространяться дальше по сети и допускает многочисленные изменения топологии. Это значительно повысило эффективность и масштабируемость. [ необходима цитата ]

Кроме того, gnutella применила ряд других методов для уменьшения накладных расходов на трафик и повышения эффективности поиска. Наиболее заметными из них являются протокол маршрутизации запросов (QRP) и динамические запросы (DQ). С QRP поиск достигает только тех клиентов, у которых, вероятно, есть файлы, поэтому поиск редких файлов становится намного более эффективным. С DQ поиск останавливается, как только программа набирает достаточно результатов поиска. Это значительно снижает объем трафика, вызванного популярными поисковыми запросами. [ необходима цитата ]

Одним из преимуществ такой децентрализации Gnutella является то, что очень сложно отключить сеть и сделать ее такой, в которой пользователи - единственные, кто может решать, какой контент будет доступен. В отличие от Napster , где вся сеть полагалась на центральный сервер, Gnutella нельзя выключить, выключив какой-либо один узел. Децентрализованная сеть не позволяет злоумышленникам получить контроль над содержимым сети и / или манипулировать данными, управляя центральным сервером. [21]

Функции и расширения протокола [ править ]

Gnutella когда-то работала по протоколу, основанному исключительно на запросах . Устаревший сетевой протокол Gnutella версии 0.4 использует пять различных типов пакетов, а именно: [22]

  • ping: обнаружение хостов в сети
  • понг: ответить на пинг
  • запрос: поиск файла
  • обращение к запросу: ответ на запрос
  • push: запрос на загрузку для сервантов с брандмауэром

Эти пакеты облегчают поиск. Передача файлов вместо этого осуществляется по протоколу HTTP . [23]

Разработкой протокола Gnutella в настоящее время руководит Форум разработчиков Gnutella (GDF). Многие расширения протокола были разработаны и разрабатываются поставщиками программного обеспечения и разработчиками бесплатных Gnutella для GDF. Эти расширения включают интеллектуальную маршрутизацию запросов, контрольные суммы SHA-1 , передачу попаданий запроса через UDP , запросы через UDP, динамические запросы через TCP , передачу файлов через UDP, метаданные XML , обмен источниками (также называемый сеткой загрузки ) и параллельную загрузку в срезах ( роение). [23]

Предпринимаются попытки завершить эти расширения протокола в спецификации Gnutella 0.6 на веб-сайте разработки протокола Gnutella. Стандарт Gnutella 0.4 устарел, но остается последней спецификацией протокола, потому что все расширения пока существуют в виде предложений. На самом деле, сегодня сложно или невозможно подключиться к 0,4 рукопожатия. По словам разработчиков из GDF, новым разработчикам следует заняться версией 0.6, используя незавершенные спецификации . [ необходима цитата ]

Протокол Gnutella все еще находится в стадии разработки. Несмотря на попытки полностью отказаться от сложности, унаследованной от старого Gnutella 0.4, и разработать чистую новую архитектуру сообщений, на сегодняшний день он остается одним из самых успешных протоколов обмена файлами. [ необходима цитата ]

Программное обеспечение [ править ]

В следующих таблицах сравнивается общая и техническая информация для ряда приложений, поддерживающих сеть Gnutella. Таблицы не пытаются дать полный список клиентов Gnutella . Таблицы ограничены клиентами, которые могут участвовать в текущей сети Gnutella.

Общие характеристики [ править ]

  Прекращенный проект

Особенности Gnutella [ править ]

Заметки [ править ]

  1. ^ Относится к прямому чату клиент-клиент; не IRC-чат, который часто также доступен в том же приложении через встроенное окно браузера HTTP.
  2. ^ Автоматически настраивает переадресацию портов в маршрутизаторах или комбинированных модемах / шлюзах, которые поддерживают управление UPnP.
  3. ^ R eliable UDP протокол обеспечивает NAT-к-NAT переводы, иногда называемые Firewall-к-брандмауэре или «пробивки отверстий», вслучаяхкогда переадресации портов нет илине может быть сделано пользователем.
  4. ^ Поскольку у GWC были проблемы с перегрузкой трафика и долговременной надежностью, кеширование хоста UDP стало предпочтительным методом начальной загрузки; хотя некоторые GWC остаются доступными для использования более старого программного обеспечения.
  1. ^ Только клиентский режим, как зависимый лист на ультраперах.
  2. ^ a b Невысокая исходящая степень , поэтому в нынешнем виде он непригоден для использования.
  3. ^ Версия 0.9.2.7
  4. ^ a b c Через сеть Mojito DHT на базе Kademlia, поддерживаемую только LimeWire и gtk-gnutella (начиная с версии r15750); это полностью отличается от поиска SHA-1, поддерживаемого большинством клиентов gnutella.
  5. ^ gtk-gnutella версии 0.98.4 и новее.
  6. ^ a b Поскольку клиент LimeWire больше не доступен, клиенты, которые используют большую часть кода LimeWire, например FrostWire , могут предоставить альтернативу.
  7. ^ a b Запуск порта или межсетевой экран для межсетевого экрана (FW2FW).
  8. ^ a b Автоматически с UPnP или вручную в параметрах брандмауэра LimeWire
  9. ^ Черезпрокси-сервер SOCKS, который может туннелировать через SSH .
  10. ^ Начиная с версии 2.2.4.0
  • Morpheus значительно отличается и может иметь полностью независимый код от движка GnucDNA. Морфеус может функционировать как современный ультрапир, тогда как другие клиенты GnucDNA не могут.
  • Gnucleus и Kiwi Alpha используют движок GnucDNA .
  • BearFlix , функционально ограниченная версия серии BearShare 5.2, может искать только изображения или видео, а общие видео ограничены относительно небольшой длиной.
  • giFTcurs , Apollon , FilePipe , giFToxic , giFTui , giFTwin32 , KCeasy , Poisoned и Xfactor - это интерфейсы GUI для движка giFT .
  • Этаи использует устаревший сетевой код Shareaza .
  • MP3 Rocket, 360Share, LemonWire, MP3Torpedo и DexterWire - это варианты LimeWire .
  • FrostWire (до версии 4.21.8) почти идентичен LimeWire 4.18, но версии выше 5.00 больше не используют gnutella.
  • Acquisition и Cabos - это пользовательские интерфейсы, накладывающиеся на движок LimeWire .
  • LimeWire Pirate Edition (5.6.2) - это возрожденная версия невыпущенной альфа- версии LimeWire 5.6.1, поэтому она имеет аналогичные функции за исключением автоматических обновлений (с пачками) и централизованного дистанционного управления для отключения основных функций, таких как поиск и загрузка, были удалены.

Gnutella2 [ править ]

Протокол Gnutella2 (часто называемый G2), несмотря на свое название, не является протоколом-преемником Gnutella и не связан с исходным проектом Gnutella [26], а скорее представляет собой совершенно другой протокол, который является ответвлением исходного проекта и совмещен с ним. Имя Gnutella. Болезненным моментом для многих разработчиков Gnutella является то, что название Gnutella2 передает улучшение или превосходство, которое привело к огненной войне. Другая критика включала использование сети Gnutella для начальной загрузки одноранговых узлов G2 и плохую документацию протокола G2. Кроме того, более частые попытки поиска клиента Shareaza , одного из первых клиентов G2, могут излишне обременить сеть Gnutella. [27]

Оба протокола претерпели значительные изменения с момента форка в 2002 году. G2 имеет преимущества и недостатки по сравнению с Gnutella. Часто упоминаемое преимущество заключается в том, что гибридный поиск Gnutella2 более эффективен, чем лавинная рассылка запросов в исходной Gnutella . Однако Gnutella заменила лавинную рассылку запросов более эффективными методами поиска, начиная с маршрутизации запросов в 2002 году. Это было предложено в 2001 году разработчиками Limewire. [28] [29] [30] Преимущество Gnutella - это большая база пользователей, которая исчисляется миллионами, [3] . Сеть G2 примерно на порядок меньше. [31] Сложно сравнивать протоколы в их нынешнем виде. Выбор клиента в любой сети, вероятно, так же сильно влияет на конечного пользователя.

См. Также [ править ]

  • Bitzi
  • Гнутелла-гусеница
  • GNUnet

Ссылки [ править ]

  1. Кушнер, Дэвид (13 января 2004 г.). «Самый опасный компьютерщик в мире» . Rolling Stone . Архивировано из оригинала на 30 июня 2012 года . Проверено 10 мая 2011 года .
  2. ^ Slyck Новости - eDonkey2000 Почти в два раза больше FastTrack Архивированные 2018-01-29 в Wayback Machine , Томас Mennecke для Slyck.com , 2 июня 2005 года.
  3. ^ a b О долгосрочной эволюции двухуровневого оверлея Gnutella . Rasti, Stutzbach, Rejaie, 2006. См. Рисунок 2a.
  4. ^ Исследование Ars Technica: BitTorrent видит большой рост, LimeWire по-прежнему №1 P2P-приложение Эрик Бангеман, 21 апреля 2008 г.
  5. ^ «Nullsoft от AOL создает программное обеспечение для обмена MP3» . CNET . Проверено 13 апреля 2017 .
  6. ^ AfterDawn.com. «Гнутелла» . После рассвета . Проверено 13 апреля 2017 .
  7. ^ "Открытый исходный код Napster: Gnutella - Slashdot" . slashdot.org .
  8. ^ «CNN - Последние новости, последние новости и видео» . CNN .
  9. ^ «Относительно Gnutella - Проект GNU - Фонд свободного программного обеспечения» .
  10. ^ Шелл, Бернадетт Глубик; Шелл, Бернадетт; Мартин, Клеменс (05.09.2006). Новый мир хакерского словаря Вебстера . Джон Вили и сыновья. ISBN 978-0-470-04752-1.
  11. ^ «Программисты помогают взлететь клонам Napster» . CNET . Проверено 13 апреля 2017 .
  12. ^ "Пионер Gnutella Джин Кан умирает" . CNET . Проверено 13 апреля 2017 .
  13. ^ "gnubile список файлов" . stearns.org . Проверено 13 апреля 2017 .
  14. ^ "Исходный код Gnubile" . underpop.free.fr . Проверено 13 апреля 2017 .
  15. ^ ftp://ftp.cs.umn.edu/pub/netbsd/NetBSD-current/pkgsrc/net/gnubile/README.html [ постоянная мертвая ссылка ]
  16. ^ «Относительно Gnutella (www.gnu.org)» .
  17. Хлоя Альбанезиус (18 июля 2011 г.). «Инди-лейблы подали в суд на LimeWire из-за неудачной сделки по авторскому праву» . Журнал ПК . Зифф-Дэвис . Проверено 19 марта 2012 года . После закрытия LimeWire процент пользователей Интернета в США, имеющих доступ к файлообменным службам P2P, упал примерно на 7 процентов с [своего] рекордного максимума в 2007 году ...
  18. Хлоя Альбанезиус (9 ноября 2010 г.). «Отчет: LimeWire 'Resurrected' секретной командой разработчиков» . Журнал ПК . Зифф-Дэвис . Проверено 19 марта 2012 года .
  19. ^ «Разработка протокола Gnutella» . rfc-gnutella.sourceforge.net . Проверено 13 апреля 2017 .
  20. ^ Почему Gnutella не масштабируется. Нет, правда. Февраль 2001 г.
  21. ^ Berkes, Джем (9 апреля 2003). «Децентрализованная архитектура одноранговой сети: Gnutella и Freenet» (PDF) . berkes.ca/ . Университет Манитобы. Архивировано из оригинального (PDF) 8 августа 2017 года . Проверено 26 октября 2019 года .
  22. ^ Краска, Марк. Макдональд, Рик. Руфи, Антун В., «Основы сети», Сетевая академия Cisco, Cisco Press, глава 3. стр. 91
  23. ^ a b Краска, Марк. Макдональд, Рик. Руфи, Антун В., «Основы сети», Сетевая академия Cisco, Cisco Press, глава 3. стр. 90.
  24. ^ "CitrixWire" . BrotherSoft . Архивировано из оригинала на 2017-04-14 . Проверено 13 апреля 2017 .
  25. ^ "Страница загрузки Shareaza на сайте sourceforge" . SourceForge . Проверено 6 июля 2019 .
  26. ^ Gnutella против Gnutella2, Часть 2 Томас Mennecke для Slyck.com , 25 февраля 2003 года.
  27. ^ Gnutella против Gnutella2, часть 1 архивация 2016-03-05 в Вайбаке машина Томас Mennecke для Slyck.com , 25 февраля 2003
  28. ^ Сравнение Peer-to-Peer методы поиска архивации 2007-09-26 в Вайбак машины Димитриос Tsoumakos, 2003
  29. ^ Маршрутизация запросов для предложения Gnutella Network Кристофер Рорс, 2001-12-18
  30. ^ Маршрутизация запросов для сети Gnutella 1.0 Кристофер Рорс, 2002-05-16
  31. ^ G2 Network Statistics Population ~ 200,000 января 2010.
  • Краска, Марк. Макдональд, Рик. Руфи, Антун В., «Основы сети», Сетевая академия Cisco, Cisco Press, глава 3. стр. 91
  • Краска, Марк. Макдональд, Рик. Руфи, Антун В., «Основы сети», Сетевая академия Cisco, Cisco Press, глава 3. стр. 90.

Внешние ссылки [ править ]

  • Форумы Gnutella Официальные форумы поддержки пользователей
  • Wiki по разработке протокола Gnutella (в Интернет-архиве , 2009 г.)
  • Портал разработки протокола Gnutella (в Интернет-архиве)
  • Официальный сайт Gnutella (в Интернет-архиве)
  • GnuFU , Gnutella для пользователей: описание внутренней работы сети gnutella в удобном для пользователя стиле.
  • Что касается Gnutella от GNU
  • Тест гласности Gnutella traffic shaping ( Институт программных систем Макса Планка )