See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Gnutella2 – Wikipedia

Gnutella2

aus Wikipedia, der freien Enzyklopädie

Das Gnutella2-Peer-to-Peer-Protokoll ist ein hauptsächlich von Michael Stokes runderneuertes Gnutella-Protokoll. Alles bis auf das alte Handshake des Gnutella-Protokolls wurde komplett neu erdacht. Somit ist praktisch ein komplett neues System entstanden.

Inhaltsverzeichnis

[Bearbeiten] Geschichte

Im November 2002 gab Michael Stokes das Gnutella2-Protokoll im Gnutella Developers Forum (GDF) [1] bekannt. Sofort darauf gab es einen langen Diskurs unter den Entwicklern. Einige vertraten die Meinung, dass das eigentliche Ziel von Gnutella2 sei, komplett mit dem alten Gnutella-0.6-Protokoll zu brechen und somit viele der Dinge, die als Behelfslösung vorhanden waren, nun endlich zu überwinden. Andere hingegen vertraten die Meinung (hauptsächlich Leute von LimeWire und BearShare), dass diese nur ein Publicity-Gag sei und versagten jegliche technische Unterstützung. Diese Gruppe weigert sich oftmals das Netzwerk als Gnutella2 zu benennen und es wird nur von „Mike's Protocol“ gesprochen.

Seltsamerweise benutzt das Gnutella2-Protokoll die alte „GNUTELLA CONNECT/0.6“-Handshake-Kennung zum Verbindungsaufbau. Dies ist die Kennung, wie sie in der Gnutella-0.6-Spezifikation dokumentiert ist. Auch hierüber existiert eine Meinungsverschiedenheit unter den Entwicklern. Während einige dies als Schritt sehen, um rückwärtskompatibel mit dem alten Protokoll zu sein, so dass die Clients das neue Protokoll schrittweise nach Bedarf hinzufügen können, kritisieren andere aus dem GDF dies als Versuch auf Kosten des Gnutella-Netzwerkes einen neuen, völlig ohne Beziehung zum alten Netzwerk stehenden Standard zu etablieren.

Nachdem die Entwickler auf ihren Standpunkt festgefahren waren, entstand ziemlich schnell ein Flamewar, hauptsächlich durch und um den führenden BearShare-Entwickler Vincent Falco, so dass die konträren Seiten noch weiter zementiert wurden.

Der Entwurf mit den Spezifikationen wurde am 26. März 2003 veröffentlicht, danach folgten noch ein paar genauere und konkretere Spezifikationen. Gnutella2 (G2) wird von den meisten „alten“ Gnutella-Clients nicht unterstützt. Im Gegensatz dazu gibt es eine große Unterstützung der neuen Gnutella2-Clients für das alte Gnutella-Netzwerk. Viele Gnutella2-Fürsprecher behaupten, dass dies aus politischen Gründen so sei, Gnutella(1)-Leute entgegnen, dass das technische Gründe habe.

[Bearbeiten] Funktionsweise

Gnutella2 teilt die Nodes in zwei Gruppen ein. Blätter (engl. original leaves) und Hubs. Die Blätter halten nur ein oder zwei Verbindungen zu den Hubs aufrecht, während die Hubs Hunderte von Verbindungen zu den Blättern und anderen Hubs halten. Wenn nun eine Suchanfrage erfolgt, versucht – sofern noch nicht vorhanden – der Node zunächst einmal eine Liste von Hubs zu bekommen und kontaktiert dann die Hubs in dieser Liste. Dabei merkt er sich, welcher Node schon besucht wurde. Dies wird solange fortgeführt, bis die Liste abgearbeitet worden ist oder aber eine vordefinierte Suchschranke überschritten wurde. Somit wird sichergestellt, dass ein Benutzer eine weit verbreitete Datei einfach und ohne das Netz zu überlasten finden kann. Theoretisch wäre er sogar in der Lage eine einzelne (einmalige) Datei irgendwo im Netzwerk aufzuspüren.

Die Hubs führen einen Index und wissen so, welche Dateien ein Blatt anbietet. Der Index, genannt Query Routing Table, ist ein Hash-Index der Suchbegriffe. Diese Liste der Suchbegriffe lädt das Blatt zum Hub hoch, der Hub generiert daraus eine kombinierte Version mit allen Schlüsselwortlisten der Blätter, die er betreut. Diese kombinierte Liste sendet er nun zu seinen Nachbar Hubs, um so die Anzahl der weitergeleiteten Suchanfragen zu reduzieren. Somit kann der Hub die benötigte Bandbreite reduzieren, da Suchanfragen nun nur noch an bestimmte Hubs oder Blätter weitergeleitet werden müssen.

Gnutella2 benutzt ausführlich das User Datagram Protocol (UDP), statt dem Transmission Control Protocol (TCP), für die Suchanfragenpakete. Der Overhead, der durch TCP vorhanden wäre, würde ein Zufallsbewegungssuchsystem unmöglich machen, obwohl selbstverständlich UDP auch gewaltige Nachteile bietet.

[Bearbeiten] Protokoll-Merkmale

Gnutella2 benutzt ein erweiterbares binär-XML-ähnliches Paketformat. Dieses ist als Antwort auf die vielen Behelfslösungen in Gnutella gedacht und soll ermöglichen, dass zukünftige Verbesserungen des Netzwerkes oder Erweiterungen von einzelnen Clients hinzugefügt werden können, ohne dass dadurch Funktionsstörungen in den anderen oder alten Clients entstehen. Viele Entwickler behaupten, dass es somit einfacher wäre, ein Gnutella2-Client zu entwickeln statt einen Gnutella-Client. Allerdings sehen andere Entwickler das Generic Gnutella Extension Protocol (GGEP) als schon vorhandene adäquate Lösung für das oben adressierte Problem an.

Gnutella2 setzt SHA1 zur Datei-Identifikation ein, so dass damit eine einzelne Datei zuverlässig parallel von mehreren Quellen (Multi-source-downloading/swarming) heruntergeladen werden kann. Des weiteren kommen auch Tiger-Tree-Hashes zum Einsatz, um das zuverlässige Uploaden von Dateiteilen während des Dateiladens zu ermöglichen.

Um darüber hinaus ein robustes, vollständiges Suchsystem anbieten zu können, werden in Gnutella2 Metadaten zur verbesserten Benennung und Bewertung des Inhaltes eingesetzt. Damit können vielfältigere Qualitätsinformationen in den Suchergebnissen aufgeführt werden, als es durch den bloßen Dateinamen gegeben wäre. Nodes können diese Informationen sogar weitergeben, wenn sie die Datei nicht mehr besitzen. Somit können die Benutzer Viren oder Würmer markieren und diese Information den anderen Benutzern zur Verfügung stellen, ohne dass sie eine Kopie dieser Viren oder Würmer behalten müssten.

Gnutella2 benutzt Datenkompression in den Verbindungen, um so die benutzte Bandbreite zu reduzieren.

[Bearbeiten] Clients

Einige der Gnutella2-Clients:

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -