Informations- und Kommunikationssysteme

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