Gnutella2 - Gnutella2

Shareaza2.JPG

Gnutella2 , často označovaný jako G2 , je protokol typu peer-to-peer vyvinutý hlavně Michaelem Stokesem a vydaný v roce 2002.

I když je G2 inspirován protokolem gnutella , sdílí málo svého designu, s výjimkou mechanismu handshake připojení a stahování .

G2 využívá rozšiřitelný formát binárních paketů a zcela nový vyhledávací algoritmus .

Kromě toho má G2 související (ale výrazně odlišnou) topologii sítě a vylepšený systém metadat , který účinně pomáhá omezit falešné soubory, například viry , v síti.

Dějiny

V listopadu 2002 oznámil Michael Stokes protokol Gnutella2 Fóra pro vývojáře Gnutella. Zatímco někteří si mysleli, že cílem stanoveným pro Gnutella2 je především udělat čistý rozchod s protokolem gnutella 0.6 a začít znovu, aby některé méně čisté části gnutelly byly provedeny elegantněji a obecně byly působivé a žádoucí; další vývojáři , zejména vývojáři LimeWire a BearShare , si mysleli, že jde o „levný reklamní kousek “ a zlevněné technické přednosti. Někteří stále odmítají označovat síť jako „Gnutella2“ a místo toho ji označují jako „Mikeův protokol“ („MP“).

Protokol Gnutella2 stále používá pro své připojení starý handshake řetězec „GNUTELLA CONNECT / 0.6“, jak je definován ve specifikacích gnutella 0.6. Tuto zpětně kompatibilní metodu handshake kritizovalo Fórum pro vývojáře Gnutella jako pokus o použití sítě gnutella pro bootstrapping nové, nesouvisející sítě, zatímco zastánci sítě tvrdili, že jejím záměrem bylo zůstat zpětně kompatibilní s gnutellou a umožnit současnou gnutellu klientům přidat Gnutella2 ve svém volném čase.

S vývojáři zakořeněnými ve svých pozicích vypukla brzy plamenná válka , která dále upevnila odhodlání obou stran.

Tyto navrhované specifikace byly vydány dne 26. března 2003, a podrobnější specifikace brzy následovaly. G2 není podporován mnoha „starými“ klienty sítě Gnutella, nicméně mnoho klientů Gnutella2 se stále připojuje k Gnutella. Mnoho zastánců Gnutella2 tvrdí, že je to z politických důvodů, zatímco příznivci Gnutella tvrdí, že drastické změny nemají dostatečné zásluhy, aby převažovaly nad náklady na přepsání.

Design

Gnutella2 rozděluje uzly do dvou skupin: Leaves a Hubs. Většina listů udržuje dvě připojení k rozbočovačům, zatímco rozbočovače přijímají stovky připojení Leaf a v průměru 7 připojení k jiným rozbočovačům. Když je zahájeno vyhledávání, uzel v případě potřeby získá seznam rozbočovačů a kontaktuje rozbočovače v seznamu, přičemž si všimne, které byly prohledány, dokud není seznam vyčerpán nebo není dosaženo předdefinovaného limitu hledání. To umožňuje uživateli snadno najít oblíbený soubor bez načtení sítě, přičemž se teoreticky zachová schopnost uživatele najít jeden soubor umístěný kdekoli v síti.

Huby index jaké soubory listu má pomocí dotazu směrovací tabulky , která je plná jednoduchých bitových vstupů hash z klíčových slov , které Listové obrázky k rozbočovači a která náboji pak spojí se všemi stoly mřížky její listy odeslané , aby vytvořili verzi, která se odešle jejich sousedním rozbočovačům. To umožňuje rozbočovačům výrazně snížit šířku pásma jednoduchým nepřesíláním dotazů na Leaves a sousední rozbočovače, pokud ve směrovacích tabulkách nejsou nalezeny položky, které odpovídají vyhledávání .

Gnutella2 se při vyhledávání ve velké míře spoléhá na UDP , nikoli na TCP . Režie na nastavení připojení TCP by si náhodný chůze systém pro vyhledávání, které vyžadují kontaktování velkého počtu uzlů s malými objemy dat, nepoužitelný. UDP však není bez vlastních nevýhod. Protože UDP je bez připojení, neexistuje žádná standardní metoda informující odesílajícího klienta, že byla přijata zpráva , a pokud dojde ke ztrátě paketu, nelze to zjistit. Z tohoto důvodu mají pakety UDP v Gnutella2 příznak umožňující nastavení spolehlivosti. Když je přijat paket UDP s povoleným příznakem spolehlivosti, klient odpoví potvrzovacím paketem a informuje odesílajícího klienta, že jeho paket dorazil na místo určení. Pokud potvrzovací paket není odeslán, spolehlivý paket bude znovu odeslán ve snaze zajistit doručení. Pakety s nízkou důležitostí, které nemají povolený příznak, nevyžadují potvrzovací paket, což snižuje spolehlivost, ale také snižuje režii, protože není třeba odesílat a čekat na žádný potvrzovací paket.

Funkce protokolu

Gnutella2 má rozšiřitelný formát binárního paketu, srovnatelný se stromem dokumentů XML , který byl koncipován jako odpověď na některé méně elegantní části gnutelly. Formát paketu byl navržen tak, aby bylo možné přidat budoucí vylepšení sítě a funkce jednotlivých prodejců bez obav z způsobování chyb v ostatních klientech v síti.

Pro účely identifikace souborů a bezpečné kontroly integrity souborů používá hash SHA-1 . Aby bylo možné spolehlivě stáhnout soubor paralelně z více zdrojů a také aby bylo možné spolehlivě nahrávat součásti, zatímco se soubor stále stahuje (rojí se), používají se hash stromu Tiger .

Abychom vytvořili robustnější a úplnější systém pro vyhledávání, má Gnutella2 také systém metadat pro úplnější označení, hodnocení a informace o kvalitě, které mají být uvedeny ve výsledcích hledání, než jaké by byly jednoduše shromážděny podle názvů souborů. Uzly mohou tyto informace dokonce sdílet poté, co odstranily soubor, což uživatelům umožňuje označovat viry a červy v síti, aniž by museli uchovávat kopii.

Gnutella2 také využívá kompresi ve svých síťových připojeních ke snížení šířky pásma používaného sítí.

Shareaza má další funkci, která požaduje náhledy obrázků a videí, i když pouze FileScope toho využívá jen omezeně.

gtk-gnutella rozšířil protokol o další zmenšení rozdílu mezi Gnutella a G2. Zejména byla vylepšena polospolehlivá vrstva UDP, aby byla přidána kumulativní a rozšířená potvrzení způsobem, který je zpětně kompatibilní se staršími klienty G2. Mezi další rozšíření patří řetězec „A“ v / Q2 / I a zavedení / QH2 / H / ALT, / QH2 / H / PART / MT, / QH2 / HN, / QH2 / BH a / QH2 / G1 v dotazu zásahy.

Rozdíly od gnutella

Celkově jsou tyto dvě sítě poměrně podobné, přičemž hlavní rozdíly jsou ve formátu paketu a metodice vyhledávání.

Protokol

Gnutellovy formáty paketů byly kritizovány, protože nebyly původně navrženy s ohledem na rozšiřitelnost , a za ta léta měly mnoho přírůstků, takže struktura paketů byla přeplněná a neefektivní. Gnutella2 se z toho poučil a kromě toho, že má mnoho přidaných funkcí standardu gnutella v Gnutella2, navržených v budoucí rozšiřitelnosti od samého začátku.

Vyhledávací algoritmus

Zatímco gnutella používá k vyhledávání metodu zaplavení dotazů , Gnutella2 používá systém náhodného procházení , kdy vyhledávací uzel shromažďuje seznam rozbočovačů a kontaktuje je přímo, jeden po druhém. Jak se však Hub organizuje v tzv. „Hub clusterech “, kde každý Hub zrcadlí informace uložené jeho sousedy, Leafovi jsou vráceny informace o celém clusteru Hubu (obvykle 7 Hubů). To má několik výhod oproti systému zaplavování dotazů gnutella. Je to efektivnější, protože pokračování ve vyhledávání nezvyšuje síťový provoz exponenciálně , dotazy nejsou směrovány přes tolik uzlů a zvyšuje se granularita vyhledávání, což umožňuje klientovi zastavit se, jakmile má předem definovaný práh výsledků byly získány efektivněji než u gnutelly. Systém chůze však také zvyšuje složitost sítě a vyžaduje údržbu a správu sítě , stejně jako vyžaduje ochranná opatření, která zabrání útočníkovi se zlými úmysly v použití sítě k útokům typu odmítnutí služby .

Terminologie

Rozdíl je také v terminologii: zatímco schopnější uzly, které se používají ke kondenzaci sítě, se v gnutelle označují jako Ultrapeers, v Gnutella2 se jim říká Hubs a v topologii se také používají trochu odlišně. U gnutella Ultrapeers obecně udržují tolik listů jako peer připojení, zatímco Gnutella2 Hubs udržují mnohem více listů a méně peer (Hub-to-Hub) připojení. Důvodem je to, že metody vyhledávání různých sítí mají různé optimální topologie.

Klienti

Seznam

Mezi klienty bezplatného softwaru Gnutella2 patří:

  • Adagio (Cross Platform), napsané v Adě , pod GPL.
  • Gnucleus (Windows), napsaný v C / C ++ , pod LGPL
  • Gtk-Gnutella (Cross Platform), napsaný v C . Podporuje pouze připojení v listovém režimu k G2 od verze 1.1.
  • MLDonkey (Cross Platform), napsaný v OCaml , pod GPL, avšak od verze 2.9.0 (2007) je podpora v binárních souborech oficiálně neudržovaná a deaktivovaná.
  • Shareaza (Windows), více sítí, napsáno v C ++, pod GPL, aktuálně +/- 93% síťový podíl

Proprietární softwarové implementace zahrnují:

  • Čínský program Foxy (Windows) odvozený od GnucDNA , není možná žádná interakce s žádnými dalšími klienty G2, a používá vlastní síť „Foxy“, která je napůl špatně oddělena od původního G2 a je známá únikem sítě do G2. Teoreticky je klient kompatibilní s G2. volný, uvolnit.
  • Morpheus (Windows)

Srovnání

Následující tabulka porovnává obecné a technické informace o řadě dostupných aplikací podporujících síť G2.

Klient Povídat si Zpracovává velké soubory (> 4 GB) UKHL Unicode Mapování portů UPnP NAT traversal Vzdálený náhled Schopnost vyhledávat pomocí hashů Modus náboje Spyware / Adware / Malware -zdarma Jiné sítě Na základě OS jiný
Foxy Ano Ne Ne Ano Ano Ne Ne Ano Pouze Foxy Ne N / A GnucDNA Cross-platform -
FileScope Ano Ne Ne Ne Ne Ne Ano Ano Ano Ano gnutella ,

eD2k , OpenNap

- Okna Vývoj skončil v roce 2014.
Gnucleus Ne Ne Ne Ne Ne Ne Ne Ano Ne Ano gnutella GnucDNA Okna -
gtk-gnutella Ne Ano Ne Ano Ano Ano Ne Ano Ne Ano gnutella - Cross-platform -
Morpheus Ano Ne Ne Ne Ano Ne Ne Ano Ne Ne gnutella ,

NEOnet

GnucDNA Okna Vývoj a hostování klienta byl zastaven
Shareaza Ano Ano Ano Ano Ano Ne Ano Ano Ano Ano gnutella ,

eD2k , BitTorrent

- Okna Zahrnuje podporu IRC

Viz také

Reference

externí odkazy