Anwendungsschicht
Transcription
Anwendungsschicht
Inhalt der Vorlesung ! ! ! ! ! ! Einführung Anwendungsschicht Transportschicht Netzwerkschicht Verbindungsschicht Physikalische Schicht [RN] Sommer 2014 Anwendungsschicht 1 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 2 Einführung ! Netzwerkanwendung ! ! ! ! ! ! Anwendungsprozesse auf verschiedenen Endsystemen (Hosts), die miSels Nachrichten über ein Netzwerk kommunizieren kann direkt unter Verwendung der Dienste der Transportschicht implemenOert werden standardisierte Anwendungen benutzen ein Anwendungsprotokoll, das das Format der Nachrichten und das Verhalten beim Empfang von Nachrichten festlegt z.B: Web-‐Browser und -‐Server die unteren Schichten und der Netzwerkkern benöOgen keine Kenntnis der Anwendung einfache Verbreitung, große Dynamik [RN] Sommer 2014 Anwendungsschicht application transport network data link physical application transport network data link physical application transport network data link physical 3 Einführung ! Client-‐Server-‐Paradigma ! ! ! Server stellt Dienst zur Verfügung, der von Client angefordert wird übliches Paradigma von vielen tradiOonellen Anwendungen, wie z.B. Web-‐Browser und –Server typische Eigenscha]en des Servers ! leistungsfähig ! immer verfügbar ! typische Eigenscha]en der Clients ! nur manchmal verbunden ! kommunizieren mit Server, nicht untereinander [RN] Sommer 2014 Anwendungsschicht 4 Einführung ! ! Client-‐Server-‐Paradigma ist zentralisierte Architektur Weitere Paradigmen ! ! ! ! wechselnde Rolle von Client und Server: Hosts übernehmen mal die eine, mal die andere Rolle (z.B. bei Web-‐Caching oder SMTP) verteilte Anwendung: besteht aus mehreren unabhängigen Anwendungen, die zusammen wie eine einzelne Anwendung erscheinen (z.B. WebShop mit Web-‐Server, ApplikaOons-‐Server und Datenbank), KoordinaOon ist zwar verteilt, findet aber für das Gesamtsystem staS noch stärker dezentrale Architektur: autonome sich selbst organisierende Systeme ohne globale Steuerung (z.B. einige Peer-‐to-‐Peer-‐Anwendungen wie Gnutella, Chord) Hybridarchitektur: zur IniOalisierung ist eine zentrale Architektur nöOg, die Anwendung findet dann dezentral direkt zwischen Hosts staS (z.B. bei Session IniOaOon Protocol, SIP oder bei manchen Peer-‐to-‐Peer-‐ Anwendungen wie BiSorrent) [RN] Sommer 2014 Anwendungsschicht 5 Einführung ! Varianten des Client-‐Server-‐Paradigmas Client-Computer Thin Client Benutzungsschnittstelle Fat Client Benutzungsschnittstelle Benutzungsschnittstelle Benutzungsschnittstelle Benutzungsschnittstelle Anwendung Anwendung Anwendung Datenbank Benutzungsschnittstelle Anwendung Anwendung Anwendung Datenbank Datenbank Datenbank Fat Server Datenbank Datenbank Thin Server Server-Computer [RN] Sommer 2014 Anwendungsschicht 6 Einführung ! Dienste der Transportschicht ! im Internet gibt es zwei dominierende Transportprotokolle ! TCP: verbindungsorienOert (abstrakte Sicht des Versendens eines Bytestroms), zuverlässig ! UDP: verbindungslos (Versenden einzelner Datagramme), unzuverlässig ! ! ! werden meist im Betriebssystem realisiert die meisten Betriebssysteme bieten Socket-‐SchniBstelle, die durch Programmiersprachen als API angeboten wird mit Socket kann festgelegt werden ! Transportprotokoll (TCP oder UDP) ! IP-‐Adresse von Sende-‐ und Zielhost ! Portnummern (um Anwendungen auf Hosts zu unterscheiden) ! und so können Anwendungen programmiert werden … [RN] Sommer 2014 Anwendungsschicht 7 Einführung ! QuanOtaOve Anforderungen von Anwendungen ! Verlust ! nicht tolerierbar bei Dateitransfer, Online-‐Banking etc. ! teilweise tolerierbar bei MulOmedia ! Bitrate ! tradiOonelle Anwendungen wie FTP, e-‐mail und HTTP benöOgen keine feste Bitrate, sind aber „besser“, wenn sie viel Bitrate erhalten („Best-‐Effort-‐Verkehr“, „elasOsche Anwendungen“) ! Echtzeit-‐MulOmedia benöOgt Mindest-‐Bitrate ! Verzögerungszeit ! tradiOonelle Anwendungen benöOgen keine maximale Verzögerungszeit, sind aber wieder „besser“ bei kurzen Zeiten ! Echtzeit-‐MulOmedia und interakOve Spiele benöOgen kurze Verzögerungszeit ! Steuerungen technischer Geräte benöOgen o] GaranOe einer maximalen Verzögerungszeit [RN] Sommer 2014 Anwendungsschicht 8 Einführung ! QuanOtaOve Anforderungen von Anwendungen Anwendung Verlust Bitrate Verzögerungszeit Dateitransfer kein Verlust elastisch keine harte Grenze e-mail kein Verlust elastisch keine harte Grenze Web-Dokumente kein Verlust elastisch keine harte Grenze Echtzeit-Multimedia Verlust tolerierbar Audio: Kbps - Mbps Video: 10 Kbps - 5 Mbps 150 ms Einwegverzögerung unbemerkt Streaming von Multimedia Verlust tolerierbar wie oben einige s Interaktive Spiele Verlust tolerierbar Kbps – 10 Kbps einige 100 ms Automatisierung kein Verlust Kbps oft harte Grenzen, z.B. einige ms Instant Messaging kein Verlust elastisch „kommt darauf an“ [RN] Sommer 2014 Anwendungsschicht 9 Einführung ! Einige bekannte Anwendungsprotokolle und das darunterliegende Transportprotokoll Anwendung Anwendungsprotokoll verwendetes Transportprotokoll e-mail SMTP [RFC 2821] TCP Remote Terminal Access Telnet [RFC 854] TCP Web HTTP [RFC 2616] TCP Dateitransfer FTP [RFC 959] TCP Remote File Server NFS [McKusik 1996] UDP or TCP Streaming Multimedia RTP, proprietär UDP or TCP Internettelefonie RTP, proprietär meistens UDP [RN] Sommer 2014 Anwendungsschicht 10 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 11 HTTP ! Ablauf ! ! ! ! ! Benutzer gibt Uniform Resource Locator (URL) in Web-‐Browser ein URL enthält Host-‐Namen eines Web-‐Servers und den Pfad zu einem Objekt (Datei) dort Web-‐Browser stellt Anfrage an Web-‐Server für dieses Objekt Web-‐Server liefert Objekt an Web-‐Browser zurück Web-‐Browser stellt Objekt in für den Benutzer lesbarer Form dar [RN] Sommer 2014 Anwendungsschicht PC mit MS Explorer Server mit Apache WebServer Mac mit Firefox 12 HTTP: Anfragenachrichten ! Format der Anfragenachrichten Anfragezeile method sp URL sp version header field name: sp value cr lf header field name: sp value cr lf cr lf Kopfzeilen Leerzeile cr lf Rumpf [RN] Sommer 2014 Anwendungsschicht 13 HTTP: Anfragenachrichten ! Methoden ! ! ! ! ! Kopfzeilen ! ! Typ/Wert-‐Paare, Typen: Host, User-‐agent, … Rumpf ! ! GET: Abruf eines Dokuments, besteht aus Methode, URL, Version HEAD: Abruf von MetainformaOonen eines Dokuments POST: Ausgabe von InformaOonen an Server Put, Delete, Trace, OpQons leer bei GET, kann bei POST Inhalt haben Beispiel Anfragenachricht: [RN] Sommer 2014 Anwendungsschicht GET /somedir/page.html HTTP/ 1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr 14 HTTP: Antwortnachrichten ! Format der Antwortnachrichten Statuszeile version sp status code sp phrase header field name: sp value cr lf header field name: sp value cr lf cr lf Kopfzeilen Leerzeile cr lf Rumpf [RN] Sommer 2014 Anwendungsschicht 15 HTTP: Antwortnachrichten ! Mögliche Codes in der Statuszeile ! ! ! ! ! ! 200 OK („alles klar“) 301 Moved Permanently (RedirecOon: Objekt zu finden unter LocaOon: …) 400 Bad Request (Anfragenachricht nicht verstanden) 404 Not Found (Objekt nicht gefunden) 505 HTTP Version Not Supported Beispiel-‐ Antwortnachricht: [RN] Sommer 2014 HTTP/1.1 200 OK Connection: close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 … Content-Length: 6821 Content-Type: text/html data data data data data ... Anwendungsschicht 16 HTTP: Ablauf ! HTTP-‐Ablauf ! nicht-‐persistentes HTTP ! für jedes Objekt wird einzelne TCP-‐Verbindung geöffnet, Server beendet sie sofort nach dem Senden eines Objekts ! entweder Basis-‐Seite und eingebeSete Objekte sequenOell ! oder parallele einzelne Verbindungen für die eingebeSeten Objekte ! persistentes HTTP ! ! ! ! ! ! Server läßt Verbindung bestehen alle Objekte werden über eine TCP-‐Verbindung gesendet ohne Pipelining: nach jedem Objekt Anfrage für nächstes Objekt mit Pipelining: eine Anfrage für alle eingebeSeten Objekte Was sind die Vor-‐ und Nachteile? Standardport des Web-‐Servers: 80 [RN] Sommer 2014 Anwendungsschicht 17 HTTP: Ablauf ! Beispiel-‐Ablauf von nicht-‐persistentem HTTP ! ! URL: www.someSchool.edu/someDepartment/home.index Basis-‐Seite enthält 10 eingebeSete Objekte (jpeg) 1a. HTTP-Client-Prozeß initiiert TCP- Verbindung zu HTTP-Server-Prozeß auf Host www.someSchool.edu an Port 80 1b. HTTP-Server-Prozeß auf Host www.someSchool.edu wartet auf TCP-Verbindungen an Port 80, nimmt TCP-Verbindung an, benachrichtigt Client 2. HTTP-Client übergibt HTTP-Anfrage an TCP-Socket, enthält URL mit Verweis auf Objekt someDepartment/home.index 3. HTTP-Server empfängt HTTP- Anfrage, erstellt HTTP-Antwort mit dem gewünschten Objekt und übergibt diese TCP-Socket Zeit [RN] Sommer 2014 Anwendungsschicht 18 HTTP: Ablauf 4. HTTP-Server schließt TCP-Verbindung 5. HTTP-Client erhält HTTP-Antwort mit dem HTML-Inhalt, analysiert ihn, stellt ihn auf dem Bildschirm dar, erkennt 10 eingebettete jpegObjekte Zeit 6. die Schritte 1-5 werden für jedes eingebettete Objekt wiederholt [RN] Sommer 2014 Anwendungsschicht 19 HTTP: Ablauf ! Antwortzeit ! Basis-‐Seite ! Autau der TCP-‐Verbindung erfordert eine Initialisierung Round Trip Time (RTT) der TCPVerbindung ! Anfragenachricht hin, RTT Antwortnachricht zurück, Senden der erfordert noch eine RTT HTTP-Anfrage ! insgesamt: RTT 2 RTT + Zeit zum Senden Antwort + weitere Wartezeiten erhalten durch TCP ! wie ist es bei den anderen HTTP-‐Varianten? [RN] Sommer 2014 Anwendungsschicht Übertragungszeit HTTPAntwort Zeit Zeit 20 HTTP: Dynamische Inhalte ! Senden von InformaOon vom Browser zum Server ! ! ! in Rumpf von Anfragenachricht mit POST häufig: als Typ/Wert-‐Paare angehängt an die URL in einer Anfragenachricht mit GET Dynamische Inhalte mit CGI-‐Skripten ! Common Gateway Interface (CGI) verarbeitet als externer Prozeß die InformaOon und liefert neue HTML-‐Seite an Server User Server Browser 1 2 3 8 7 6 [RN] Sommer 2014 Anwendungsschicht 1. User füllt Formular aus CGI 2. mit HTTP an Server Script Datenbank 3. wird CGI übergeben 4. CGI fragt DB 4 5. DB-Eintrag gefunden 6. CGI erstellt HTML 7. mit HTTP an User 5 8. HTML darstellen 21 HTTP: Dynamische Inhalte ! Dynamische Inhalte durch ScripOng ! ! ! durch InterpretaOon von eingebeSeten Skripten können dynamische Inhalte erzeugt werden Server-‐seiQges ScripQng: im HTML ist Code eingebeSet, der vom Server interpreOert wird und dabei HTML erzeugt, z.B. PHP Client-‐seiQges ScripQng: im HTML ist Code eingebeSet, der vom Client interpreOert wird, z.B. JavaScript Browser User Server Browser User 1 2 1 4 3 2 PHP-Modul [RN] Sommer 2014 Anwendungsschicht Server JavaScript 22 HTTP: Caching ! Web-‐Caching ! ! ! Verringerung der Wartezeit des Benutzers und des Netzwerkverkehrs durch Zwischenspeicher Cache ist Server für Web-‐Browser und Client für Web-‐Server möglich an vielen Stellen: Browser, angeschlossenes LAN, ISP, … Proxy server [RN] Sommer 2014 Client Origin server Client Origin server Anwendungsschicht 23 HTTP: Caching ! Cache kann bei Server erfragen, ob sein Objekt noch aktuell ist: Server Cache HTTP-Anfrage If-modified-since: <date> Objekt unverändert HTTP-Antwort HTTP/1.0 304 Not Modified HTTP-Anfrage If-modified-since: <date> Objekt verändert HTTP-Antwort HTTP/1.0 200 OK <data> [RN] Sommer 2014 Anwendungsschicht 24 HTTP: Caching ! Beispiel für Nutzen eines Caches ! ! miSlere Objektgröße = 100.000 Bits ! miSlere Rate von HTTP-‐Anfragen der Clients im LAN = 15/s ! Internetverzögerung zwischen LAN und HTTP-‐Server = 2 s ! HTTPServer Annahmen Internet Folgen ! Auslastung des LANs 15/s ⋅ 100.000 Bits / 10 ⋅ 106 Bits/s = 0,15 = 15 % ! Auslastung der Zugangsleitung 15/s ⋅ 100.000 Bits / 1,5 ⋅ 106 Bits/s = 1 = 100 % ! Gesamtverzögerung = Verzögerung im LAN + beim Zugang + im Internet = ms + Minuten + 2 s = Minuten [RN] Sommer 2014 Anwendungsschicht 1,5 Mbps Zugangsleitung 10 Mbps LAN 25 HTTP: Caching ! 1. Lösung: Upgrade des Zugangs ! ! ! HTTPServer Zugangsleitung mit 10 Mbps möglich, aber mit Kosten verbunden Folgen ! Auslastung des LANs = 15 % ! Auslastung der Zugangsleitung 15/s ⋅ 100.000 Bits / 10 ⋅ 106 Bits/s = 0,15 = 15 % ! Gesamtverzögerung = Verzögerung im LAN + beim Zugang + im Internet = ms + ms + 2 s = Sekunden Internet 10 Mbps Zugangsleitung 10 Mbps LAN [RN] Sommer 2014 Anwendungsschicht 26 HTTP: Caching ! 2. Lösung: Verwendung eines Caches ! ! ! Annahme: Cache-‐Hitrate ist 0,4 realisOsch: 40 % der abgefragten Seiten befinden sich langfrisOg im Cache, 60% müssen bei HTTP-‐Servern angefordert werden Folgen ! Auslastung des LANs = 15 % ! Auslastung der Zugangsleitung 0,6 ⋅ 15/s ⋅ 100.000 Bits / 1,5 ⋅ 106 Bits/s = 0,6 = 60 % ! Gesamtverzögerung = Verzögerung im LAN + beim Zugang + im Internet = ms + ms + 0,6 ⋅ 2 s < 2 s HTTPServer Internet 1,5 Mbps Zugangsleitung 10 Mbps LAN Cache [RN] Sommer 2014 Anwendungsschicht 27 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 28 E-‐Mail ! Simple Mail Transfer Protocol (SMTP) ! ! ! ! ! Nachrichten im ASCII-‐Format, Kopf, Rumpf andere Daten (Word-‐Dateien u.ä.) werden in ASCII umgewandelt angehängt: mulOmedia mail extension (MIME) Versenden mit SMTP über TCP (lesbar) Abholen mit POP3, IMAP, HTTP (lesbar) mehr Einzelheiten in der Übung Alice's agent [RN] Sommer 2014 SMTP Bob's Alice's mail server SMTP mail server Anwendungsschicht POP3, IMAP, HTTP Bob's agent 29 E-‐Mail: SMTP [RFC 821] ! ! ! nutzt TCP zur zuverlässigen Übertragung der Nachrichten vom Client zum Server, dazu wird Port 25 verwendet. direkte Übertragung: vom sendenden Server zu empfangendem Server drei Phasen der Übertragung ! ! ! ! InterakOon miSels Befehlen und Antworten ! ! ! Handshaking (Begrüßung) Nachrichtenübertragung Abschlussphase Befehle: ASCII-‐Text Antworten: Statuscode und Text Nachrichten müssen 7-‐bit ASCII-‐Text sein [RN] Sommer 2014 Anwendungsschicht 30 Beispiel für einen SMTP-‐Dialog S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection [RN] Sommer 2014 Anwendungsschicht 31 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 32 Netzwerkmanagement ! Aufgaben des Netzwerkmanagements ! ! Überwachung und Verwaltung eines Netzwerks = komplexes HW/SW-‐ Gebilde (zahlreiche Geräte, Leitungen, Datenstrukturen, …) nach ISO 5 Einsatzbereiche ! Leistung: Monitoring von Auslastung, Durchsatz, Antwortzeiten, DokumentaOon (z.B. für die Überwachung von Service Level Agreements), ReakOonsmaßnahmen ! Fehler: Monitoring, DokumentaOon, ReakOonsmaßnahmen ! KonfiguraQon: Übersicht über Geräte und deren HW/SW-‐KonfiguraOonen ! Zugang: Festlegung, Kontrolle, DokumentaOon des Zugangs von Benutzern und Geräten ! Sicherheit: Monitoring und Kontrolle des Zugangs, Schlüsselverwaltung, z.B. Filterregeln für Firewalls, Intrusion DetecOon ! diverse komplexe Standards, z.B. TMN, TINA [RN] Sommer 2014 Anwendungsschicht 33 Netzwerkmanagement ! Simple Network Management Protocol (SNMP) ! ! ! ! ! ! einfach und verbreitet Managing EnQty, Prozeß auf zentraler Management StaOon, ≈ Client Managed Device, Gerät im Netz Managed Object, HW oder SW im Managed Device, z.B. RouOng-‐Tabelle Management Agent, Prozeß auf Managed Device, kann lokale AkOonen ausführen, ≈ Server Anfrage/Antwort-‐Protokoll zwischen Management EnOty und Management Agent über UDP Agent Managing Data entity Managed device Agent Data Network management protocol Anwendungsschicht Managed device Agent Agent Managed device [RN] Sommer 2014 Data Data Data Managed device 34 Netzwerkmanagement ! SNMP Nachrichten (Version 2) ! ! ! ! GET: Anfrage der Managing EnOty einer Variable des Managed Objects SET: Setzen der Variable eines Managed Objects durch Managing EnOty auch GET-‐NEXT and GET-‐BULK für Datenstrukturen TRAP: Nachricht des Managing Agents über FehlersituaOon Get/set header PDU type (0-3) PDU type (4) Variables to get/set Error Status (0-5) Error Index Agent Enterprise Addr Trap Type (0-7) Request ID Trap header [RN] Sommer 2014 Anwendungsschicht Name Value … Specific Time Name code stamp Value … Name Value Trap information 35 Netzwerkmanagement ! Management InformaOon Base (MIB) ! ! ! ! MIB-‐Module enthalten Datenstrukturen für die Managed Objects, von der IETF genormt Syntax wird in Structure of Management InformaOon (SMI) der IETF festgelegt, die wiederum die Abstract Syntax NotaQon One (ASN.1) der ISO benutzt (im wesentlichen wie C ohne Referenzen) ASN.1 besitzt auch ein Nummerierungsschema zur eindeuOgen Objekt-‐IdenOfizierung, damit wird jedes MIB-‐Modul eindeuOg bezeichnet mit den Basic Encoding Rules (BER) wird noch das genaue binäre Format für die Übertragung festgelegt [RN] Sommer 2014 Anwendungsschicht 36 Netzwerkmanagement ! Nummerierung von ASN.1 ITU-T (0) Standard (0) ISO (1) Joint ISO/ITU-T(2) ISO member body (2) US DoD (6) ISO identified organization (3) Open Software Foundation (22) NATO identified(57) Internet (1) directory management experimentalprivate security snmpv2 (4) (1) (2) (3) (5) (6) mail (7) MIB-2 (1) system interface address ip (1) (2) translation (4) (3) [RN] Sommer 2014 icmp (5) Anwendungsschicht tcp (6) udp egp (7) (8) cmot transmission snmp (9) (10) (11) rmon (16) 37 Netzwerkmanagement ! MIB-‐Modul für UDP Object Identifier Name Type Description (from RFC 2013) 1.3.6.1.2.1.7.1 udpInDatagrams Counter32 “total number of UDP datagrams delivered to UDP users“ 1.3.6.1.2.1.7.2 udpNoPorts Counter32 “total number of received UDP datagrams for which there was no application at the destination port“ 1.3.6.1.2.1.7.3 udpInErrors Counter32 “number of received UDP datagrams that could not be delivered for reasons other than the lack of an application at the destination port“ 1.3.6.1.2.1.7.4 udpOutDatagrams Counter32 “total number of UDP datagrams sent from this entity“ 1.3.6.1.2.1.7.5 udpTable SEQUENCE of UdpEntry “a sequence of UdpEntry objects, one for each port that is currently open by an application, giving the IP address and the port number used by application“ [RN] Sommer 2014 Anwendungsschicht 38 Netzwerkmanagement ! Basic Encoding Rules (BER) ! ! RepräsentaOon zur Übertragung Tag, Length, Value (TLV) ! Tag = Nummer für Typ ! Length = Länge in Bytes ! Übertragung von „smith“ ! Tag 4 für OCTET STRING ! Length 5 ! ASCII-‐Werte der Zeichen ! Übertragung von 282 ! Tag 2 für INTEGER ! Length 2 ! 0x011a (hexadezimal), höherwerOges Byte zuerst („Big Endian“) lastname ::= OCTET STRING weight ::= INTEGER Module of data type declarations written in ASN.1 {weight, 282} {lastname, “smith“} Instances of data type specified in module Basic Encoding Rules (BER) 1a 01 02 02 'h' Transmitted byte stream 't' 'i' 'm' 's' 05 04 [RN] Sommer 2014 Anwendungsschicht 39 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 40 DNS ! Domain Name System (DNS) ! ! ! ! ! ! Host-‐Namen bzw. Domain-‐Namen lesbar DNS bildet Domain-‐Namen auf Werte ab diese Werte sind u.a. IP-‐Adressen DNS ist verteilte Datenbank, besteht aus vielen Namen-‐Servern, die über ein Anwendungsprotokoll kommunizieren eine wesentliche Aufgabe, um die Infrastruktur zu nutzen z.B. Namens-‐Auflösung beim Versenden einer e-‐mail: 2 cs.princeton.edu Name server Mail program 192.12.69.5 3 [RN] Sommer 2014 User 1 user @ cs.princeton.edu Anwendungsschicht 192.12.69.5 4 TCP 41 DNS ! Domain-‐Struktur ! ! ! ! DNS implemenOert hierarchischen Namensraum für Internet-‐ Objekte von links nach rechts lesen, von rechts nach links verarbeiten eine Zone wird von einem Name-‐Server verwaltet die Hierarchie wird durch die Namen-‐Server implemenOert edu princeton … mit cs ee com gov cisco … yahoo nasa … nsf mil org arpa … navy acm … ieee net de eu physics ux01 ux04 [RN] Sommer 2014 Anwendungsschicht 42 DNS ! Hierarchie von Name-‐Servern ! ! ! ! Root name server Root Name Server einige wenige … Princeton name server Top-‐level Domain-‐Server für com, org, net, edu, uk, de, eu, … … CS EE … name server name server autoritaQver Name-‐Server unterste Ebene, für einzelne OrganisaOon [RN] Sommer 2014 Anwendungsschicht Cisco name server 43 DNS: Resource Records ! Resource Records ! ! ! Datensätze der Namenserver (Domainname, Wert, Typ, TTL) TTL: Time to Live, Dauer der GülOgkeit Typ = A ! Wert = IP-‐Adresse ! Bsp.: (ns.cisco.com, 128.96.32.20, A, TTL) ! Typ = NS ! Wert = Domainname eines Hosts, auf dem ein Namen-‐Server läu], der Namen in der Domain auflösen kann ! Bsp.: (princeton.edu, cit.princeton.edu, NS, TTL) ! Typ = CNAME (Canonical Name) ! Wert = kanonischer Name eines Hosts, ermöglicht Aliasnamen ! Bsp.: (cic.cs.princeton.edu, cicada.cs.princeton.edu, CNAME, TTL) ! Typ = MX (Mail Exchange) ! Wert = Domain-‐Name des Hosts, auf dem Mail-‐Server läu] ! Bsp.: (cs.princeton.edu, opOma.cs.princeton.edu, MX, TTL) [RN] Sommer 2014 Anwendungsschicht 44 DNS: Resource Records ! Bsp: Resource Records ! Root Name Server (princeton.edu, cit.princeton.edu, NS, TTL) (cit.princeton.edu, 128.196.128.233, A, TTL) (cisco.com, ns.cisco.com, NS, TTL) (ns.cisco.com, 128.96.32.20, A, TTL) … ! enthält einen NS-‐Datensatz für jeden Server der nächsten Ebene und einen A-‐Datensatz mit der IP-‐Adresse diese bilden zusammen einen Verweis auf die Server der zweiten Ebene ! [RN] Sommer 2014 Anwendungsschicht 45 DNS: Protokoll ! DNS-‐Protokoll ! ! Anfrage-‐ und Antwortnachrichten, gleiches Format: Kopf ! IdenOficaOon: Zuordnung Anfrage, Antwort ! Flags: Art der Anfrage bzw. Antwort ! Rumpf ! QuesOons: Domainnamen ! Answers: Resource Records ! Authority: Antworten von autoritaOven Servern [RN] Sommer 2014 Anwendungsschicht Identification Flags Number of questions Number of answers RRs Number of authority RRs Number of additional RRs Questions (variable number of questions) Answers (variable number of resource records) Authority (variable number of resource records) Additional information (variable number of resource records) 46 DNS: Protokoll ! Anfragearten ! iteraQv ! Antwort: anderer Server, der Namen evtl. auflösen kann (oder keine Antwort) ! NS-‐ und A-‐Datensatz ! Antwort wird sofort geliefert, es muß keine InformaOon gespeichert werden, gut für hochfrequenOerte Server ! rekursiv ! Antwort: Auflösung des Namens, die u.U. von anderen Servern geholt wird ! A-‐Datensatz ! bei Anfrage an einen anderen Server muß die InformaOon gespeichert werden [RN] Sommer 2014 Anwendungsschicht 47 DNS: Protokoll ! root DNS server Beispiel für iteraOve Anfrage: 2 3 4 TLD DNS server 5 local DNS server dns.poly.edu 1 8 requesting host 7 6 authoritative DNS server dns.cs.umass.edu cis.poly.edu gaia.cs.umass.edu [RN] Sommer 2014 Anwendungsschicht 48 DNS: Protokoll ! root DNS server Beispiel für rekursive Anfrage: 2 3 7 6 TLD DNS server local DNS server dns.poly.edu 1 5 4 8 requesting host authoritative DNS server dns.cs.umass.edu cis.poly.edu gaia.cs.umass.edu [RN] Sommer 2014 Anwendungsschicht 49 DNS: Protokoll ! root name server KombinaOon aus rekursiver und iteraOver Anfrage: 2 iterated query 3 4 7 local name server dns.eurecom.fr 1 8 requesting host intermediate name server dns.umass.edu 5 6 authoritative name server dns.cs.umass.edu surf.eurecom.fr gaia.cs.umass.edu [RN] Sommer 2014 Anwendungsschicht 50 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 51 Content DistribuQon Networks ! Content DistribuOon Networks (CDNs) ! ! ! ! Ziel: Vermeiden längerer Wartezeiten beim Laden von Web-‐ Seiten, z.B. bei Flash-‐Crowds (Millionen Benutzer greifen auf eine Seite zu) 3 Engpässe: erste Meile, letzte Meile, Peering-‐Punkte (Übergänge zwischen ISPs) Idee: sehr viele (Hunderte) Spiegel-‐ Server geografisch verteilen (diese sind wie Web-‐Caches, der Inhalt wird aber proakOv auf sie repliziert) bekannte CDNs: Akamai, Digital Island [RN] Sommer 2014 Anwendungsschicht Origin server in North America CDN distribution node CDN server in South America CDN server in Asia CDN server in Europe 52 Content DistribuQon Networks ! Verteilung der Anfragen ! ! ! ! ! Server-‐basierte HTTP RedirecQon: Server liefert aufgrund der IP-‐ Adresse des Clients einen geeigneten anderen Server, erfordert zusätzliche RTT, Gefahr der Überlast für Server Client-‐nahe HTTP-‐RedirecQon: z.B. durch Web-‐Proxy, schwieriger zu verwirklichen DNS-‐basierte RedirecQon: DNS-‐Server bildet den Domain-‐Namen des Servers auf die IP-‐Adresse eines geeigneten Servers ab URL-‐RewriQng: Server liefert Basisseite, die URLs der eingebeSeten Objekte werden umgeschrieben, mit dem Domain-‐ Namen eines geeigneten anderen Servers kommerzielle CDNs verwenden meist KombinaOon aus DNS-‐ basierter RedirecOon und URL-‐RewriOng [RN] Sommer 2014 Anwendungsschicht 53 Content DistribuQon Networks ! Bsp. für URL-‐RewriOng ! ! ! ! www.foo.com ist Content-‐Provider, Video-‐Dateien werden auf den CDN-‐ Servern von cdn.com verteilt 1. HTTP-‐Anfrage für HTML-‐Basisseite, Antwort enthält eingebeSete Video-‐Datei www.cdn.com/www.foo.com/sports/ruth.mpg 2. DNS-‐Anfrage für IP-‐Adresse von www.cdn.com, DNS-‐Server liefert aufgrund der IP-‐Adresse des Clients und einer internen Tabelle die IP-‐ Adresse eines geeigneten Servers r 3. HTTP-‐Anfrage an diesen Server est fo html requ ports. /s HTTPom/sports Origin server .foo.c www 1 DNS query for 2 3 www.cdn.com www H .cdn .com TTP re /www que .foo. st for co m /spo r CDN‘s authoritative DNS server ts/ru th.m p [RN] Sommer 2014 Anwendungsschicht g 54 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 55 Socket-‐Programmierung ! Socket-‐SchniSstelle ! ! ! verbreitetes API für Transportdienste Festlegung von TCP/UDP, IP-‐Adressen, Portnummern Architektur: Kontrolle durch Anwendungsprogramm Kontrolle durch Betriebssystem Prozeß Prozeß Socket Socket TCP mit Puffern, Variablen Internet Kontrolle durch Betriebssystem Host oder Server Host oder Server [RN] Sommer 2014 TCP mit Puffern, Variablen Kontrolle durch Anwendungsprogramm Anwendungsschicht 56 Socket-‐Programmierung ! ! ! Client liest Zeile aus Standardeingabe (inFromUser stream) und sendet ihn über ein TCP-‐Socket zum Server Server liest Zeile aus TCP-‐ ClientProzeß Socket Server konverOert in Großbuchstaben (seine Dienstleistung) und sendet diese ZeichenkeSe über TCP-‐ Socket zurück an Client Client liest ZeichenkeSe aus TCP-‐Socket und gibt diese auf Standardausgabe aus [RN] Sommer 2014 Anwendungsschicht Bildschirm Eingabestrom Ausgabestrom inFromServer ! Tastatur inFromUser Beispiel für einfache Client-‐ Server-‐Anwendung outToServer ! clientSocket zur Transportschicht Eingabestrom TCP-Socket von der Transportschicht 57 Socket-‐Programmierung ! Ein Ausflug in die Programmierpraxis [RN] Sommer 2014 Anwendungsschicht 58 Anwendungsschicht ! ! Einführung Verbreitete Anwendungen ! ! ! ! ! ! ! ! ! Hypertext Transfer Protocol (HTTP) E-‐Mail Netzwerkmanagement Domain Name System (DNS) Content DistribuOon Networks Real-‐Time Protocol (RTP) Session IniOaOon Protocol (SIP) Socket-‐Programmierung Peer-‐to-‐Peer-‐Systeme [RN] Sommer 2014 Anwendungsschicht 59 P2P ! Peer-‐to-‐Peer ! ! ! bekannt von Anwendungen zum Filesharing Grundidee: Inhalte nicht nur von zentralem Server, sondern auch von anderen Peers Upload-‐Bitrate der Peers wird mitgenutzt File: F Server u5 u1 d1 u2 d2 u3 d3 Internet u4 dN uN [RN] Sommer 2014 d6 Anwendungsschicht u6 d5 d uU5 4 60 P2P ! Peer-‐to-‐Peer ! ! ! ! ! Anwendungen wie Napster und KaZaA zum direkten Austausch von Musikdateien (MP3) haben P2P populär gemacht Napster aus jurisOschen Gründen sOllgelegt, diverse Nachfolger (Gnutella, Pastry, eDonkey, …) HaupSeil des Netzverkehrs wird heute durch P2P erzeugt Peers kommunizieren direkt miSels TCP oder UDP P2P-‐Netze bilden Overlay-‐Netz: logisches Netz aus Peers über dem physikalischen Netz [RN] Sommer 2014 Anwendungsschicht 61 P2P: Architekturen ! Unstrukturiert (1st/2nd GeneraOon) ! Zentralisierte P2P Netze (z.B. Napster) ! Datenaustausch P2P, Verzeichnis aber zentral ! Reine P2P Netze (z.B. Gnutella 0.4) ! Keine Zentrale, vollständige Vermaschung der Peers (Skalierbarkeit?!) ! Hybride P2P Netze (z.B. Gnutella 0.6, JXTA) ! Inseln mit Serverstruktur, Vermaschung der Inseln ! Strukturiert ! ! ! DHT (Distributed Hash Table) basiert Z.B. Chord, CAN Keine zentralen Server, hochgradig skalierbar [RN] Sommer 2014 Anwendungsschicht 62 P2P: Unstrukturiert (Zentralisiert) ! Zentralisiertes Verzeichnis ! ! ! ! ! Architektur von Napster EintriS eines Peers: er informiert zentralen Server über seine IP-‐Adresse und seine Inhalte Suche nach Inhalt: über zentralen Server Dateiübertragung: direkt zwischen Peers zentraler Server ! jurisOscher „Schwachpunkt“ ! Leistungs-‐ und Zuverlässigkeitsproblem [RN] Sommer 2014 Anwendungsschicht Bob centralized directory server 1 peers 1 3 1 2 1 Alice 63 P2P: Unstrukturiert (Rein P2P) ! Dezentralität durch Fluten von Anfragen ! ! ! ! ! ! ! ! ! ! ! Architektur von Gnutella Peers bilden Overlay-‐Netzwerk über TCP-‐Verbindungen anfragender Peer sendet Anfrage an alle Nachbarn diese vergleichen Anfrage mit den von ihnen angebotenen Inhalten Fluten: wenn sie die Anfrage nicht beantworten können, wird sie an mehrere Nachbarn weitergeleitet (aber nicht an den Peer, von dem die Anfrage kommt) das Fluten wird durch einen maximalen Hopcount begrenzt wenn ein Peer den Inhalt anbieten kann, antwortet er dem anfragenden Peer, dieser leitet wiederum zurück (die IdenOtät des ursprünglich anfragenden Peers bleibt so unbekannt) die Antwort findet zur Quelle zurück, diese kontakOert direkt einen der Peers, der die Anfrage beantworten kann, die Übertragung erfolgt miSels HTTP kein zentraler Server benöOgt EintriS in das Overlay-‐Netzwerk: Nachricht an eine veröffentlichte Liste von möglichen Peers schicken Skalierbarkeit ist wegen des Flutens problemaOsch [RN] Sommer 2014 Anwendungsschicht 64 P2P: Unstrukturiert (Hybrid) ! Hierarchie ! ! ! ! ! ! ! Architektur von KaZaA proprietäres Protokoll, Kontrollnachrichten verschlüsselt Peers bilden Gruppen, einer ist Group Leader Group Leader kennt Inhalte aller Peers aus Gruppe (Gruppe ≈ „Mini-‐ Napster“) Overlay-‐Netzwerk zwischen Group Leadern Austausch zwischen Group Leadern ähnlich wie bei Gnutella bessere Skalierbarkeit, ebenfalls keine zentrale Kontrolle [RN] Sommer 2014 Anwendungsschicht 65 P2P: Strukturiert ! Verteilte Hash-‐Tabellen (Distributed Hash Tables, DHT) ! ! ! ! ! dezentrales Verfahren für Speicherung und Lookup von Datenelementen, bekannt aus Chord-‐System Peers bilden ringförmiges Overlay-‐Netz jedem Peer wird zufälliger Bezeichner p (0 ≤ p ≤ 2m-‐1) aus Bezeichnerraum mit m Bits zugewiesen jedem Datenelement wird miSels Hash-‐FunkOon ein Schüssel k ebenfalls aus diesem Raum zugewiesen Nachfolger von k ! Datenelement mit Schlüssel k wird auf Nachfolger p von k gespeichert, p = succ(k) ! dies ist der Peer mit dem kleinstem Bezeichner p ≥ k (die ≥-‐RelaOon gilt bis auf Modulo 2m-‐1) ! Lookup für ein Datenelement mit Schlüssel k erfolgt auf Peer succ(k) [RN] Sommer 2014 Anwendungsschicht 66 P2P: Strukturiert (Beispiel Chord) ! RouOng ! ! Finden des gesuchten Eintrags in der DHT Chord verwaltet Ringstruktur über alle Einträge ! Jeweils Vorgänger und Nachfolger ! ! Neue Knoten ! ! ! Voraussetzung: ein bekannter Knoten N in der DHT Neue ID wählen größer als N, kleiner als Nachfolger von N; Aktualisieren der Verzeigerung Knoten en‚ernen ! ! RouOng entlang des Rings (ineffizient) oder durch Sprungtabellen (Finger-‐ Tabelle, siehe nächste Folie) Daten migrieren?; ID en‚ernen und Verzeigerung aktualisieren Selbststabilisierung ! KonOnuierliche Überprüfung aller Knoten, evtl. Verzeigerung reparieren [RN] Sommer 2014 Anwendungsschicht 67 P2P: Strukturiert (Beispield Chord) ! Finger-‐Tabelle ! ! ! jeder Peer p unterhält Finger-‐Tabelle FTp mit maximal m Einträgen i-‐ter Eintrag der Finger-‐Tabelle: FTp[i] = succ(p+2i-‐1) enthält Nachfolger mit exponenOell steigenden Distanz Lookup für Datenelement mit Schlüssel k ! Start mit beliebigem Peer p ! Wiederhole bis p ≥ k: – – – – wenn k ≤ FTp[1], dann q = FTp [1] wenn FTp [m] ≤ k, dann q = FTp [m] sonst q = FTp [i] ≤ k < FTp [i+1] p = q ! succ(k) = p ! Beispiel (nächste Folie) ! ! m = 5, Bezeichnerraum 0 ≤ p ≤ 2m-‐1= 31 farbige Peers gehören zum Overlay [RN] Sommer 2014 Anwendungsschicht 68 Eigentlicher Knoten 1 2 3 4 5 30 1 1 1 4 14 1 2 Finger-Tabelle i 1 2 3 4 5 3 4 28 Lookup von k =12 auf Peer 28 27 5 9 9 9 14 20 6 25 7 24 8 28 28 28 1 9 23 1 2 3 4 5 21 28 28 28 4 [RN] Sommer 2014 0 4 4 9 9 18 29 26 1 2 3 4 5 31 1 2 3 4 5 Lookup von k = 26 auf Peer 1 9 22 10 21 11 20 12 19 1 2 3 4 5 20 20 28 28 4 18 17 Anwendungsschicht 16 15 14 13 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 11 11 14 18 28 14 14 18 20 28 18 18 18 28 1 69 P2P: Strukturiert (Beispiel Chord) ! Lookup von k = 26 auf Peer 1 ! ! ! ! ! ! Lookup von k = 12 auf Peer 28 ! ! ! ! ! ! Lookup auf Peer 1 ergibt p = 18 = FT1[5] ≤ 26 Lookup auf Peer 18 ergibt p = 20 = FT18[2] ≤ 26 < FT18[3] Lookup auf Peer 20 ergibt p = 21 = FT20[1] ≤ 26 < FT20[2] Lookup auf Peer 21 ergibt p = 28 = FT21[1] ≥ 26 Ergebnis: succ(26) = 28 Lookup auf Peer 28 ergibt p = 4 = FT28[4] ≤ 12 < FT28[5] Lookup auf Peer 4 ergibt p = 9 = FT4[3] ≤ 12 < FT4[4] Lookup auf Peer 9 ergibt p = 11 = FT9[2] ≤ 12 < FT9[3] Lookup auf Peer 11 ergibt p = 14 = FT11[1] ≥ 12 Ergebnis: succ(12) = 14 Diverse weitere OperaOonen notwendig ! Aktualisierung des Overlays, OpOmierung [RN] Sommer 2014 Anwendungsschicht 70 P2P: PrakQsche Anwendung ! Hybridarchitektur mit Tracker (Verwaltung) und Strukturiertem P2P Netz Tracker Peer Obtain list of peers Trading chunks Alice [RN] Sommer 2014 Anwendungsschicht 71