Netzwerktechnologien II Zusammenfassungsskript für Prüfung WS13/14 Universität Wien, Fakultät für Informatik 2 Anwendungsschicht 2.1 Grundlagen der Netzwerkanwendungen Im Kern besteht die Entwicklung von Netzwerkanwendungen im Schreiben von Programmen, die auf verschiedenen Endsystemen laufen und miteinander über das Netz kommunizieren. (Bsp: Die Software eines Webservers kommuniziert mit dem Browser). Allerdings wird praktisch keine Software für das Innere des Netzwerkes entwickelt, da diese auf der Netzwerkschicht und darunter liegenden Schichten laufen und dort keine Anwendungen laufen. Durch die Konzentration auf die Endsysteme wird die schnelle Entwicklung und Verbreitung von Software ermöglicht. Beispiele für Netzanwendungen: 2.1.1 E-Mail MMORPGs Streaming von Videoclips VoIP Architektur von Netzwerkanwendungen Die Anwendungsarchitektur wird von Anwendungsentwicklern gestaltet und gibt vor wie die Anwendung auf den verschiedenen Endsystemen strukturiert. Bei modernen Netzanwendungen gibt es zwei vorherrschenden Paradigmen: Client-Server-Architektur Peer-to-Peer-Architektur In einer Client-Server-Architektur gibt es immer den sogenannten Server (Host), der die Anfragen von vielen anderen Hosts – den Clients – bearbeitet. Diese Client-Hosts müssen nicht permanent online sein. Das Web ist ein klassisches Beispiel dafür. Die Clients selber kommunizieren nicht direkt miteinander. Ein weiteres Merkmal einer CS-Architektur ist die feste, bekannte Adresse des Servers (IP-Adresse), an die sich ein Client jederzeit wenden kann, indem er an die Adresse des Servers ein Paket schickt. Server-Farm – Verwendung einer Gruppe von Hosts, um einen leistungsfähigen virtuellen Server zu schaffen. Anwendungsdienste, die auf CS-Architektur basieren, sind meistens sehr infrastrukturintensiv, da sie von den Dienstanbietern, den Kauf, Installation und Wartung der Server-Farmen fordern. Beispiele: Suchmaschinen, eCommerce, E-Mail, soziale Netzwerke, Video Sharing Bei eine rP2P-Architektur ist kein Verlass darauf dass, dass irgendwelche Server immer online sind. Stattdessen nutzen die Anwendungen die direkte Kommunikation zwischen Paaren von Hosts, die nicht ständig miteinander verbunden sind, den so genannten Peers. Eine der der herausragenden Merkmale von P2P-Architekturen ist die Selbstskalierbarkeit. Zwar sorgt jeder Peer für eine Arbeitsbelastung, aber er fügt jedem System auch Dienstkapazität hinzu. Beispiele: FileDistribution, Filesharing, Internettelefonie. Bei der Internettelefonie und InstantMessaging werden sogar oft Kombinationen beider Architekturen angewandt. 2.1.2 Kommunikation zwischen Prozessen Prozess – Programm das auch einem Host läuft. Innerhalb eines Hosts können zwei Prozesse mit Inter-Prozess-Kommunikation Daten austauschen (durch das Betriebssystem unterstützt) Prozesse auf zwei verschiedenen Hosts kommunizieren miteinander, indem sie über das Computernetzwerk Nachrichten austauschen. Client- und Server-Prozesse Eine Netzanwendung besteht aus Prozesspaaren, die einander Nachrichten über ein Netzwerk zusenden. Client-Prozess – Prozess, der die Kommunikation beginnt Server-Prozess – Prozess, der darauf wartet, kontaktiert zu werden. (Bsp Web: Webrowser Client-Prozess, Webserver server-Prozess). P2P kann sowohl Client- als auch Server-Prozesse enthalten Socket – Softwareschnittstelle über die Nachrichten von Prozessen ins Netz gesendet und aus dem Netz empfangen werden. (Schnittstelle zwischen der Anwendungsschicht und der Transportschicht) Diese Schnittstelle wird auch als Anwendungsprogrammschnittstelle (API) zwischen der Anwendung und dem Netzwerk bezeichnet, da der Socket die Programmierschnittstelle ist mit der die Netzanwendung erstellt wird. Adressierung von Prozessen Um eine Nachricht empfangen zu können, muss ein Prozess identifiziert werden können. Das geschieht mittels der IP-Adresse (32-Bit lang bei IPv4) und eine 16 Bit lange Portnummer. 2.1.3 Transportdienste für Anwendungen Kriterien für die Wahl des Transportdienstes: Zuverlässiger Datentransfer/Datenverlust o Einige Anwendungen können Datenverlust tolerieren (z.b. Audioübertragungen) o Andere Anwendungen benötigen absolut zuverlässigen Datentransfer (z.b. Dateitransfer) Durchsatz/Bandbreite o Einige Anwendungen brauchen eine Mindestbandbreite, um zu funktionieren (z.b. Multimedia-Streaming) o Andere Anwendungen verwenden einfach die verfügbare Bandbreite Verzögerung/Zeitanforderung o Einige Anwendungen tolerieren nur eine sehr geringe Verzögerung (z.b. Internettelefonie, Netzwerkspiele) Sicherheit o Verschlüsselung, Integrität der Daten 2.1.4 Vom Internet erbrachte Transportdienste Das Internet stellt den Anwendungen zwei Transportprotokolle zur Verfügung, TCP und UDP. TCP-Dienste Verbindungsorientierung – Herstellen einer Verbindung zwischen Client und Server Zuverlässiger Transport zwischen sendendem und empfangenden Prozess Überlastkontrolle –Bremsen des Senders, wenn das Netzwerk überlastet ist Unterstützt nicht – Zeit- und Bandbreitengarantien, Verschlüsselung UDP-Dienste Unzuverlässiger Transport von Daten zwischen Sender und Empfänger Unterstützt nicht - Verbindungsorientierung, Zuverlässigkeit, Überlastkontrolle, Zeit- oder Bandbreitengarantien, Verschlüsselung Dienste die nicht von Internet-Transportprotokollen erbracht werden 2.1.5 Anwendungsschichtprotokolle Anwendungsprotokolle bestimmen: Arten von Nachrichten Syntax der Nachrichten Semantik der Nachrichten Regeln für das Senden und Antworten auf Nachrichten Es gibt öffentlich verfügbare Protokolle (http, SMTP, etc.), die Transportprotokolle brauchen, und proprietäre Protokolle wie Skype. 2.2 Das Web und http 2.2.1 Überblick über http Das Hypertext Transfer Protocol (http), das Anwendungsschichtprotokoll des Web, ist das Herz des Web und wird durch ein Client-Programm und ein Server-Programm implementiert. Diese Programme kommunizieren durch den Austausch von http-Nachrichten miteinander, die Struktur sowie Art und Weise des Nachrichtenaustausches sind im Protokoll definiert. Webterminologie Webseiten bestehen aus Objekten (Datei/Html-Datei, JPEG-Bild, Java-Applet, etc.) Objekte sind über einzelne URLs (uniform resource locator) erreichbar o URLs bestehen aus: Hostname des Servers Pfadname des Objekts Die meisten Webseiten bestehen aus einer Basis-HTML-Datei, die auf mehrere weitere Objeket verweist. Webbrowser – Client-Seite des Web Webserver – Server-Seite des Web http verwendet TCP: 1. 2. 3. 4. Client baut mit der Socket-API eine TCP-Verbindung zum Server auf Server wartet auf Port 80 Server nimmt die TCP-Verbindung des Clients an http-Nachrichten (Protokollnachrichten der Anwendungsschicht) werden zwischen Client und Server ausgetauscht http ist zustandslos – d.h. Der Server merkt sich keine Informationen über frühere Anfragen von Clients 2.2.2 Nichtpersistente und persistente Verbindungen http mit nichtpersistenter Verbindung Bei nichtpersistenter Verbindung kann maximal ein Objekt über die TCP-Verbindung übertragen werden. Folgende Schritte sind notwendig um eine Webseite im Fall von nichtpersistenter Verbindung vom Server zum Client übertragen zu können: 1. Der http-Client-Prozess baut eine TCP Verbindung zum Server auf. Zur TCP Verbindung gehören je ein Socket zu Client und Server. 2. Der http-Client sendet eine http-Request-Nachricht über seinen Socket an den Server. 3. Der http-Server-Prozess erhält die Request-Nachricht über seinen Socket, holt sich das Objekt aus dem Pfadnamen, kapselt das Objekt in eine http-Response-Nachricht ein und sendet dem Client über den Socket die Response-Nachricht. 4. Der http-Server-Prozess fordert TCP auf, die TCP-Verbindung zu schließen. (TCP beendet diese aber erst wenn es sicher weiß das die Response-Nachricht erhalten wurde) 5. Der http-Client erhält die Response-Nachricht und die TCP-Verbindung wird geschlossen. Die Nachricht beinhaltet die Information, dass das verkapselte Objekt eine HTML-Datei ist. Der Client entkapselt die Response-Nachricht und verarbeitet die erhaltene HTML-Datei. 6. Die ersten vier Schritte werden nun für jedes referenzierte Objekt wiederholt. Round-Trip-Time (RTT) – Zeit die ein Paket benötigt, um Vom Client zum Server und wieder zurück zum Client zu laufen. Verzögerung: 1 RTT + 1 RTT Für den TCP-Verbindungsaufbau Für den http-Request, bis das erste Byte der http-Response beim Client ist + Zeit Für das Übertragen der Daten auf der Leitung = 2 RTT + Übertragungsverzögerung http mit persistenter Verbindung Nachteile von nichtpersistentem http: 2 RTTS pro Objekt Aufwand vom Betriebssystem für jede TCP-Verbindung Browser öffnen oft mehrere parallele TCP-verbindungen, um die referenzierten Objekte zu laden Persistentes http Server lässt die Verbindung nach dem Senden der Antwort offen Nachfolgende http-Nachrichten können über dieselbe Verbindung übertragen werden Persistent ohne Pipelining Client schickt neuen Request erst, nachdem die Antwort uaf den vorangegangenen Request empfangen wurde. 1 RTT für jedes referenziertes Objekt (ca. ½ Dauer von nichtpersistentem http) Persistent mit Pipielining 2.2.3 Standard in http/1.1 Client schickt Requests, sobald er die Referenz zu einem Objekt findet Idealerweise wird nur wenig mehr als 1 RTT für das Laden aller referenzierten Objekte benötigt. http-Nachrichtenformat http-Request-Nachrichten Der Enitity-Body wird bei der GET-Methode nicht verwendet, aber bei der POST-Methode um Daten zu versenden. Manche HTML-Formulare verwenden allerdings auch die GET-Methode um eingegebene Daten zu übermitteln indem sie diese in die angeforderte URL schreiben. Verfügbare Methoden http /1.0 o POST o GET o HEAD Gibt dem Server die Anweisung nur die Kopfzeilen der Antwort zu übertragen http/1.1 o POST o GET o HEAD o PUT Lädt die im Datenteil enthaltene Datei an die durch eine URL bezeichnete Position hoch o DELETE Löscht die durch eine URL angegebene Datei auf dem Server http-Response-Nachrichten Der Entity-Body ist das wichtigste Element der Nachricht – er enthält das angeforderte Objekt. Response-Nachrichten-Statuscodes 200 OK – Request erfolgreich, gewünschtes Objekt ist in der Antwort enthalten 2.2.4 301 Moved Permanently - Gewünschtes Objekt wurde verschoben, neue URL ist in der Antwort enthalten 400 Bad Request – Request-Nachricht wurde vom Server nicht verstanden 404 Not Found – Gewünschtes Objekt wurde nicht gefunden 505 http Version Not Supported Benutzer-Server-Interaktion: Cookies Cookies ermöglichen es den Websites, Benutzer wiederzuerkennen, trotz des zustandlosen https. Die Cookie-Technik besteht aus vier Elementen: Eine Cookie Header-Zeile in der http-Response-Nachricht Eine Cookie Header-Zeile in der http-Request-Nachricht Eine Cookie-Datei die auf einem Endsystem des Nutzers gespeichert ist und vom Browser verwaltet wird Eine Backend-Datenbank auf Seiten des Servers Cookies ermöglichen es Websites, viel über Anwender zu lernen (Formulareingaben, Besuchte Seiten,…). Die Alternativen um sich den Zustand zu merken wären: 2.2.5 In den Endsystemen: Zustand wird im Protokoll auf dem Client oder Server gespeichert und für mehrere Transaktionen verwendet Cookies: http-Nachrichten beinhalten den Zustand Webcaching Ein Webcache – auch Proxyserver – ist eine Netzwerkentität, die im Namen des eigentlichen Webservers http-Requests beantwortet. Er hat seinen eigenen Plattenspeicher und bewahrt darin Kopien der vor kurzem angeforderten Objekte auf. Wenn ein Browser ein Objekt anfordert passiert folgendes: Der Browser stellt eine TCP-Verbindung zum Webcache her und sendet einen http-Request für das Objekt an den Webcache. Der Webcache prüft, ob er eine Kopie des Objekts vorrätig hat oder nicht. o Wenn JA Cache sendet das Objekt in einer http-Response-Nachricht an den ClientBrowser zurück o Wenn NEIN Cache öffnet eine TCP-Verbindung zum eigentlichen Server, indem er einen http-Request an diese Verbindung sende. Nach Erhalt dieser Anfrage sendet der Ursprungsserver das Objekt in einer http-Response an den Webcache Sobald der Webcache das Objekt erhält, legt er eine Kopie in seinem lokalen Speicher ab und leitet es in einer http-response-Nachricht zum Browser des Clients weiter (über die TCP´Verbindung zwischen Browser und Webcache) Ein Cache ist gleichzeitig sowohl Server als auch Client. Im Internet wird Webcaching aus mehreren Gründen eingesetzt: Reduktion der Antwortzeit eines Client-Requests, vor allem wenn die verfügbare Bandbreite zwischen Client und Webserver viel geringer als die zwischen Client und Cache ist Reduktion des Verkehrs auf der Zugangsverbindung eines Firmennetzwerkes zum Internet Kostengünstig Beispiele zum Webcaching findet ihr in den Vorlesungsfolien. 2.2.6 Bedingtes GET Ein Conditional GET ist ein Mechanismus von http mit dem ein Cache beim Server sicherstellen kann, dass die Kopien in seinem Speicher nicht veraltet sind. (Beispiel in den VO-Folien) Eine http-Request-Nachricht ist eine Conditional-GET-Nachricht wenn sie folgendes enthält: Die GET-Methode Die Header-Zeile If-Modified-Since: 2.3 Dateitransfer: FTP FTP (File Transport Protocol) – Protokoll zum Übertragen einer Datei von/zu einem entfernten Rechner Client/Server-Modell o Client: Seite, die den Transfer initiiert (vom oder zum entfernten Rechner) o Server: entfernter Rechner FTP-Server verwenden TCP Port 21. Datentransfer mit FTP FTP-Client kontaktiert FTP-Server auf Port 21 (Transportprotokoll: TCP) Client autorisiert sich über die Kontrollverbindung Client betrachtet das entfernte Verzeichnis indem er Kommandos über die Kontrollverbindung schickt Jedes Mal wenn der Server ein Kommando für eine Dateiübertragung empfängt öffnet er eine neue TCP-Datenverbindung zum Client Nach der Übertragung einer Datei schließt der Server die Verbindung Da FTP eine separate Kontrollverbindung verwendet, sagt man FTP würde seine Steuerinformation Out-of-Band (außerhalb des Datenkanals) senden. FTP-Server speichern außerdem bestimmte Informationen zu einem jeden Benutzer (im Gegensatz zu http): Zugehörige Kontrollverbindungen Aktuelles Verzeichnis auf dem entfernten Host in dem der Benutzer navigiert Dadurch wird die Gesamtanzahl von Sitzungen, die gleichzeitig verwaltet werden können eingeschränkt. 2.3.1 FTP-Befehle und – Antworten Kommandos (werden als ASCII-Text über die Kontrollverbindung übermittelt): USER username PASS password LIST - Gibt eine Liste der Dateien im aktuellen Verzeichnis zurück RETR filename – Lädt eine entfernte Datei auf den lokalen Rechner STOR filename – Überträgt eine lokale Datei auf den entfernten Rechner Antworten 331 Username OK, password required 125 data connection already open ; transfer starting 425 Can’t open data connection 452 Error writing file 2.4 E-Mail im Internet E-Mail besteht aus drei Hauptbestandteilen: 2.4.1 Anweundgungsprogramm Mailserver Übertragungsprotokoll: SMTP (Simple Mail Transfer Protocol) SMTP SMTP ist im RFC 2821 definiert und ist das Herzstück elektronischer Post. Trotz seiner zahlreichen Vorzüge ist SMTP eine veraltete Technik. Die Einschränkung auf 7-Bit ASCII schmerzt einfach, das heißt, dass binäre Multimedia-Daten erst in ASCII codiert werden müssen, bevor sie mit SMTP versandt werden können. Eigenschaften von SMTP Zuverlässiger Transport o E-Mail-Nachrichten werden vom Client zum Server mit TCP (Port 25) übermittelt Direkter Transport der Nachrichten o Von den Mailservern der Absender zu den Mailservern der Empfänger ohne Zwischenlagerung Verwendet persistente Verbindungen o Bei mehreren Nach richten mit gleichem Sender und Empfänger können alle über dieselbe TCP-Verbindung übertragen werden Der Versand von Mails gliedert sich in 3 Phasen 1. Handshaking (Begrüßung) 2. Transfer of Messages (Austausch von Informationen) 3. Closure (Verabschiedung) Die Interaktion basiert auf dem Austausch von Befehlen (Commands) und Antworten (Responses) Command: ASCII-Text Response : Statuscode und Berzeichnung Ein SMTP-Server verwendet CRLF.CRLF (carriage return CR, line feed LF), entsprechend einer Zeile, die nur einen Punkt enthält, um das Ende einer Nachricht zu signalisieren. SMTP-Beispiele sind in den VO-Folien abgebildet. 2.4.2 Vergleich mit http Protokolltyp http: Pull-Protokoll (Protokoll zum Herunterladen) o TCP-Verbindung wird von dem Host aufgebaut, der die Datei erhalten will SMTP: Push-Protokoll (Protokoll zum Senden von Daten) o TCP_Verbindung wird vom Mailserver aufgebaut, der die Datei senden will Die Interaktion erfolgt bei beiden mittels ASCII-Befehl/Antwort-Paaren sowie Statuscodes Kodierung http: Keine besonderen Einschränkungen SMTP: Überträgt Header und Daten in 7BitASCII-Format, Sonderzeichen und Binärdaten müssen extra in 7 Bit-ASCII codiert werden Umgang mit Dokumenten mit Medienobjekten http: Jedes Objekt ist in einer eigenen Antwortnachricht gekapselt SMTP: Mehrere Objekte können in einer Mail-Nachricht (multipart msg) versendet werden