Gnutella2 - Gnutella2
Часть серия на |
Обмен файлами |
---|
Технологии |
Сайты обмена видео |
BitTorrent сайты |
Академический |
Сети обмена файлами |
P2P клиенты |
Потоковые программы |
Анонимный обмен файлами |
Развитие и социальные аспекты |
По стране или региону |
Сравнения |
Gnutella2, часто называемый G2, это пиринговый протокол разработан в основном Майкл Стоукс и выпущен в 2002 году.
Хотя вдохновленный гнутелла протокол, G2 мало что разделяет его дизайн, за исключением рукопожатие соединения и скачать механика.[1]
G2 использует расширяемый двоичный файл пакет формат и совершенно новый алгоритм поиска.
Кроме того, у G2 есть родственные (но существенно отличающиеся) топология сети и улучшенный метаданные система, которая помогает эффективно уменьшить количество поддельных файлов, таких как вирусы, в сети.
История
В ноябре 2002 года Майкл Стоукс объявил о протоколе Gnutella2 на Форум разработчиков Gnutella. Хотя некоторые думали, что цели, заявленные для Gnutella2, заключаются в первую очередь в том, чтобы полностью отказаться от протокола gnutella 0.6 и начать все сначала, чтобы некоторые менее чистые части gnutella были выполнены более элегантно и, в целом, были впечатляющими и желанными; Другой Разработчики, прежде всего LimeWire и BearShare, думал, что это "дешевый рекламный трюк "и сниженные технические достоинства. Некоторые по-прежнему отказываются называть сеть" Gnutella2 ", а вместо этого называют ее" Протокол Майка "(" MP ").[2]
Протокол Gnutella2 по-прежнему использует старую строку подтверждения "GNUTELLA CONNECT / 0.6" для своих подключений.[1] как определено в спецификациях gnutella 0.6. Этот обратно совместимый метод рукопожатия был подвергнут критике на форуме разработчиков Gnutella как попытка использовать сеть gnutella для самонастройка новой, несвязанной сети, в то время как сторонники сети утверждали, что ее намерение состояло в том, чтобы оставаться обратно совместимый с gnutella и позволить текущим клиентам gnutella добавлять Gnutella2 на досуге.
Когда разработчики закрепились на своих позициях, пламя войны вскоре вспыхнул, еще больше укрепив решимость обеих сторон.[3][4][5][6]
В проект спецификации были выпущены 26 марта 2003 г., и более подробно технические характеристики вскоре последовал. G2 не поддерживается многими «старыми» сетевыми клиентами gnutella, однако многие клиенты Gnutella2 все еще подключаются к gnutella. Многие сторонники Gnutella2 утверждают, что это из-за политический сторонники gnutella утверждают, что радикальные изменения не имеют достаточных достоинств, чтобы перевесить стоимость глубоких изменений.[7]
Дизайн
Gnutella2 делит узлы на две группы: Листья и концентраторы. Большинство листьев поддерживают два связи в концентраторы,[8] в то время как концентраторы принимают сотни подключений Leaf и в среднем 7 подключений к другим концентраторам. Когда поиск инициируется, узел получает список концентраторов, если необходимо, и связывается с концентраторами в списке, отмечая, какие из них были найдены, пока список не будет исчерпан или не будет достигнут предопределенный предел поиска. Это позволяет пользователю легко найти популярный файл, не загружая сеть, в то же время теоретически сохраняя возможность для пользователя находить один файл, расположенный в любом месте сети.
Хабы индексируют что файлы Лист с помощью Таблица маршрутизации запросов, который заполнен одиночными кусочек записи хеши из ключевые слова, который Лист загружает к концентратору, и который затем объединяет со всеми хеш-таблицы его листья отправили, это для того, чтобы создать версию для отправки в соседние концентраторы. Это позволяет концентраторам сократить пропускная способность сильно, просто не пересылая запросы в листья и соседние хабы, если записи, соответствующие поиску, не найдены в таблицы маршрутизации.
Gnutella2 широко использует UDP, скорее, чем TCP, для поиска. В накладные расходы установки TCP-соединения сделало бы случайная прогулка поисковая система, требующая контакта большого количества узлов с небольшими объемами данных, неработоспособна. Однако UDP не лишен недостатков. Поскольку UDP не требует установления соединения, не существует стандартного метода информирования отправляющего клиента о том, что сообщение был получен, поэтому, если пакет потерян, нет никакого способа узнать. Из-за этого UDP-пакеты в Gnutella2 имеют флаг для включения настройки надежности. Когда получен UDP-пакет с включенным флагом надежности, клиент ответит подтвердить пакет чтобы сообщить отправляющему клиенту, что его пакет прибыл в пункт назначения. Если пакет подтверждения не отправлен, надежный пакет будет повторно передан в попытке гарантировать доставку. Пакеты с низкой важностью, для которых не установлен флаг, не требуют пакета подтверждения, что снижает надежность, но также снижает накладные расходы, поскольку нет необходимости отправлять и ожидать пакет подтверждения.
Особенности протокола
Gnutella2 имеет расширяемый формат двоичных пакетов, сравнимый с XML дерево документов, которое было задумано как ответ на некоторые менее элегантные части gnutella. Формат пакета был разработан таким образом, чтобы можно было добавлять будущие улучшения сети и функции отдельных поставщиков, не беспокоясь о том, что ошибки в других клиентах сети.[9]
Для идентификации файла и безопасного честность проверка файлов, которые он использует SHA-1 хеши. Чтобы файл был надежно скачано параллельно из нескольких источников, а также для обеспечения надежной загрузки частей, пока файл еще загружается (роение ), Хеши тигрового дерева используются.[10]
Чтобы создать больше крепкий и полноценная система поиска, Gnutella2 также имеет метаданные система для более полной маркировки, рейтинга и информации о качестве, которая будет представлена в результатах поиска, чем просто собираемая по именам файлов.[11] Узлы могут делиться этой информацией даже после удаления файла, что позволяет пользователям отмечать вирусы и черви в сети, не требуя от них хранить копию.
Gnutella2 также использует сжатие в своих сетевых подключениях, чтобы уменьшить полосу пропускания, используемую сетью.[10]
Shareaza есть дополнительная функция для запроса превью изображений и ролики хотя только FilesScope пользуется этим ограниченным преимуществом.
gtk-gnutella расширил протокол, чтобы еще больше сократить разрыв между Гнутелла и G2. В частности, полонадежный уровень UDP был улучшен для добавления кумулятивных и расширенных подтверждений способом, который обратно совместим с унаследованными клиентами G2.[12] Дополнительные расширения включают строку «A» в / Q2 / I [13] и введение / QH2 / H / ALT, / QH2 / H / PART / MT, / QH2 / HN, / QH2 / BH и / QH2 / G1 в совпадениях запроса.[14]
Отличия от гнутеллы
В целом, эти две сети довольно похожи, с основными различиями в формате пакетов и методологии поиска.
Протокол
Формат пакета Gnutella подвергся критике за то, что он изначально не был разработан с расширяемость в виду, и в него было много дополнений за эти годы, что сделало структуру пакетов загроможденной и неэффективной.[15] Gnutella2 извлекла уроки из этого, и помимо многих дополнительных функций стандарта gnutella в Gnutella2, изначально разработанных с учетом возможности расширения в будущем.
Алгоритм поиска
В то время как gnutella использует наводнение запросов метод поиска, Gnutella2 использует случайная прогулка система, в которой поисковый узел собирает список концентраторов и связывается с ними напрямую, по одному. Однако по мере того, как Hub организовываются в так называемую "Hub" кластеры ", где каждый концентратор отражает информацию, хранящуюся его соседями, Leaf возвращает информацию всего кластера концентратора (обычно 7 концентраторов). Это имеет несколько преимуществ по сравнению с системой лавинной рассылки запросов gnutella. Это более эффективно, так как продолжение поиска не увеличивает сетевой трафик экспоненциально, запросы не маршрутизируются через такое количество узлов, и это увеличивает детализация поиска, позволяя клиенту остановиться, как только будет получен заранее определенный порог результатов, более эффективно, чем в gnutella. Однако система ходьбы также увеличивает сложность сети и обслуживание и управление сетью требуется, а также требовать гарантий для предотвращения злоумышленник от использования сети для атаки отказа в обслуживании.
Терминология
Существует также различие в терминологии: в то время как более функциональные узлы, которые используются для уплотнения сети, называются Ultrapeers в гнутелле их называют Концентраторы в Gnutella2, и они также используются немного иначе в топологии. В gnutella Ultrapeers обычно поддерживают столько же листьев, сколько одноранговых соединений, в то время как Gnutella2 Hubs поддерживают гораздо больше листьев и меньше одноранговых соединений (Hub-to-Hub). Причина этого в том, что методы поиска в различных сетях имеют разные оптимальные топологии.
Клиенты
Список
Бесплатно программное обеспечение Среди клиентов Gnutella2:
- Адажио[16] (Кросс-платформенный), написанный на Ада под лицензией GPL.
- Gnucleus (Windows), написано на C /C ++, под LGPL
- Gtk-gnutella (Кросс-платформенный), написанный на C. Начиная с версии 1.1 поддерживает только подключения к G2 в оконечном режиме.[17]
MLDonkey(Кросс-платформенный), написанный на OCaml под GPL, однако, начиная с версии 2.9.0 (2007), поддержка официально не поддерживается и отключена в двоичных файлах.[18]- Shareaza (Windows), многосетевой, написанный на C ++, под лицензией GPL, в настоящее время +/- 93% доля сети[19]
- Шарин (Кросс-платформенный), написанный на C ++, веб-интерфейс
- G2CD (Linux / Unix / BSD) Реализация сети Gnutella2 только в режиме концентратора.[20]
- Quazaa[21] (Кросс-платформенный), написанный на C ++ / QT4 под GPLv3. Новый клиент, вдохновленный Shareaza.
Проприетарное программное обеспечение реализации включают:
- Фокси (Windows) китайский ГнукДНК - производная программа, взаимодействие с любыми другими клиентами G2 невозможно, и использует свою собственную сеть "Foxy", которая наполовину плохо отделена от исходного G2 и известна утечкой из сети в G2.[нужна цитата ]. Теоретически клиент совместим с G2. свободный.
- Морфеус (Windows)
Сравнение
В следующей таблице сравнивается общая и техническая информация для ряда доступных приложений, поддерживающих сеть G2.
Клиент | Чат | Обрабатывает большие файлы (> 4 ГБ) | УХЛ[22] | Unicode | Сопоставление портов UPnP | Обход NAT | Удаленный предварительный просмотр | Возможность поиска по хешам | Режим концентратора | Шпионское ПО / Рекламное ПО / Вредоносное ПО -свободный | Другие сети | На основе | Операционные системы | Другой |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Адажио | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | да | Нет данных | - | Кроссплатформенность | - |
Фокси | да | Нет | Нет | да | да | Нет | Нет | да | Только Фокси | Нет | Нет данных | ГнукДНК | Кроссплатформенность | - |
FileScope | да | Нет | Нет | Нет | Нет | Нет | да | да | да | да | гнутелла, | - | Кроссплатформенность | - |
Gnucleus | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | да | гнутелла | ГнукДНК | Windows | - |
gtk-gnutella | Нет | да | Нет | да | да | да | Нет | да | Нет | да | гнутелла | - | Кроссплатформенность | - |
Морфеус | да | Нет | Нет | Нет | да | Нет | Нет | да | Нет | Нет | гнутелла, NEOnet | ГнукДНК | Windows | Разработка и хостинг клиента остановлены |
Quazaa | Нет | Нет | Нет | да | Нет | Только IPv4to6 | Нет | да | да | да | пока нет | - | Кроссплатформенность | Включает чат IRC, поддержку IPv6. Все еще находится на ранней стадии разработки. |
Shareaza | да | да | да | да | да | Нет | да | да | да | да | гнутелла, | - | Windows | Включает IRC поддерживать |
Шарин | Нет | да | да | Нет | Нет | Нет | Нет | да | Нет | да | Нет данных | - | Unix /Linux | Консольное приложение с WEB-GUI |
Смотрите также
Рекомендации
- ^ а б «Обсуждение разработчиками сходства между Gnutella и Gnutella2». Форум разработчиков Gnutella. Получено 2006-05-10.
- ^ "Обсуждение GDF названия Gnutella2". Форум разработчиков Gnutella. Получено 2006-05-10.
- ^ "Часть Gnutella / Gnutella2 Flame War (1)". Форум разработчиков Gnutella. Получено 2006-08-06.
- ^ "Часть Gnutella / Gnutella2 Flame War (2)". Форум разработчиков Gnutella. Получено 2006-08-06.
- ^ "Часть Gnutella / Gnutella2 Flame War (3)". Форум разработчиков Gnutella. Получено 2006-08-06.
- ^ "Часть Gnutella / Gnutella2 Flame War (4)". Форум разработчиков Gnutella. Получено 2006-08-06.
- ^ «Обсуждение разработчиками перехода на Gnutella2». Форум разработчиков Gnutella. Получено 2006-05-10.
- ^ "История сети Gnutella2". Гусеничный робот Trillinux (G2paranha). Получено 2009-04-12.
- ^ «Структура пакета». Gnutella2 вики. Получено 2007-11-07.
- ^ а б "Gnutella2 Standard". Gnutella2 вики. Получено 2007-11-07.
- ^ «Простой язык запросов и метаданные». Gnutella2 вики. Получено 2007-11-07.
- ^ "UDP-трансивер - Gnutella2". G2.doxu.org. Получено 2014-08-06.
- ^ «Q2 - Gnutella2». G2.doxu.org. 2014-02-25. Получено 2014-08-06.
- ^ "QH2 - Gnutella2". G2.doxu.org. 2014-03-12. Получено 2014-08-06.
- ^ "Обсуждение разработчиками форматов пакетов Gnutella и Gnutella2". Форум разработчиков Gnutella. Получено 2006-05-15.
- ^ "Скачать Adagio | SourceForge.net".
- ^ "gtk-gnutella - Графический клиент Gnutella для Unix". Gtk-gnutella.sourceforge.net. Получено 2014-08-06.
- ^ "OtherNetworksSupported - MLDonkey". mldonkey.sourceforge.net.
- ^ "GitHub - kaffeemonster / g2cd: реализация только для концентратора G2". 27 сентября 2016 г. - через GitHub.
- ^ «Квазаа - Дом». Quazaa.sourceforge.net. Получено 2014-08-06.
- ^ UKHL = Список известных концентраторов UDP