Gnutella2

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Gnutella2 ( G2 ) este un protocol peer-to-peer dezvoltat în principal de Michael Stokes. Inspirat de protocolul Gnutella , G2 împărtășește o parte din designul său, cu excepția metodei de conectare și adoptă un algoritm de căutare complet nou.

Istorie

În noiembrie 2002 , Michael Stokes a anunțat protocolul Gnutella2 în Gnutella Developers Forum , care a provocat imediat o schismă în rândul dezvoltatorilor. Unii au crezut că scopul noului protocol era să se desprindă de protocolul Gnutella 0.6 și să repornească astfel încât kludge să- și asume o bună organizare, pentru a fi de mare efect și de dorit. Alți dezvoltatori, în principal cei de la LimeWire și BearShare , s-au gândit în schimb la o mișcare de publicitate inteligentă și ieftină și au negat orice merit tehnic. Mulți oameni din aceste grupuri încă refuză să se refere la acest protocol ca „Gnutella2” și în loc să-l numească „Protocolul lui Mike”. [1]

În mod curios, protocolul Gnutella2 încă folosește vechiul șir de strângere de mână "GNUTELLA CONNECT / 0.6" pentru a stabili conexiunile sale [2], așa cum este definit în specificația Gnutella 0.6, care a fost criticată de GDF ca o încercare de a utiliza rețeaua Gnutella pentru bootstrapping , noi fără legătură , în timp ce susținătorii noii rețele au susținut că intenția lor a fost să mențină compatibilitatea înapoi cu Gnutella pentru a permite clienților Gnutella existenți să adauge Gnutella2 după cum doresc.

Cu dezvoltatorii înrădăcinați în pozițiile lor, în curând a izbucnit un război pe forum în jurul dezvoltatorului BearShare, Vincent Falco , care și-a pierdut cumpătul și a început să insulte pe oricine nu era de acord cu el. [3] [4] [5] [6]

Planurile au fost publicate pe 26 martie 2003 , urmate la scurt timp de o specificație detaliată. Gnutella2 (G2) nu este acceptat de mulți dintre clienții Gnutella mai vechi, totuși mulți clienți Gnutella2 se pot conecta și la Gnutella. Mulți susținători ai Gnutella2 afirmă că există o motivație „politică” în spatele acestei alegeri, în timp ce susținătorii Gnutella susțin că există motive tehnice care nu permit utilizarea noului protocol. [7]

Proiecta

Gnutella2 împarte nodurile în două grupuri, numite frunze și butuci. Frunzele mențin una sau două conexiuni la un hub, în ​​timp ce hub-urile acceptă milioane de frunze simultan și mai multe conexiuni de la alte hub-uri. Când se începe o căutare, nodul primește o listă de hub-uri și contactează hub-urile din listă, notificând ceea ce caută, până când lista este terminată sau limita de căutare implicită este îndeplinită. Acest lucru permite utilizatorilor să găsească cu ușurință un fișier popular, fără a încărca de fiecare dată rețeaua, ceea ce teoretic menține capacitatea unui utilizator de a găsi un singur fișier situat oriunde în rețea.

Huburile indexează fișierele deținute de o frunză datorită unui tabel de rutare a căutării numit „Tabel de rutare a interogărilor”, care este umplut cu înregistrări care conțin hashurile cuvintelor cheie și este trimis din frunză la hub-uri, hubul se alătură apoi tuturor tabelelor primit din frunzele sale pentru a crea unul global care să fie trimis la centrele sale vecine. Acest lucru permite hub-urilor să reducă foarte mult utilizarea lățimii de bandă prin simpla redirecționare a căutărilor către frunze și hub-uri învecinate dacă parametrii de căutare nu se găsesc în tabelele de rutare.

Gnutella2 se bazează în principal pe protocolul UDP , mai degrabă decât pe protocolul TCP , pentru căutări. Cheltuielile generale necesare pentru o conexiune TCP ar face ca sistemul de căutare să fie aleatoriu, urmând să contacteze un număr mare de noduri pentru cantități mici de date; nepractic. UDP are însă și defectele sale. Deoarece UDP este un protocol fără conexiune , nu există nicio modalitate de a notifica clienții că a fost primit un mesaj, deci nu se spune dacă un pachet este pierdut. Din acest motiv, pachetele UDP trimise de clienții Gnutella2 au un semnal care crește fiabilitatea pachetelor. Când se primește un pachet UDP cu semnalizatorul de încredere activat, clientul va răspunde cu un pachet de confirmare pentru a informa clientul expeditor că pachetul a ajuns la destinație. Dacă pachetul de confirmare nu este trimis, pachetul va fi retransmis în încercarea de a asigura livrarea. Pachetele cu prioritate redusă care nu au semnalizatorul activat nu necesită un pachet de răspuns, reducând fiabilitatea acestuia, dar și reducând cheltuielile generale, deoarece nu necesită transmiterea niciunui pachet de confirmare.

Caracteristicile protocolului

Gnutella2 are un format de pachet binar extensibil, comparabil cu arborele unui document XML , care a fost conceput ca un răspuns la numeroasele Kludges utilizate în Gnutella. Formatul a fost conceput astfel încât îmbunătățirile viitoare ale rețelei și noile caracteristici să poată fi adăugate fără a vă face griji că acest lucru ar putea genera erori la alți clienți din rețea. [8] . În timp ce dezvoltatorii care au sosit după războiul cu flăcări au spus că această caracteristică facilitează codificarea unui client pentru Gnutella2 mai degrabă decât Gnutella [9] , dezvoltatorii Gnutella susțin că Protocolul de extensie generic Gnutella (GGEP) oferă flexibilitate pentru crearea de extensii pentru protocolul Gnutella 0.6.

Gnutella2 utilizează hash- uri SHA-1 pentru identificarea fișierelor și pentru verificarea securității integrității fișierului. Hash-urile Tiger Tree sunt folosite pentru a permite descărcarea corectă a unui fișier din mai multe surse, precum și pentru a permite încărcarea unor părți ale fișierelor care au fost deja descărcate (roire). [10]

Pentru a crea un sistem de căutare cuprinzător și robust, Gnutella2 are, de asemenea, un sistem de metadate pentru o etichetare mai bună, o evaluare și o calitate a informațiilor, pentru a oferi rezultate de căutare care ar trebui colectate pur și simplu pe nume. [11] Nodurile pot partaja aceste informații chiar și după ștergerea fișierului, permițând utilizatorilor să raporteze viruși și viermi în rețea fără a fi nevoie să descarce o copie.

Gnutella2 folosește de asemenea compresie pe conexiunile sale de rețea pentru a reduce lățimea de bandă utilizată. [10] Shareaza are funcții suplimentare pentru solicitarea previzualizărilor de imagini și videoclipuri, o funcție pe care în prezent niciun alt client nu o poate potrivi.

Diferențele dintre Gnutella2 și Gnutella

Cele două rețele sunt similare, cu o diferență principală în formatul de pachete și metodologia de căutare.

Protocol

Formatul pachetului Gnutella a fost adesea criticat pentru că nu a fost inițial construit într-un mod extensibil și a suferit mai multe modificări de-a lungul anilor, lăsând structura pachetului întotdeauna ineficientă. Gnutella2 a învățat multe din acest caz și, pe lângă faptul că a adus multe dintre caracteristicile standardelor Gnutella în Gnutella2, a fost adaptat pentru extinderea viitoare de la naștere.

Algoritm de căutare

Când Gnutella folosește metoda de căutare de inundare a interogărilor , Gnutella2 folosește un sistem în care un nod de căutare colectează o listă de hub-uri și le contactează direct, unul câte unul. Acest lucru are multe avantaje față de sistemul de inundare a interogărilor Gnutella. Este mai eficient, deoarece continuarea unei căutări nu mărește traficul de rețea, interogările nu sunt direcționate prin multe noduri și crește granularitatea căutării, permițând unui client să se oprească atunci când un număr predefinit de rezultate au fost obținute mai eficient decât în ​​Gnutella . acest lucru mărește, de asemenea, complexitatea rețelei și întreținerea necesară a acesteia, precum și cerința de garanții pentru a împiedica un virus să utilizeze rețeaua pentru un atac DoS .

Terminologie

Există, de asemenea, o diferență în terminologie, nodurile mai capabile pentru condensarea rețelei fiind atribuite ca Ultrapeers în Gnutella și ca Hub în Gnutella2 și sunt, de asemenea, utilizate în moduri ușor diferite în topologie. În Gnutella, Ultrapeers menține un număr relativ mic de frunze și un număr mare de conexiuni peer, în timp ce Hub-urile Gnutella2 mențin mult mai multe frunze și mai puține conexiuni peer. Motivul este că metodele de căutare ale diferitelor rețele au topologii optime diferite.

Clienți

Clienții Gnutella2 publicați ca software gratuit sunt:

În schimb, acestea sunt publicate ca software proprietar :

Notă

  1. ^ Discuție GDF despre numele Gnutella2 , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus 10.05.2006 .
  2. ^ Discuția dezvoltatorilor despre asemănările dintre Gnutella și Gnutella2 , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus 10.05.2006 .
  3. ^ Parte a Războiului FlameiGnutella / Gnutella2 (1) , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus la 6 august 2006 .
  4. ^ Parte a Războiului FlameiGnutella / Gnutella2 (2) , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus la 6 august 2006 .
  5. ^ Parte a Războiului FlameiGnutella / Gnutella2 (3) , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus la 6 august 2006 .
  6. ^ Parte a Războiului FlameiGnutella / Gnutella2 (4) , pe groups.yahoo.com , Forumul dezvoltatorilor Gnutella. Adus la 6 august 2006 .
  7. ^ Discuție pentru dezvoltatori despre migrarea la Gnutella2 , pe groups.yahoo.com , Forumul pentru dezvoltatori Gnutella. Adus 10.05.2006 .
  8. ^ Structura pachetelor , la g2.trillinux.org , Gnutella2 wiki. Adus la 7 noiembrie 2007 .
  9. ^ Discutarea dezvoltatorilor despre formatele de pachete Gnutella și Gnutella2 , pe groups.yahoo.com , The Gnutella Developer Forum. Adus 15.05.2006 .
  10. ^ a b Gnutella2 Standard , la g2.trillinux.org , Gnutella2 wiki. Adus la 7 noiembrie 2007 .
  11. ^ Limbaj și metadate simple de interogare , la g2.trillinux.org , Gnutella2 wiki. Adus la 7 noiembrie 2007 .

linkuri externe

Telematică Portal telematic : accesați intrări Wikipedia care vorbesc despre rețele, telecomunicații și protocoale de rețea