1
Peer to Peer – GNUTELLAPeer to Peer – GNUTELLASeminar Innovative Netztechnologien
Christophe LE ROQUAIS, den 17. Juni 2002
2
20 Slides :
• P2P, Grundkenntnisse
- Client/Server- P2P Topologien
• Gnutella- Funktionsweise- Nachrichten- Beispiel
Inhaltverzeichnis
3
Client / Server P2P
Wie erreichen Dateien in einem Netz ?
4
Definition
„Peer to peer is a communications modell in which each party has the same capabilities and either party can initiate a communication session. Peer to peer communications is implemented by giving each communication node both server and client capabilities (Servents).“
Geschichte
• Ursprüngliche Idee des Internet
• Aktuellen PCs leistunfähig genug um Server zu sein
• Beispiel : ICQ 1996, Gnutella 2000
P2P, was ist das ?
5
Benutzung von P2P
• File SharingZ.B : Napster, Gnutella
• Ressource sharingZ.B : Seti@home
• Collaborative ComputingZ.B : ICQ
6
P2P Topologien
Wie Napster : Verzeichnisserver Wie Gnutella : mit kein jeder Server
7
Gnutella, P2P für File Sharing
• Idee : „Werkzeug, leistungfähiger als Napster, um Dateien zu teilen“
• Projekt von Justin Frankel und Tom Pepper (Nullsoft)
• Heute, viele verschiedene Anwendungen : Gnotella, Morpheus, kaZaA, Gnucleus...
8
Wie funktionniert Gnutella ?
• Verbindung zum Netzwerk
• Entdecken von neuen Peers
• Dateien suchen
• Dateien download
9
Verbindung zum Netzwerk
• Kentniss einer Adresse eines Peer mit seiner TCP portz.B : connect1.gnutellanet.com:6346
• Verbindung Nachricht
Sender : GNUTELLA CONNECT/<protocol versionstring>\n\n
Empfänger : GNUTELLA OK\n\n
10
Gnutella Nachrichten
Ping : Endecken neuen Peers
Push : erlauben einem firewalled Servent Dateien zu teilen
QueryHit : Antwort auf eine Query
Query : um Dateien zu suchen
Pong : Antwort auf einem Ping
11
Entdecken neuen Peers
• Periodische Ping Nachrichten
• Empfängt Pong Nachricht aus die anderen Peers
• Wenn die andere Peers nicht so weit sind : Sendungen von Verbindung Nachrichten (Connect)
12
Download
• Suchung
Sendung einer Query Nachricht
• Download direkt mit HTTP v1.0
GET /<index>/<file name>/HTTP/1.0Connection : Keep-Alive Range : bytes=0-
HTTP200 OK Server : GnutellaContent-type : application/binary Content-length : <file size in bytes>
13
Übertragungsregeln
• Regel A. Ein Knoten verbreitet Ping und Query Nachrichten zu seinem nähesten Nachbarn usw...
• Regel B. Pong, Query Nachrichten müssen durch den gleichen Pfad wie der anfängliche Pfad verbreitet werden
• Regel C. Ein Knoten reduziert das TTL Feld um eins bevor die Nachricht verbreitet wird.
• Regel D. Wenn ein Knoten eine ähnliche Nachricht als vorher empfängt, stoppt er die Verbreitung
14
TTL, Time to Live
• Feld im Gnutella Kopf Nachrichten
• Lebensdauer einer Nachricht
• Wert reduziert um 1 nach einer Weitersendung
• TTL = 0 bedeutet, dass die Nachricht verworfen ist
15
Firewalled Servents
• Laptop hinter einer Firewall
• Push Nachricht, so dass der Laptop die http Verbindung initiiert
16
Beispiel 1/5
Situation
• Knoten 2, 3, 4 schon angebunden
• Knoten1 möchte Lied von „Osternhagen“ herunterladen
• Nur IP Adresse des Knoten 4 gekennt
• Nur Knoten 3 teilt Lieder von „Osternhagen“
• Keine Firewall
• TTL = 1 für Ping Nachrichten
• TTL = 2 für andere Nachrichten
17
Beispiel 2/5
1. Connect
2. OK
18
Beispiel 3/5
3. Ping
4. Pong
4´. Ping
19
Beispiel 4/5
5. Query : „osternhagen mp3“
6. Query
7. QueryHit
7´. QueryHit8. QueryHit
Osternhagen.mp3
20
Beispiel 5/5
9. Get (http)10. HTTP200 OK
(download)
21
Gnutella Topologie
22
Statistik
• Mehr als 400 000 Knoten, die mindestens einmal aktiv waren
• 3 Mio. Dateien üner 600 Tbyte Daten
• Ca. 40% der Knoten verlassen das Netz nach weniger 4 Stunden
• 36% des Verkehrs für Query-Nachrichten
• 25% für Ping und Pong
• 9% für Push
• 70 % der Gnutella Teilnehmer bieten keine Dateien zum Download an
• Fast 50% aller Anfragen werden nur 1 % der Peers beantwortet
23
Zusammenfassung
• P2P wird die Client/Server Architekturnicht ersetzen
• Gnutella benutzt http Protokoll für downloads
• Gnutella noch sehr neu
• Viele mögliche Verbesserungen (Datenrate, Sichereit...)