Client- und Server-Prozesse

Werbung
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
Herunterladen