Informations- und Kommunikationssysteme Kapitel 2.2 Anwendungsschicht ! ! Prinzipien von Netzwerkanwendungen Wichtige Anwendungsprotokolle Acknowledgement: Folien angelehnt an J.F. Kurose and K.W. Ross Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 1 Kapitel 2.2: Anwendungsschicht • Konzeptions- und Implementierungsaspekte von Netzwerkapplikationen und -protokollen • Dienste der TransportSchicht • Client-Server-Paradigma • Peer-To-Peer-Paradigma • Erklären von Protokollfunktionen am Beispiel von HTTP und SMTP Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 2 Einige Netzwerkanwendungen • • • • • • • Web E-Mail Instant Messaging Fernwartung (SSH etc.) P2P File Sharing Mehrspieler Computer-Spiele Video Clip Streaming (e.g. youtube) • • • • Internet-Telefonie (Echtzeit) Video-Konferenzen Parallel Computing Cloud Computing Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 3 Wie werden Netzwerkanwendungen entwickelt? Netzwerkprogramme • • • Laufen auf verschiedenen Endsystemen und Kommunizieren über ein Netzwerk. Bsp. Web: Webserver-Software kommuniziert mit BrowserAnwendung application transport network data link physical Es wird keine Software geschrieben, die auf Routern im Network Core läuft! • • Geräte im Network Core arbeiten nicht auf Anwendungsschicht Entwicklung würde sehr lang dauern und Rollout schwierig application transport network data link physical application transport network data link physical Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 4 Kapitel 2.2: Anwendungsschicht • • • 2.1 Prinzipien von Netzwerkanwendungen 2.2 Web und HTTP 2.3 E-Mail Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 5 Prinzipien von Netzwerkanwendungen: Architekturen • Grundsätzliche Alternativen: • Client-Server • Peer-To-Peer (P2P) • Hybride Ansätze zwischen Client-Server und P2P Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 6 Client-Server-Architektur Server: • “always-on” Host • Statische IP-Adresse • Server-Farmen für Skalierbarkeit Clients: • Kommunizieren mit Server • u.U. nicht immer verbunden • Oft dynamische IPAdressen • Kommunizieren nicht direkt miteinander Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 7 Reine Peer-To-Peer-Architektur • • • • Keine Server Endsysteme kommunizieren direkt miteinander Peers sind aperiodisch miteinander verbunden und wechseln IP-Adressen Beispiele: eDonkey-KAD, Trackerless Bittorrent In der Regel hochgradig skalierbar! Aber schwierig zu verwalten und zu entwickeln Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 8 Hybride Varianten von Client-Server und P2P Napster und originale Variante von eDonkey • • Dateitransfer Peer-to-Peer Dateisuche zentral: • Peers registrieren Inhalte bei zentralem Server • Peers erfragen Inhalte bei gleichem Server Instant Messaging • • Chatting und Dateitransfer zwischen zwei Nutzern ist P2P Anwesenheit und Lokalisierung wird zentral erfasst: • Nutzer registriert IP-Adresse bei zentralem Server, sobald er online geht • Nutzer kontaktiert zentralen Server, um IP-Adressen von „Freunden“ zu erfragen Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 9 Kommunikation zwischen Prozessen Prozess: Programm das aktuell auf einem Host ausgeführt wird. • Im gleichen Host kommunizieren Prozesse über Inter-Process Communication (IPC, OS-spezifisch). • Prozesse in verschiedenen Hosts kommunizieren ausschließlich über den Austausch von Nachrichten Client-Prozess: Prozess, der die Verbindung initiiert hat Server-Prozess: Prozess der die Verbindung entgegen nimmt ! F: Wie werden damit eigentlich P2PAnwendungen entwickelt? Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 10 Sockets • • • • Host Host Prozesse senden/empfangen Nachrichten zu/von Sockets Socket in etwa analog zu Türen Der sendende Prozess schiebt Nachrichten die Tür hinaus und Verlässt sich auf das Kommunikationsnetz, dass die Nachricht durch die Tür des empfangenden Prozesses Prozess Kontrolliert durch Anwendung Prozess Socket Socket Internet TCP, UDP TCP, UDP Kontrolliert durch OS ! Application Programming Interface (API): (1) Auswahl des Transportprotokolls; (2) Einige (wenige) Parameter können eingestellt werden Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 11 Adressierung von Prozessen • • • • Um die richtige „Tür“ beim Empfänger zu wählen, muss eine Adresse bekannt sein! Hosts besitzen eine 32-Bit IPAdresse • i.d.R. weltweit eindeutig • Demnächst 128 Bit F: Reicht IP-Adresse des Hosts um Anwendungen zu identifizieren? Antwort: Nein! • Oft viele Netzwerkapplikationen pro Host • • Identifikation über IP-Adresse und Port Nummer, die den Typ der Applikation bestimmt. Beispiele: • • • HTTP-Server: 80 Mail-Server: 25 Mehr Details folgen! Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 12 Zu definierende Aspekte von Anwendungsprotokollen • • • • • Nachrichtentypen, z.B. Request& Response-Nachrichten Syntax der Nachrichtentypen: Welche einzelnen Nachrichtenfelder existieren & wie werden sie separiert? Semantik von Felder, i.e., was bedeuten die Inhalte in den Feldern Regeln wie und wann Prozesse Nachrichten senden und auf diese Reagieren Aktionen die mit dem Nachrichtenaustausch verbunden sin Offene vs. Proprietäre Protokolle: • Offene Protokolle: • • • • • Öffentliche Spezifikation für „jedermann“ Interoperabilität Die meisten InternetProtokolle sind in RFCs definiert Bsp. HTTP, FTP, SMTP Proprietäre Protokolle: • • • Herstellerspezifisch Spezifikation oft nicht verfügbar Bsp. Skype, KaZaA Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 13 Welche Dienste der Transportschicht werden gebraucht? Datenverlust • Einige Apps (e.g., Audio) tolerieren Verluste zu einem gewissen Grad • Andere (e.g., Dateitransfer) benötigen 100% verlässliche Datenübertragung Timing • Einige Apps (e.g., InternetTelefonie, interaktive Spiele) benötigen geringe Verzögerungszeiten Bandbreite ! Einige Apps (e.g., Multimedia) benötigen eine gewisse Mindestbandbreite ! Andere (“elastic apps”) können soviel Bandbreite nutzen wie ihnen zur Verfügung gestellt wird Im Internet stehen TCP und UDP zur Verfügung die Teile der Anforderungen abdecken! Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 14 Anforderungen an die Transportschicht Anwendung Datenverlust Bandbreite Dateitransfer E-Mail Web documents Echtzeit Audio/Video Timing elastisch unkritisch elastisch unkritisch elastisch unkritisch Audio: 5kbps-1Mbps ja, > 100 ms Video:10kbps-5Mbps Audio/Video auf Abruf tolerierbar wie oben ja, wenige s Interaktive Spiele keine Toleranz mind. einige Kbps ja, > 100 ms Instant Messaging keine Toleranz elastisch teilweise keine Toleranz keine Toleranz keine Toleranz tolierierbar Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 15 Kapitel 2.2: Anwendungsschicht • • • 2.1 Prinzipien von Netzwerkanwendungen 2.2 Web und HTTP 2.3 E-Mail Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 16 Web und HTTP Begriffe: • • • • Webseiten bestehen aus Objekten • HTML-Dateien, JPEG Bilder, Java Applets, Audio,… Webseiten bestehen aus einer HTML-Datei, welche einzelne Objekte referenziert Jedes Objekt ist über ein URL (Uniform Resource Locator) adressierbar Beispiel: http://www.tu-ilmenau.de/uploads/pics/logo_184.gif Hostname Pfad Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 17 HTTP Übersicht HTTP: Hypertext Transfer Protocol • Protokoll der Anwendungsschicht für das Web • Client/Server Modell • Client: Browser fragt nach, empfängt und zeigt WebObjekte • Server: Webserver sendet Objekte je nach Anfrage • • HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 PC mit Firefox Server mit Apache Webserver Mac mit Safari Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 18 HTTP Übersicht (II) Nutzt TCP: • Client initiiert TCP-Verbindung (über eine Socket) zum Server, Port 80 • Server nimmt TCP-Verbindung entgegen • HTTP-Nachrichten werden zwischen Browser (HTTPClient) und Webserver (HTTPServer) ausgetauscht • TCP-Verbindung wird geschlossen HTTP ist “zustandslos” • Server hält (eigentlich) keine Informationen über vorherige Anfragen Randnotiz Protokolle, die Zustände vorhalten sind komplex! ! ! Zustand muss aktuell gehalten werden Wenn Server oder Client abstürzen kann der Zustand inkonsistent sein und muss wieder hergestellt werden Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 19 HTTP-Verbindungen Nicht-persistentes HTTP • Maximal ein Objekt kann pro TCP-Verbindung übertragen werden. • HTTP/1.0 Persistentes HTTP • Mehrere Objekte können pro TCP-Verbindung ausgetauscht werden. • Die Regel in HTTP/1.1 Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 20 Nicht-persistentes HTTP Angenommen ein Student besucht: tu-ilmenau.de/telematik/ (Text & Referenzen zu 10 Bildern) 1a. HTTP-Client baut TCP-Verbindung zum HTTP-Server Prozess auf (also auf tu-ilmenau.de, Port 80) 1b. HTTP-Server von tuilmenau.de wartet auf TCPVerbindungen auf Port 80, “akzeptiert” Verbindung, benachrichtigt Client 2. HTTP-Client sendet HTTP-Request Nachricht (mit URL) an TCPVerbindungs-Socket. Nachricht besagt, dass Objekt /telematik/ angefordert wird Zeit 3. HTTP-Server empfängt Request Nachricht, generiert Response Nachricht mit angefragtem Objekt und sendet Nachricht über Socket Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 21 Nicht-persistentes HTTP (II) 4. HTTP-Server schliesst TCP-Verbindung 5. HTTP-Client empfängt Response Zeit Nachricht mit HTML-Inhalt, zeigt HTML an, dabei findet er 10 referenzierte Bilder 6. Schritte 1-5 werden für alle 10 Bilder wiederholt Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 22 Modellierung des Antwortverhaltens Definition RTT (Round-Trip-Time): • Zeit, die ein kleines Paket zum Gegenüber und zurück benötigt. Antwortzeit: • eine RTT für Aufbau der TCPVerbindung • eine RTT vom Absenden des HTTP-Request bis zur Ankunft der der HTTP-Response • Übertragungszeit für das Objekt Gesamt = 2 * RTT + Übertragungszeit Aufbau TCPVerbindung RTT Request Übertragungszeit für Objekt RTT Objekt empfangen Zeit Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht Zeit 23 Persistentes HTTP Probleme mit nicht-persistentem HTTP: • Benötigt 2 RTTs pro Objekt • OS benötigt Ressourcen für TCP-Verbindungen • Aber: Browsers öffnen i.d.R. viele parallele TCPVerbindungen aus Latenzgründen Persistentes HTTP • Server schließt TCPVerbindung nach Senden der Response NICHT • Wiederverwendung für weitere HTTP-Nachrichten zwischen selben Client/Server Persistent ohne Pipelining: • Client sendet neuen Request nach dem Empfang einer Response • Eine RTT + Übertragungszeit für jedes referenzierte Objekt Persistent mit Pipelining: • Die Regel in HTTP/1.1 • Client sendet Request, sobald er ein referenziertes Objekt im Strom identifiziert • Im besten Fall: eine RTT + Übertragungszeit für ALLE Objekte! Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 24 HTTP-Request Nachricht • • Nur zwei Typen von HTTP-Nachrichten: Request, Response HTTP-Request Nachricht: • ASCII (human-readable) Request-Zeile (Kommandos z.B. GET, POST, HEAD) Header Beendet Nachricht GET /telematik/ HTTP/1.1 Host: tu-ilmenau.de User-agent: Mozilla/4.0 Connection: close Accept-language: de (Extra carriage return, line feed) Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 25 HTTP-Request Nachricht: Allgemeines Format Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 26 Senden von Formulareingaben Post Methode: • Webseiten enthalten oft Formulare (e.g. zum Einloggen) • Eingaben können zum Server über den Body gesendet werden URL Codierung: • Nutzt GET-Methode • Eingabe wird in der angefragten URL kodiert • Beispiel für eine Suchanfrage: zoo.com/animalsearch?term=monkeys&butt=red Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 27 Methodentypen HTTP/1.0 • GET • POST • HEAD • Fragt nur Metainformationen an • Eigentliches Objekt wird nicht übertragen HTTP/1.1 • GET, POST, HEAD • PUT • • Speichern eines Objektes an der angegebenen URL DELETE • Löschen des Objektes an der gegebenen URL Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 28 HTTP-Response Nachricht Statuszeile (Protokoll Status Code Statusnachricht) Header Daten, e.g., angefragte HTML Datei 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 ... Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 29 HTTP-Response Status Codes In erster Zeile der Response Nachricht Beispiele für gängige Codes: 200 OK • Anfrage erfolgreich, angefragtes Objekt folgt in der Nachricht 301 Moved Permanently • Angefragtes Objekt wurde verschoben, neue URL im Header der Nachricht (Location:) 400 Bad Request • Anfrage konnte vom Server nicht interpretiert werden 404 Not Found • Das angefragte Objekt konnte nicht gefunden werden 505 HTTP Version Not Supported Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 30 Conditional GET • • • Ziel: Sende ein Objekt nicht falls Browser aktuelle Version schon besitzt Browser: Spezifizieren des Datums des Objektes im Cache Server Client HTTP-Request If-modified-since: <date> HTTP-Response If-modified-since: <date> HTTP/1.0 304 Not Modified Server: Response enthält kein Objekt wenn Cache aktuell ist: HTTP-Request HTTP/1.0 304 Not Modified Objekt nicht verändert If-modified-since: <date> Objekt verändert HTTP-Response HTTP/1.0 200 OK <data> Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 31 Zustand bei HTTP: Cookies Die meisten Webseiten nutzen Cookies, um Nutzer zu identifizieren bzw. Einstellungen zu speichern Vier Komponenten: 1) Cookie-Header Zeile in HTTP Response Nachricht 3) Cookie-Datei, wo der Cookie Browser (u.U. dauerhaft) gespeichert wird 2) Cookie-Header Zeile in HTTPRequest Nachricht 4) i.d.R. Back-end Datenbank auf dem Webserver Beispiel: • • • • Susi nutzt das Internet immer vom selben PC Sie besucht eine eCommerceSeite da erste Mal Nach dem initialen HTTPRequest, legt die Seite eine eindeutige ID an und speichert die ID in der Datenbank Später kann Sie Ihren Warenkorb immer wieder genauso vorfinden Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 32 Cookies: “Zustand” erhalten Client Cookie Datei ebay: 8734 Cookie Datei amazon:1678 ebay: 8734 Server norm. HTTP-Request norm. HTTP-Response Set-cookie: 1678 norm. HTTP-Request Cookie: 1678 norm. HTTP-Response Server vergibt ID 1678 für Nutzer Cookie spezif. Aktion ri Zug ff Eine Woche später Cookie Datei amazon: 1678 ebay: 8734 norm. HTTP-Request Cookie: 1678 norm. HTTP-Response Cookie spezif. Aktion Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 33 Cookies (III) Was mit Cookies realisiert wird: • Autorisation • Einkaufskörbe • Empfehlungen • Zustand über Nutzersitzung (e.g. Web E-Mail) Randnotiz Cookies und Privatsphäre: ! Cookies erlauben es Nutzerverhalten auszuwerten ! Insb. „gefährlich“ wenn Cookies mit Namen und Adressen in Verbindung gebracht werden ! Suchmaschinen nutzen Cookies um gezielt zu werben ! Werbefirmen können Informationen über Seiten hinweg aggregieren Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 34 Web Caches (Proxy Server) Ziel: Bearbeiten von Client-Anfragen ohne ursprünglichen Server zu belasten Option 1: • Nutzer stellt im Browser Cache-Server ein • Browser sendet alle HTTPClient Requests zum Cache • • Objekt im Cache: Cache gibt Objekt zurück Sonst: Cache lädt Objekt von Quell-Server und liefert ihn anschließend an Client aus ursprünglicher Server ProxyServer Server Client Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 35 Web Caches (II) Option 2: • Betreiber lässt Anfragen an Server auf verschiedene Webcaches umleiten • Reduziert u.U. • • • Latenz zum Kunden Netzwerklast ursprünglicher Server Webcache Client Führte zur Entwicklung von Content Delivery Networks (CDN) HTTP-Request HTTP-Response Client Webcache Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 36 Web Caching (III) • • • Cache ist sowohl Server als auch Client Lokale Proxies werden oft von ISP betrieben (Universität, Firma,…) Betreiberseitige Proxies durch CDN betrieben (Limelight Networks, Akamai) Warum Web Caching? • • • Reduzieren der Antwortzeit für den Client Reduzieren von Verkehrslast Entlastet kleinere Content Providers Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 37 Caching Beispiel Annahmen • Durchschnittliche Objektgröße = 100,000 Bit • Durchschnittliche Request-Rate von Browsern zu Servern = 15/ sec • Latenz vom Instituts-Router zu allen Servern und zurück jeweils 2s Konsequenz Auslastung des LAN = 15% • Auslastung des Access Link = 100% • Ende-zu-Ende-Latenz = InternetLatenz + Access-Latenz + LANLatenz = 2 s + k s+ i ms • HerkunftsServers Öffentliches Internet 1.5 Mbps Access Link Institutionelles Netzwerk Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 10 Mbps LAN 38 Caching Beispiel (II) Mögliche Lösung • Erhöhend der Bandbreite des Access Link zu bspw. 10 Mbps Konsequenz Auslastung des LAN = 15% • Auslastung des Access Link = 15% • Ende-zu-Ende-Latenz = InternetLatenz + Access-Latenz + LANLatenz = 2 s + k ms+ i ms • In der Regel sehr preisintensiv! HerkunftsServers Öffentliches Internet • 10 Mbps Access Link Institutionelles Netzwerk 10 Mbps LAN Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 39 Caching Beispiel (III) Mögliche Lösung • Cache installieren Annahme • Trefferrate 40% Konsequenz • • • • 40% der Requests werden sofort beantwortet 60% der Requests werden durch Herkunfts-Server beantwortet Auslastung des Access Link reduziert auf 60%, daher vernachlässigbare Verzögerung (e.g. 10 ms) Durchschnittliche Latenz = InternetLatenz + Access-Latenz + LANLatenz = 0.6 * 2.01 s + 2 * i ms < 1.4 s HerkunftsServers Öffentliches Internet 1.5 Mbps Access Link Institutionelles Netzwerk 10 Mbps LAN Institutioneller Cache Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 40 Kapitel 2.2: Anwendungsschicht • • • 2.1 Prinzipien von Netzwerkanwendungen 2.2 Web und HTTP 2.3 E-Mail Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 41 E-Mail ausgehende Nachrichten-Queue Drei Hauptkomponenten: • • • User Agents Mail-Server Simple Mail Transfer Protocol: SMTP User Agent • Das “E-Mail Programm” • Schreiben, Editieren und Lesen von E-Mail-Nachrichten • E.g., Eudora, Outlook, Apple Mail, Netscape Messenger • Ausgehende und eingehende Nachrichten werden über Server versendet und empfangen user agent Nutzer Mailbox mail server user agent SMTP mail server SMTP SMTP user agent mail server user agent user agent Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht user agent 42 E-Mail: Mail-Server Mail-Servers • Mailbox enthält eingehende Nachrichten für Nutzer • Nachrichten-Queue enthält ausgehende (zu sendende) Nachrichten • SMTP-Protokoll zwischen MailServern zur Weiterleitung von Nachrichten • Client: sendender Mail-Server • “Server”: empfangender MailServer user agent mail server user agent SMTP mail server user agent SMTP SMTP user agent mail server user agent user agent Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 43 E-Mail: SMTP [RFC 2821] • • • • • Nutzt TCP, Port 25 zur verlässlichen Übertragung von E-Mails vom Client zum Server Direkte Übermittlung: sendender Server zum empfangenden Server Übermittlung in drei Phasen: • Handshaking (greeting) • Nachrichtenübermittlung • Verbindungsabbau Command/Response-Folge • Command: Befehl als ASCII-Text • Response: Status Code und menschenlesbare Phrase Nachrichten müssen in 7-bit ASCII gegeben sein • Umlaute nicht direkt zu realisieren! Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 44 Beispiel: Alice sendet eine E-Mail zu Bob 4) SMTP-Client übermittelt die E-Mail über TCP-Verbindung 5) Bobs Mail-Server legt Nachricht in Bobs Mailbox ab 6) Bob nutzt seinen UA um die Nachricht zu empfangen und zu lesen 1) Alice nutzt um eine E-Mail an [email protected] zu schreiben 2) Alices UA sendet die Nachricht an ihren MailServer; E-Mail befindet sich in Nachrichten-Queue 3) Client-Implementierung des SMTP-Servers öffnet TCPVerbindung zu TUI-Server 1 user agent 2 mail server 3 mail server 4 5 6 Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht user agent 45 Beispiel für einen SMTP-Protokollablauf S: C: S: C: S: C: S: C: S: C: C: C: C: C: S: C: S: 220 tu-ilmenau.de HELO gmx.de 250 Hello gmx.de, pleased to meet you MAIL FROM: <[email protected]> 250 [email protected]... Sender ok RCPT TO: <[email protected]> 250 [email protected]... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: HFC heute? Es kommt “Anleitung zur sexuellen Unzufriedenheit.” Gehen wir hin? . 250 Message accepted for delivery QUIT 221 tu-ilmenau.de closing connection Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 46 E-Mail Nachrichtenformat • • • SMTP: Nur Protokoll zum Austausch von E-Mails! RFC 822: Standardformat für EMails: Header-Felder, e.g., To: • From: • Subject: unterscheiden sich von SMTP-Commands! Header Freie Zeile • • Body Body • eigentliche “Nachricht” Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 47 Nachrichtenformat: Multimedia-Erweiterungen • • MIME: Multimedia Mail Extension, RFC 2045, 2056 Feld im Header gibt an, dass MIME verwendet wird MIME-Version In der Nachricht genutztes Kodierverfahren Typ des Inhaltes kodierte Daten From: [email protected] To: [email protected] Subject: HFC-Flyer von heute MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 48 SMTP: Zusammenfassung • • • SMTP nutzt persistente Verbindungen SMTP erfordert 7-Bit Kodierung der Nachrichten(Header & Body) SMTP-Server nutzt CRLF.CRLF zum Signalisieren des Endes einer Nachricht • • Anm.: Was würde passieren wenn man einen einzeln stehenden Punkt in eine Nachricht einfügt? Was kann dagegen getan werden? Vergleich mit HTTP: • Beide nutzen ASCII-codierte Command/Response-Verfahren und Status Codes • HTTP: • • • Pull: Client erfragt Objekte explizit Jedes Objekt wird über einzelne Anfrage übermittelt SMTP: • • Push: Initiator sendet von sich aus Daten an Empfänger Mehrere Objekte (e.g. Anhänge) werden in einer Nachricht versendet Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 49 Mail-Access-Protokolle SMTP SMTP Access Protokoll user agent mail server • • user agent mail server SMTP: Senden/Empfangen bis zum Server des Empfängers Mail-Access-Protokoll: Abruf vom Server • POP: Post Office Protocol [RFC 1939] • Autorisation (UA<--> Server) und herunterladen • IMAP: Internet Mail Access Protocol [RFC 1730] • Mehr Möglichkeiten (sehr viel komplexer) • u.a. Bearbeitung von Nachrichten auf dem Server • HTTP: Google-Mail, GMX, etc. Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 50 Beispiel für Ablauf des POP3-Protokoll Autorisationsphase • Client-Kommandos: • user: Nutzer angeben • pass: Passwort • Server-Antworten: • +OK • -ERR Transaktionsphase, Client: • list: Nachrichtennummern • retr: Abholen von Nachrichten • dele: Löschen • quit S: C: S: C: S: +OK POP3 server ready user bob +OK pass sonnenschein +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 51 POP3 und IMAP Mehr zu POP3: • Vorheriges Beispiel “Löschen nach Empfang” • Bob kann E-Mail nicht erneut abrufen, wenn er den Client wechselt • Alternativ: E-Mails verbleiben auf Server und nur neue werden heruntergeladen • POP3 ist dabei zustandslos über Sitzungen! IMAP: • Alle E-Mails werden auf dem Server gespeichert • Nutzer können Nachrichten in Ordnern organisieren • IMAP hält Status über Sitzungen hinweg: • • Ordnerstruktur Abbildung von Nachrichten IDs auf Ordner Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 52 on Kapitel 2.2: Zusammenfassung Anwendungsarchitekturen • ! Client/Server Peer-to-Peer Hybrid • • • Spezifische Protokolle: ! HTTP, SMTP, POP3 Anforderungen von Anwendungen: • Verlässlichkeit, Bandbreite, Latenz • Internet Transportdienste: • Verbindungsorientiert, verlässlich: TCP Paketorientiert, ohne Verlässlichkeit: UDP • • Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 53 Kapitel 2.2: Zusammenfassung Wichtiger: Grundlegendes zu Protokollen behandelt! • Typischerweise Request/ Reply Mechanismus: • • • Clients erfragen Informationen oder nutzen Dienste Server antworten mit Daten und Status Codes Nachrichtenformate: • • Header: Felder mit Informationen über Daten Daten: Eigentlicher Nutzverkehr Kontroll- vs. Nutzdaten ! Zentralisiert vs. dezentral ! Zustandsbehaftet vs. zustandslos ! Verlässlich vs. unverlässlicher Datentransport ! Komplexität und Flexibilität allein in Endsystemen ! Informations- und Kommunikationssysteme (SS 2014): 02 - Anwendungsschicht 54