Übung 3
Transcrição
Übung 3
Übungen zu „Rechnerkommunikation“ Wintersemester 2010/2011 Übung 3 Mykola Protsenko, Jürgen Eckert PD. Dr.-Ing. Falko Dressler Friedrich-Alexander d h l d Universität Erlangen-Nürnberg l b Informatik 7 (Rechnernetze und Kommunikationssysteme) Rechnerkommunikation, Übung 3 1 Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) HTML Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E E-Mail Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung (UDP) Peer-to-Peer P t P S Systeme t Rechnerkommunikation, Übung 3 2 HTTP Ablauf Benutzer gibt Uniform Resource Locator (URL) in Web-Browser ein URL enthält Host-Namen eines PC mit it Web-Servers und den Pfad zu Browser (z.B. Firefox) einem Objekt (Datei) dort Web-Browser Web Browser stellt Anfrage an Web-Server für dieses Objekt Web-Server liefert Objekt an Web Browser zurück Web-Browser Web-Browser stellt Objekt in für den Benutzer lesbarer Form dar Server mit Apache Webserver Mac mit Browser (z.B. Safari) Rechnerkommunikation, Übung 3 3 HTTP URL http://www.someschool.edu:80/someDept/pic.gif Dienst Hostname Portnr. Pfad zum Objekt nicht alle Teile müssen dabei sein Nachrichtentypen in HTTP Anfragenachrichten Antwortnachrichten beide beinhalten nur ASCII-Zeichen und sind daher lesbar Rechnerkommunikation, Anwendungsschicht 4 GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr HTTP: Format der Anfragenachrichten (extra carriage return, line feed) Anfragezeile method sp URL sp version header field name: sp value cr lf header field name: sp value cr lf Kopfzeilen p Leerzeile p Rumpf cr lf cr lf HTTP Aufbau von Web-Seiten Basis Basis-Seite Seite in Hypertext Markup-Language Markup Language (HTML) eingebettete Objekte (Bilder, Video, Audio, Code, …) Referenzen auf andere Web-Seiten <html> <head><title>AMALGAMATED WIDGET, INC.</title></head> <body><h1>Welcome to AWI`s Home Page</h1> <img src= src="http:www http:www.widget.com/images/logo.gif widget com/images/logo gif" ALT= ALT="AWI AWI Logo"><br> Logo ><br> We are so happy that you have chosen to visit <b>Amalgamated Widget‘s</b> home page. We hope <i>you</i> will find all the information you need here. <p>Below we have links to information about our many fine products. You can order electronically (by WWW), by telephone, or by FAX.</p> <hr> <h2>Product information</h2> <ul> <li><a href="http://widget.com/products/big">Big widgets</a> <li><a href="http://widget.com/products/little">Little widgets</a> </ul> <h2>Telephone numbers</h2> <ul> <li>By telephone: 1-800-WIDGETS <li>By fax: 1-415-765-4321 </ul> </body> </ht l> </html> Rechnerkommunikation, Anwendungsschicht Welcome to AWI‘s Home Page We are so happy that you have chosen to visit Amalgamated Widget‘s home page. We hope you will find all the information you need here. Below we have links to inform about our many fine products. You can order electronically (by WWW), by telephone, or by FAX. Product Information • Big widgets • Little widgets Telephone numbers • 1-800-WIDGETS • 1-415-765-4321 6 HTTP: Aufbau von Web-Seiten Häufige HTML-Tags (weiter Infos unter: http://de.selfhtml.org) T Tag D Description i ti <html> … </html> Declares the Web page to be written in HTML <head> … </head> Delimits the page's head <title> … </title> Defines the title (not displayed on the page) <body> … </body> Delimits the page's body <h n> … </h n> Delimits a level n heading <b> … </b> Set … in boldface <i> … </i> Set … in italics <center> … </center> Center … on the page horizontally <ul> u … </ul> /u Brackets ac ets an a unordered u o de ed (bulleted) (bu eted) list st <ol> … </ol> Brackets a numbered list <li> Starts a list item (there is no </li>) <br> Forces a line break here <p> Starts a paragraph <hr> Inserts a horizontal rule <img g src="…"> Displays p y an image g here <a href="…"> … </a> Defines a hyperlink Rechnerkommunikation, Anwendungsschicht 7 HTTP: Dynamische Inhalte Formular Benutzer kann Daten in Browser eingeben <html> <head><title>Test Anmelde formular</title></head> <body> <form method="post" action="/path/to/anmeldung" enctype="multipart/form-data"> <table border=0> <tr><td align=right>Name:</td><td><input type="text" name="Name" size="30"/></td></tr> <tr><td align=right>Matrikelnummer:</td><td><input type="text" name="Matnr" size="30"/></td></tr> <tr><td align=right>Schein:</td><td><select name="Schein"> <option value="kein Schein">kein Schein</option> <option value="benoteter Schein">benoteter Schein</option> <option value="unbenoteter Schein">unbenoteter Schein</option> </select></td></tr> <tr><td></td><td><input type="submit" name="Absenden" value="Absenden" /></td></tr> </table> </form> </body> </html> Browser liefert Typ/Wert-Paare an Server: - Mit method=„get“: /path/to/anmeldung?Name=John+Doe&Matnr=0123456&Schein=b enoteter+Schein&Absenden=Absenden - Mit method=„post“: Parameter in der Kopfzeile von HTTP Rechnerkommunikation, Anwendungsschicht 8 HTTP: Conditional GET Ziel: Objekt nicht neu übertragen, g , wenn der Client aktuelle Version im Cache hat Cli Client: t übergibt üb ibt das d Datum D t der Kopie im Cache Client Server HTTP request msg If-modified-since: <date> HTTP response If-modified-since: <date> HTTP/1.0 304 Not N t Modified M difi d Server: Antwort enthält kein Objekt wenn die Kopie im Objekt, Cache aktuell ist: HTTP request msg HTTP/1.0 304 Not Modified If-modified-since: <date> HTTP response Häufig bei Web Caches, Proxies Rechnerkommunikation, Übung 3 HTTP/1.0 200 OK <data> Objekt im C h Cache aktuell Objekt im Cache nicht aktuell 9 HTTP: Authentifizierung Ziel: Zugriffskontrolle für Objekte auf dem Server HTTP ist zustandslos, daher muss die Autorisierung in jedem Request erfolgen f l Autorisierung üblicherweise mittels B Benutzername t und dP Passwortt Kopfzeile im Request nötig: authorization Fehlt diese Kopfzeile, Kopfzeile sendet der Server keine Daten, sondern in einer Kopfzeile der Antwort: WWW-Authenticate Ü Übliche Browser speichern Benutzernamen und Passwort, so dass die Daten nur einmal eingegeben i b werden d müssen ü Rechnerkommunikation, Übung 3 Server Client Üblicher HTTP Request 401: Autorisierungsanfr. WWW-Authenticate: Üblicher HTTP Request Authorization: Zeile Übliche HTTP Antwort Üblicher HTTP Request Authorization: Zeile Übliche HTTP Antwort 10 HTTP: Cookies Client Ziel: HTTP eigentlich zustandslos, trotzdem Zustand für Client merken Server sendet “Cookie” in der Antwort an den Client Set-cookie: 1678453 Client speichert Cookie (in spezieller Datei) In weiteren Anfragen überträgt der Client das Cookie mit: cookie: 1678453 Server gleicht das präsentierte Cookie mit Informationen auf dem Server ab: Authentifizierung Benutzereinstellungen, vorangegangene Auswahl (z.B. Sprache) Zielgruppengerichtete Werbung ((Verfolgende g Cookies: ermöglichen g Servern, Informationen über den Besuch anderer Server zu erhalten) Rechnerkommunikation, Übung 3 Server Üblicher HTTP Request q Übliche HTTP Antwort + Set-cookie: # Üblicher HTTP Request + cookie: # Übliche HTTP Antwort Üblicher HTTP Request + cookie: # Übliche HTTP Antwort Cookiespezifische Aktion Cookiespezifische Akti Aktion 11 Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E-Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung (UDP) Peer-to-Peer Systeme Rechnerkommunikation, Übung 3 12 FTP File Transfer Protocol Übertragung von Dateien zwischen Hosts eine TCP-Verbindung (Port 21) zur Steuerung lesbare Kommandos: USER username, PASS password, LIST, RETR fil filename, STOR filename, fil … jeweils eine TCP-Verbindung (Port 20) zur Übertragung einer Datei „out-of-band-control“ Rechnerkommunikation, Übung 3 13 FTP: Separate Steuer- und Datenverbindungen FTP-Client kontaktiert FTPServer auf Port 21 mittels TCP (S (Steuerverbindung) bi d ) Authentifizierung über die Steuerverbindung Client kann Inhalt des entfernten Verzeichnisses über g ansehen die Steuerverbindung Sobald der Server einen Befehl zur Dateiübertragung erhält, baut er mittels TCP eine Datenverbindung zum Client auf (hier: Active Mode) Nach der Dateiübertragung schließt der Server die Datenverbindung. Rechnerkommunikation, Übung 3 TCP Steuerverbindung Port 21 FTPClient TCP Datenverbindung g Port 20 FTPServer Server öffnet weitere Datenverbindungen für weitere Datenübertragungen. g g Separate Steuerverbindung: “Out-of-Band” FTP FTP-Server Server speichert Zustandsinformationen: aktuelles Verzeichnis, vorangegangene Authentifizierung 14 FTP: Befehle und Rückgabewerte Beispiele für Befehle: als ASCII ASCII-Text Text über die Steuerverbindung gesendet USER username PASS password LIST liefert eine Liste von Dateien im aktuellen Verzeichnis RETR filename lädt eine Datei vom Server STOR filename speichert i h t eine Datei auf dem Server Rechnerkommunikation, Übung 3 Beispiele für Rückgabewerte: Statuscode und textuelle Meldung (wie bei HTTP) 331 Username OK, password required p q 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file 15 FTP: Active Mode vs. Passive Mode Active Mode Client baut eine TCP-Verbindung von einem beliebigen unprivilegierten TCP-Port N zu Port 21 des Servers auf (Steuerverbindung) Vor Dateiübertragung sendet Client den Befehl PORT N+1 an den Server und wartet auf TCP-Verbindungen auf Port N+1 Server baut eine TCPVerbindung von seinem lokalen Port 20 zu Port N+1 des Clients auf (Datenverbindung) Problem: P bl Fi Firewall ll muss Verbindungen vom Server zu Port N+1 zulassen Rechnerkommunikation, Übung 3 Passive Mode Client baut eine TCP-Verbindung von einem beliebigen unprivilegierten TCP-Port N zu Port 21 des Servers auf (Steuerverbindung) Vor Dateiübertragung sendet Client den Befehl S PASV an den Server. Der Server wartet auf einem beliebigen unprivilegierten Port P auf eingehende i h d Verbindungen V bi d vom Client und teilt dem Client im Rückgabewert des Befehls diesen Port P mit. Client baut eine TCP-Verbindung von seinem lokalen Port N+1 zu Port P des Servers auf (Datenverbindung). 16 Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) HTML Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E E-Mail Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung (UDP) Peer-to-Peer P t P S Systeme t Rechnerkommunikation, Übung 3 17 E-Mail Simple Mail Transfer Protocol (SMTP) Nachrichten im ASCII ASCII-Format Format, Kopf, Kopf Rumpf andere Daten (Word-Dateien u.ä.) werden in ASCII umgewandelt angehängt: MIME Versenden V d mit it SMTP über üb TCP (lesbar) (l b ) Abholen mit POP3, IMAP, HTTP (lesbar) Rechnerkommunikation, Übung 3 18 E-Mail Warteschlange für ausgehende Nachrichten Benutzer-Mailbox Drei wesentliche Komponenten: Mail User Agents (MUA) Mail-Server Simple Mail Transfer Protocol: SMTP Mail User Agent Mail-Client Mail Client zum Verfassen, Editieren und Lesen von Nachrichten z.B. B Thunderbird, Th d bi d Outlook, O tl k mutt, tt Evolution Ausgehende und eingehende Nachrichten auf Server gespeichert MUA MUA MailServer SMTP MailServer SMTP SMTP MUA MUA MailServer MUA MUA Rechnerkommunikation, Übung 3 19 E-Mail: Mail-Server Mail-Server Mailbox enthält (ungelesene) eingegangene Nachrichten für Benutzer (Briefkasten) Warteschlange W t hl für fü ausgehende h d (zu sendende) Nachrichten SMTP-Protokoll zwischen MailServern zum Nachrichtenaustausch Client: sendender Mail-Server Mail Server Server: empfangender Mail-Server Warteschlange für ausgehende Nachrichten Benutzer-Mailbox MUA MUA MailServer SMTP MailServer SMTP SMTP MUA MUA MailServer MUA MUA Rechnerkommunikation, Übung 3 20 Weiteres zu SMTP SMTP verwendet persistente Verbindungen g für SMTP müssen die Nachrichten (Header & Body) als 7-bit-ASCII-Text vorliegen Einige Zeichenketten (z.B. CRLF.CRLF) sind in Nachrichten nicht erlaubt. Daher müssen Nachrichten codiert werden ((üblicherweise Base-64 oder Quoted Printable) Der SMTP-Server nutzt CRLF.CRLF zum Erkennen des Endes einer Nachricht Rechnerkommunikation, Übung 3 Vergleich mit HTTP HTTP: pull (d.h. (d h Empfänger fordert an) SMTP: push (d.h. Sender sendet unaufgefordert an Server) beide verwenden Interaktion mit ASCII-Befehlen und Antworten sowie Statuscodes HTTP: Jedes Objekt wird in einer eigenen i Antwortnachricht A t t h i ht gekapselt SMTP: Mehrere Objekte einer Nachricht werden in einer so genannten Multipart-Nachricht versendet 21 Mail-Nachrichtenformat SMTP: Protokoll zum Austausch von Nachrichten RFC 822: Standard für das Nachrichtenformat: Kopfzeilen Kopfzeilen, z.B. zB - To: (Empfänger) - From: (Absender) - Subject: (Betreff) unterscheidet sich von SMTPBefehlen! Header Leerzeile l Body Body B d Die „Nachricht“ selbst, reiner ASCII-Text Rechnerkommunikation, Übung 3 22 Nachrichtenformat: Multimedia-Erweiterungen MIME: Multipurpose Internet Mail Extensions, RFC 2045 Zusätzliche Kopfzeilen im Nachrichtenkopf bestimmen den MIME Content Type (Art/Typ des Inhalts) MIME-Version Codierungsmethode für Daten Multimedia-Datentyp, Unterart, Parameterfestlegung Codierte Daten Rechnerkommunikation, Übung 3 From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data 23 MIME-Typen Content-Type: type/subtype; parameters Text Unterarten zz.B.: B: plain html Image Unterarten, Unterarten zz.B.: B: jpeg gif Audio Video Unterarten z.B.: mpeg quicktime Application andere Daten, die vom Leser erst verarbeitet b it t werden d müssen, ü bevor b sie angezeigt werden können Unterarten z.B.: msword octet-stream Unterarten U t t z.B.: B basic (8-bit mu-law encoded) 32kadpcm (32 kbps coding) Rechnerkommunikation, Übung 3 24 Multipart-Nachricht From: [email protected] To: [email protected] S bj Subject: Picture i of f yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 b 64 encoded d d d data t ..... ......................... ......base64 encoded data --98766789-Rechnerkommunikation, Übung 3 25 Mail-Zugriffsprotokolle MUA SMTP Mail- SMTP Server Mailserver des Senders MailServer Zugriffs Zugriffsprotokoll MUA Mailserver des Empfängers SMTP: Auslieferung und Ablage der Nachrichten auf Mailserver des Empfängers Mail-Zugriffsprotokoll: Abholen der Nachrichten vom Server POP: Post Office Protocol [RFC 1939] - Autorisierung (MUA <--> Server) und Abholen IMAP: Internet Mail Access Protocol [RFC 1730] - lleistungsfähiger i t fähi (und ( d komplexer) k l ) - Manipulation der auf dem Server gespeicherten Nachrichten - Verzeichnisse ((Folder)) etc. HTTP: GMX, Hotmail , Yahoo! Mail, etc. Rechnerkommunikation, Übung 3 26 POP3-Protokoll Autorisierungsphase Befehle des Clients: user: Benutzername pass: Paßwort Antworten des Servers +OK -ERR Transaktionsphase, Client: gibt Nachrichtennummern list: g als Liste aus retr: hole Nachricht mit bestimmter Nummer ab dele: lösche Nachricht quit Rechnerkommunikation, Übung 3 S: C C: S: C: S: +OK POP3 server ready user b bob b +OK pass hungry +OK user successfully f ll l logged d C: S: S: S: C: S: S: C: S S: C: S: S: C: S: C: S: list 1 498 2 912 . retr 1 <Inhalt Nachricht 1> . dele 1 +OK message marked for delete retr 2 <Inhalt Nachricht 2> . dele 2 +OK message marked for delete quit +OK POP3 server signing off 27 on IMAP-Protokoll IMAP4rev1 RFC 3501 seit 1996 Autorisierungsphase Befehle des Clients: Befehl ID: a001 user: mrc pass: secret Antworten des Servers Befehl ID: a001 OK LOGIN Transaktionsphase Wählen der inbox Betragen und löschen der Mail 12 Abmeldephase Rechnerkommunikation, Übung 3 S: * OK IMAP4rev1 Service Ready C: a00 a001 login og mrc c secret sec et S: a001 OK LOGIN completed C: S: S: S: S: S: S: C: S: S: S: S S: S: S: S: S: S: S: S: S: C: S: S: a002 select inbox * 18 EXISTS * FLAGS (\Answered \Flagged gg \Deleted \Seen \Draft) * 2 RECENT * OK [UNSEEN 17] Message 17 is the first unseen message * OK [UIDVALIDITY 3857529045] UIDs valid a002 OK [READ-WRITE] [READ WRITE] SELECT completed a004 fetch 12 body[header] * 12 FETCH (BODY[HEADER] {342} Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) From: Terry Gray <[email protected]> S bj t IMAP4rev1 Subject: IMAP4 1 WG mtg t summary and d minutes i t To: [email protected] cc: [email protected], John Klensin <[email protected]> Message-Id: <[email protected]> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII ) a004 a005 * 12 a005 OK FETCH completed store 12 +flags \deleted FETCH (FLAGS (\Seen \Deleted)) OK +FLAGS completed C: a006 C 006 logout l t S: * BYE IMAP4rev1 server terminating connection S: a006 OK LOGOUT completed 28 POP3 und IMAP POP3 vorheriges Beispiel nutzt den „Download-and-Delete“-Modus. Bob kann die Nachricht nicht erneut abholen und lesen, wenn er einen anderen Mailclient verwendet mit „Download-and-Keep“Modus sind Kopien der Nachrichten in verschiedenen Clients möglich POP3 ist über die Sitzungen hinweg g zustandslos üblicherweise TCP Port 110 Rechnerkommunikation, Übung 3 IMAP behält alle Nachrichten an zentralen Stelle auf dem Server Erlaubt es, Nachrichten in Verzeichnisse (Folder) einzuordnen IMAP behält den Zustand über Sitzungen hinweg: Namen der Verzeichnisse und Abbildung zwischen den Nachrichten-IDs und dem Verzeichnisnamen üblicherweise TCP Port 143 29 Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) HTML Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E E-Mail Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung (UDP) Peer-to-Peer P t P S Systeme t Rechnerkommunikation, Übung 3 30 Socket-Programmierung mit UDP UDP: verbindungslos, d.h. kein Verbindungsaufbau zwischen Client und Server kein Handshaking g für jedes j Paket Sender fügt explizit Ziel-IP-Adresse und –Port ein Empfänger muss die Quell Quell-IPIP Adresse und den Quellport aus dem empfangenen Paket extrahieren UDP: gesendete Daten können in falscher Reihenfolge empfangen werden e de ode oder verloren e o e ge gehen e Rechnerkommunikation, Übung 3 Aus Sicht der Anwendung UDP bietet unzuverlässige Üb Übertragung einer i Gruppe G von Bytes (Datagramme) zwischen Client und Server 31 Client-Server-Socket-Interaktion: UDP Server (auf Host hostid) erzeuge Socket, port=x, für eingehende Anforderung (Request): serverSocket = DatagramSocket() Anforderung lesen aus serverSocket Antwort schreiben in serverSocket unter Angabe der Client-IP-Adresse und des Ports Client Erzeuge Socket, clientSocket = DatagramSocket() Erzeugung, Adressierung hostid, port=x, sende Anfrage als Datagramm über clientSocket Lesen der Antwort aus clientSocket schließe clientSocket Rechnerkommunikation, Übung 3 32 Beispiel: Java-Server (UDP) import java.io. java io *;; import java.net.*; Erzeuge Datagramm-Socket auf Port 9876 class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; Reserviere Speicher für empfangenes Datagramm Empfange Datagramm while(true) { Rechnerkommunikation, Übung 3 DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket receive(receivePacket); serverSocket.receive(receivePacket); 33 Beispiel: Java-Server (UDP) int rcvLen = receivePacket.getLength(); String sentence = new String(receivePacket.getData(), 0, rcvLen); Auslesen A l der d IP-Addr. und Portnum. des Sende s Senders InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); receivePacket getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); Erz. Datagramm zum Senden an Client DatagramPacket sendPacket = new DatagramPacket(sendData, DatagramPacket(sendData sendData sendData.length, length IPAddress IPAddress, port); Schreibe Datagramm in Socket serverSocket.send(sendPacket); } } } Rechnerkommunikation, Übung 3 Ende der while-Schleife, zurückspringen und a f weiteres auf eite es Datag Datagramm amm warten a ten 34 Beispiel: Java-Client (UDP) iimportt java.io.*; j i * import java.net.*; Erzeuge InputStream Erzeuge Client-Socket Übersetzung Hostnamen in IPAdresse mit DNS class UDPClient { public static void main(String args[]) throws Exception { BufferedReader B ff dR d iinFromUser F U = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket g clientSocket = new DatagramSocket(); g (); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; g sentence = inFromUser.readLine(); (); String sendData = sentence.getBytes(); Rechnerkommunikation, Übung 3 35 Beispiel: Java-Client (UDP) Erzeuge Datagramm mit it zu sendenden d d Daten, Länge, IPAddr., Port S d Datagramm Sende D t an Server DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, DatagramPacket(receiveData receiveData receiveData.length); length); Lese Datagramm von Server clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println( System out println("FROM FROM SERVER:" SERVER: + modifiedSentence); clientSocket.close(); } } Rechnerkommunikation, Übung 3 36 Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E-Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung (UDP) Peer-to-Peer Systeme Rechnerkommunikation, Übung 3 37 P2P Bittorrent Sc a Schwarm: Peers ee s für ü g gleiche e c e Datei, ate , z.B. Tausende ause de Chunks: Teile der zu verteilenden Datei, z.B. 256 KB Tracker: zentraler Server, bei dem sich Peers registrieren .torrent torrent-Datei Datei mit Meta Meta-Daten Daten über zu verteilende Datei und Tracker neuer Peer A tritt Schwarm bei - A registriert sich bei Tracker und erhält IP-Adressen zufälliger anderer Peers (z (z.B. B 50) des Schwarms - A baut TCP-Verbindung zu einigen dieser Peers auf, fragt Liste der Chunks in ihrem Besitz nach und sendet Anfragen für Chunks - Rarest First: A fragt die seltensten Chunks der Peers zuerst nach nach, dadurch gleichmäßige Verteilung - A misst Antwortsrate der Peers und antwortet an diese in entsprechendem p Anteil der Upload-Rate p - neue Nachbarn werden zufällig dazugenommen - und mehr: Hashing, Pipelining, Random First Piece, Endgame Model,, Choking, g, Anti-Snubbing, g, … Rechnerkommunikation, Anwendungsschicht 38 P2P Beispiel auf Web Web-Seite Seite befindet sich .torrent-Datei für großes SW-Image Download mit Bittorrent Client Rechnerkommunikation, Anwendungsschicht 39 P2P Anzeige der Peers: grafische Veranschaulichung: Rechnerkommunikation, Anwendungsschicht 40 P2P Anzeige der bereits heruntergeladenen Teile: Rechnerkommunikation, Anwendungsschicht 41