Inhalt der Vorlesung „ Rechnerkommunikation“
Einführung
Anwendungsschicht
Transportschicht
Netzwerkschicht
Verbindungsschicht
Physikalische Schicht
Netzwerksicherheit
Rechnerkommunikation, Anwendungsschicht
1
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
2
Einführung
Netzwerkanwendung
Anwendungsprozesse auf
verschiedenen Endsystemen (Hosts),
die mittels Nachrichten über ein
Netzwerk kommunizieren
kann direkt unter Verwendung der
Dienste der Transportschicht
implementiert 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ötigen keine
Kenntnis der Anwendung
einfache Verbreitung, große Dynamik
Rechnerkommunikation, 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
traditionellen Anwendungen, wie
z.B. Web-Browser und –Server
typische Eigenschaften des Servers
- leistungsfähig
- immer verfügbar
typische Eigenschaften der Clients
- nur manchmal verbunden
- kommunizieren mit Server,
nicht untereinander
Rechnerkommunikation, 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, Applikations-Server und Datenbank),
Koordination ist zwar verteilt, findet aber für das Gesamtsystem statt
noch stärker dezentrale Architektur: autonome sich selbst
organisierende Systeme ohne globale Steuerung (z.B. einige Peer-toPeer-Anwendungen wie Gnutella, Chord)
Hybridarchitektur: zur Initialisierung ist eine zentrale Architektur nötig,
die Anwendung findet dann dezentral direkt zwischen Hosts statt (z.B.
bei Session Initiation Protocol, SIP oder bei manchen Peer-to-PeerAnwendungen wie Bittorrent)
Rechnerkommunikation, 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
Rechnerkommunikation, Anwendungsschicht
6
Einführung
Dienste der Transportschicht
im Internet gibt es zwei dominierende Transportprotokolle
- TCP: verbindungsorientiert (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-Schnittstelle, 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 …
Rechnerkommunikation, Anwendungsschicht
7
Einführung
Quantitative Anforderungen von Anwendungen
Verlust
- nicht tolerierbar bei Dateitransfer, Online-Banking etc.
- teilweise tolerierbar bei Multimedia
Bitrate
- traditionelle Anwendungen wie FTP, e-mail und HTTP benötigen
keine feste Bitrate, sind aber „besser“, wenn sie viel Bitrate
erhalten („Best-Effort-Verkehr“, „elastische Anwendungen“)
- Echtzeit-Multimedia benötigt Mindest-Bitrate
Verzögerungszeit
- traditionelle Anwendungen benötigen keine maximale
Verzögerungszeit, sind aber wieder „besser“ bei kurzen Zeiten
- Echtzeit-Multimedia und interaktive Spiele benötigen kurze
Verzögerungszeit
- Steuerungen technischer Geräte benötigen oft Garantie einer
maximalen Verzögerungszeit
Rechnerkommunikation, Anwendungsschicht
8
Einführung
Quantitative 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“
Rechnerkommunikation, 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
Rechnerkommunikation, Anwendungsschicht
10
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, 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
PC mit
MS Explorer
Server
mit
Apache WebServer
Mac mit
Firefox
Rechnerkommunikation, Anwendungsschicht
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
Rechnerkommunikation, Anwendungsschicht
13
HTTP: Anfragenachrichten
Methoden
GET: Abruf eines Dokuments, besteht aus Methode, URL, Version
HEAD: Abruf von Metainformationen eines Dokuments
POST: Ausgabe von Informationen an Server
Put, Delete, Trace, Options
Kopfzeilen
Typ/Wert-Paare, Typen: Host, User-agent, …
Rumpf
leer bei GET, kann bei POST Inhalt haben
/somedir/page.html HTTP/1.1
Beispiel Anfragenachricht: GET
Host: www.someschool.edu
User-agent: Mozilla/4.0
Connection: close
Accept-language:fr
(extra carriage return, line feed)
Rechnerkommunikation, Anwendungsschicht
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
Rechnerkommunikation, Anwendungsschicht
15
HTTP: Antwortnachrichten
Mögliche Codes in der Statuszeile
200
301
400
404
505
OK („alles klar“)
Moved Permanently (Redirection: Objekt zu finden unter Location: …)
Bad Request (Anfragenachricht nicht verstanden)
Not Found (Objekt nicht gefunden)
HTTP Version Not Supported
BeispielAntwortnachricht:
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 ...
Rechnerkommunikation, 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 eingebettete Objekte sequentiell
- oder parallele einzelne Verbindungen für die eingebetteten 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 eingebetteten Objekte
Was sind die Vor- und Nachteile?
Standardport des Web-Servers: 80
Rechnerkommunikation, Anwendungsschicht
17
HTTP: Ablauf
Beispiel-Ablauf von nicht-persistentem HTTP
URL: www.someSchool.edu/someDepartment/home.index
Basis-Seite enthält 10 eingebettete 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
Rechnerkommunikation, 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
Rechnerkommunikation, Anwendungsschicht
19
HTTP: Ablauf
Antwortzeit
Basis-Seite
- Aufbau der TCPVerbindung
erfordert eine
Round Trip Time (RTT)
- Anfragenachricht hin,
Antwortnachricht zurück,
erfordert noch eine RTT
- insgesamt:
2 RTT
+ Zeit zum Senden
+ weitere Wartezeiten
durch TCP
wie ist es bei den anderen
HTTP-Varianten?
Rechnerkommunikation, Anwendungsschicht
Initialisierung
der TCPVerbindung
RTT
Senden der
HTTP-Anfrage
Übertragungszeit
HTTPAntwort
RTT
Antwort
erhalten
Zeit
Zeit
20
HTTP: Dynamische Inhalte
Senden von Information 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
Information und liefert neue HTML-Seite an Server
User
Server
Browser
1
2
3
8
7
6
Rechnerkommunikation, 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 Scripting
durch Interpretation von eingebetteten Skripten können dynamische
Inhalte erzeugt werden
Server-seitiges Scripting: im HTML ist Code eingebettet, der vom
Server interpretiert wird und dabei HTML erzeugt, z.B. PHP
Client-seitiges Scripting: im HTML ist Code eingebettet, der vom Client
interpretiert wird, z.B. JavaScript
Browser
User
Server
Browser
User
1
2
1
4
3
2
PHP-Modul
Rechnerkommunikation, 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
Client
Origin
server
Client
Origin
server
Rechnerkommunikation, Anwendungsschicht
23
HTTP: Caching
Server
Cache
Cache kann bei Server
erfragen, ob sein Objekt
noch aktuell ist:
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>
Rechnerkommunikation, Anwendungsschicht
24
HTTP: Caching
Beispiel für Nutzen eines Caches
Annahmen
- mittlere Objektgröße = 100.000 Bits
- mittlere Rate von HTTP-Anfragen der
Clients im LAN = 15/s
- Internetverzögerung zwischen LAN
und HTTP-Server = 2 s
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
Rechnerkommunikation, Anwendungsschicht
HTTPServer
Internet
1,5 Mbps
Zugangsleitung
10 Mbps LAN
25
HTTP: Caching
1. Lösung: Upgrade des Zugangs
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
Rechnerkommunikation, Anwendungsschicht
HTTPServer
Internet
10 Mbps
Zugangsleitung
10 Mbps LAN
26
HTTP: Caching
2. Lösung: Verwendung eines
Caches
Annahme: Cache-Hitrate ist 0,4
realistisch: 40 % der abgefragten Seiten
befinden sich langfristig 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
Rechnerkommunikation, Anwendungsschicht
HTTPServer
Internet
1,5 Mbps
Zugangsleitung
10 Mbps LAN
Cache
27
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
28
FTP
File Transfer Protocol
Übertragung von Dateien zwischen Hosts
eine TCP-Verbindung (Port 21) zur Steuerung
lesbare Kommandos: USER username, PASS password, LIST, RETR
filename, STOR filename, …
jeweils eine TCP-Verbindung (Port 20) zur Übertragung einer Datei
„out-of-band-control“
mehr Einzelheiten in der Übung
FTP user
interface
FTP
client
User
Local file
system
Rechnerkommunikation, Anwendungsschicht
File transfer
FTP
server
FTP
server Remote file
system
29
E-Mail
Simple Mail Transfer Protocol (SMTP)
Nachrichten im ASCII-Format, Kopf, Rumpf
andere Daten (Word-Dateien u.ä.) werden in ASCII umgewandelt
angehängt: multimedia mail extension (MIME)
Versenden mit SMTP über TCP (lesbar)
Abholen mit POP3, IMAP, HTTP (lesbar)
mehr Einzelheiten in der Übung
Alice's
agent
SMTP
Bob's
Alice's
mail server SMTP mail server
Rechnerkommunikation, Anwendungsschicht
POP3,
IMAP,
HTTP
Bob's
agent
30
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
Handshaking (Begrüßung)
Nachrichtenübertragung
Abschlussphase
Interaktion mittels Befehlen und Antworten
Befehle: ASCII-Text
Antworten: Statuscode und Text
Nachrichten müssen 7-bit ASCII-Text sein
Rechnerkommunikation, Übung 2
31
Beispiel für einen SMTP-Dialog
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alice@crepes.fr>
250 alice@crepes.fr... Sender ok
RCPT TO: <bob@hamburger.edu>
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
Rechnerkommunikation, Übung 2
32
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
33
Netzwerkmanagement
Aufgaben des Netzwerkmanagements
Überwachung und Verwaltung eines Netzwerks = komplexes HW/SWGebilde (zahlreiche Geräte, Leitungen, Datenstrukturen, …)
nach ISO 5 Einsatzbereiche
- Leistung: Monitoring von Auslastung, Durchsatz, Antwortzeiten,
Dokumentation (z.B. für die Überwachung von Service Level
Agreements), Reaktionsmaßnahmen
- Fehler: Monitoring, Dokumentation, Reaktionsmaßnahmen
- Konfiguration: Übersicht über Geräte und deren HW/SWKonfigurationen
- Zugang: Festlegung, Kontrolle, Dokumentation des Zugangs von
Benutzern und Geräten
- Sicherheit: Monitoring und Kontrolle des Zugangs,
Schlüsselverwaltung, z.B. Filterregeln für Firewalls,
Intrusion Detection
diverse komplexe Standards, z.B. TMN, TINA
Rechnerkommunikation, Anwendungsschicht
34
Netzwerkmanagement
Simple Network Management
Protocol (SNMP)
Agent
Managing
Data
entity
einfach und verbreitet
Managing Entity, Prozeß auf zentraler
Management Station, ≈ Client
Network
Managed Device, Gerät im Netz
management
Managed Object, HW oder SW im
protocol
Managed Device, z.B. Routing-Tabelle
Management Agent, Prozeß auf Managed
Device, kann lokale Aktionen ausführen,
≈ Server
Agent
Anfrage/Antwort-Protokoll zwischen
Management Entity und Management
Agent über UDP
Managed
Data
Managed
device
Agent Data
Managed
device
Agent
Data
Data
Managed
device
device
Rechnerkommunikation, Anwendungsschicht
35
Netzwerkmanagement
SNMP Nachrichten (Version 2)
GET: Anfrage der Managing Entity einer Variable des Managed Objects
SET: Setzen der Variable eines Managed Objects durch Managing Entity
auch GET-NEXT and GET-BULK für Datenstrukturen
TRAP: Nachricht des Managing Agents über Fehlersituation
Get/set header
PDU
type
(0-3)
PDU
type
(4)
Variables to get/set
Request
ID
Error
Status
(0-5)
Error
Index
Enterprise
Agent
Addr
Trap
Type
(0-7)
Trap header
Rechnerkommunikation, Anwendungsschicht
Name
Value
…
Specific Time
Name
code stamp
Value
…
Name
Value
Trap information
36
Netzwerkmanagement
Management Information Base (MIB)
MIB-Module enthalten Datenstrukturen für die Managed Objects, von
der IETF genormt
Syntax wird in Structure of Management Information (SMI) der IETF
festgelegt, die wiederum die Abstract Syntax Notation One (ASN.1) der
ISO benutzt (im wesentlichen wie C ohne Referenzen)
ASN.1 besitzt auch ein Nummerierungsschema zur eindeutigen ObjektIdentifizierung, damit wird jedes MIB-Modul eindeutig bezeichnet
mit den Bit Encoding Rules (BER) wird noch das genaue binäre Format
für die Übertragung festgelegt
Rechnerkommunikation, Anwendungsschicht
37
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 icmp tcp
(1)
(2) translation (4) (5)
(6)
(3)
Rechnerkommunikation, Anwendungsschicht
udp egp
(7) (8)
cmot transmission snmp
(9)
(10)
(11)
rmon
(16)
38
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“
Rechnerkommunikation, Anwendungsschicht
39
Netzwerkmanagement
Basic Encoding Rules (BER)
Repräsentation 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öherwertiges 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
Rechnerkommunikation, Anwendungsschicht
40
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
41
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
User
1
user @ cs.princeton.edu
Mail
program
192.12.69.5
3
Rechnerkommunikation, Anwendungsschicht
192.12.69.5
4
TCP
42
DNS
Domain-Struktur
DNS implementiert 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 implementiert
edu
princeton … mit
cs
ee
com
gov
cisco … yahoo nasa … nsf
mil
org
arpa … navy
acm … ieee
net
de
eu
physics
ux01 ux04
Rechnerkommunikation, Anwendungsschicht
43
DNS
Root
name server
Hierarchie von Name-Servern
Root Name Server
einige wenige
Top-level Domain-Server
für com, org, net, edu, uk, de, eu, …
…
autoritativer Name-Server
unterste Ebene, für
einzelne Organisation
Princeton
name server
CS
name server
…
…
Cisco
name server
EE
name server
Root Name Server
Stand 2004:
Rechnerkommunikation, Anwendungsschicht
44
DNS: Resource Records
Resource Records
Datensätze der Namenserver (Domainname, Wert, Typ, TTL)
TTL: Time to Live, Dauer der Gültigkeit
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äuft,
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äuft
- Bsp.: (cs.princeton.edu, optima.cs.princeton.edu, MX, TTL)
Rechnerkommunikation, Anwendungsschicht
45
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
Rechnerkommunikation, Anwendungsschicht
46
DNS: Resource Records
Server von princeton.edu
(cs.princeton.edu, optima.cs.princeton.edu, NS, TTL)
(optima.cs.princeton.edu, 192.12.69.5, A, TTL)
(ee.princeton.edu, helios.ee.princeton.edu, NS, TTL)
(helios.ee.princeton.edu, 128.196.28.166, A, TTL)
(jupiter.physics.princeton.edu, 128.196.4.1, A, TTL)
(saturn.physics.princeton.edu, 128.196.4.2, A, TTL)
(mars.physics.princeton.edu, 128.196.4.3, A, TTL)
(venus.physics.princeton.edu, 128.196.4.4, A, TTL)
einige Datensätze sind Verweise auf die dritte Ebene, einige lösen die
IP-Adressen direkt auf
Rechnerkommunikation, Anwendungsschicht
47
DNS: Resource Records
Server der Domain cs.princeton.edu
(optima.cs.princeton.edu, 192.12.69.5, A, TTL)
(cheltenham.cs.princeton.edu, 192.12.69.60, A, TTL)
(baskerville.cs.princeton.edu, 192.12.69.35, A, TTL)
(che.cs.princeton.edu, cheltenham.cs.princeton.edu, CNAME, TTL)
(opt.cs.princeton.edu, optima.cs.princeton.edu, CNAME, TTL)
(bas.cs.princeton.edu, baskerville.cs.princeton.edu, CNAME, TTL)
(www.cs.princeton.edu, optima.cs.princeton.edu, CNAME, TTL)
(cs.princeton.edu, optima.cs.princeton.edu, MX, TTL)
enthält A-Datensätze für alle Hosts
Aliasnamen: praktischere Namen, erlaubt Flexibilität, z.B. für WebServer
MX-Datensätze: gleicher Zweck speziell für Mail-Server
Rechnerkommunikation, Anwendungsschicht
48
DNS: Protokoll
DNS-Protokoll
Anfrage- und Antwortnachrichten,
gleiches Format:
Kopf
- Identification: Zuordnung
Anfrage, Antwort
- Flags: Art der Anfrage bzw.
Antwort
Rumpf
- Questions: Domainnamen
- Answers: Resource Records
- Authority: Antworten von
autoritativen Servern
Rechnerkommunikation, 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)
49
DNS: Protokoll
Anfragearten
iterativ
- Antwort: anderer Server, der Namen evtl. auflösen kann
(oder keine Antwort)
- NS- und A-Datensatz
- Antwort wird sofort geliefert, es muß keine Information gespeichert
werden, gut für hochfrequentierte 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 Information
gespeichert werden
Rechnerkommunikation, Anwendungsschicht
50
DNS: Protokoll
root DNS server
Beispiel für iterative 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
Rechnerkommunikation, Anwendungsschicht
51
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
Rechnerkommunikation, Anwendungsschicht
52
DNS: Protokoll
root name server
Kombination aus rekursiver
und iterativer 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
Rechnerkommunikation, Anwendungsschicht
53
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
54
Content Distribution Networks
Origin server
in North America
Content Distribution Networks
(CDNs)
Ziel: Vermeiden längerer
Wartezeiten beim Laden von WebSeiten, 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) SpiegelServer geografisch verteilen (diese
sind wie Web-Caches, der Inhalt
wird aber proaktiv auf sie repliziert)
bekannte CDNs: Akamai, Digital
Island
Rechnerkommunikation, Anwendungsschicht
CDN distribution
node
CDN server
in South America
CDN server
in Asia
CDN server
in Europe
55
Content Distribution Networks
Verteilung der Anfragen
Server-basierte HTTP Redirection: Server liefert aufgrund der IPAdresse des Clients einen geeigneten anderen Server, erfordert
zusätzliche RTT, Gefahr der Überlast für Server
Client-nahe HTTP-Redirection: z.B. durch Web-Proxy, schwieriger zu
verwirklichen
DNS-basierte Redirection: DNS-Server bildet den Domain-Namen des
Servers auf die IP-Adresse eines geeigneten Servers ab
URL-Rewriting: Server liefert Basisseite, die URLs der eingebetteten
Objekte werden umgeschrieben, mit dem Domain-Namen eines
geeigneten anderen Servers
kommerzielle CDNs verwenden meist Kombination aus DNS-basierter
Redirection und URL-Rewriting
Rechnerkommunikation, Anwendungsschicht
56
Content Distribution Networks
Bsp. für URL-Rewriting
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 eingebettete
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 IPAdresse eines geeigneten Servers
3. HTTP-Anfrage an diesen Server
Origin server
1
DNS query for
2
3
Rechnerkommunikation, Anwendungsschicht
www.cdn.com
CDN‘s authoritative
DNS server
57
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
58
Real-Time Protocol
Multimediaanwendungen
Multimedia = Daten, Bilder, Sprache, Audio, Video
grundsätzliche Probleme bei Audio + Video
- Verzögerung durch Verarbeitung (z.B. Kompression) und Laufzeit
beschränkt Interaktivität
- Variabilität der Verzögerung (Jitter) erschwert kontinuierliche
Wiedergabe
- Verluste verschlechtern Qualität
- ggfs. geringe Bitrate beschränkt Auflösung (insbes. Video)
Lösungsansätze
- Streaming: Wiedergabepuffer, um Schwankungen des Netzes
auszugleichen, möglich in „Best-Effort“-Netzen
- Dienstgütemechanismen wie z.B. Reservierung und Priorisierung
Rechnerkommunikation, Anwendungsschicht
59
Real-Time Protocol
Streaming
Sender erzeugt Pakete kontinuierlich (d.h. periodisch) und versendet
sie mit Sequenznummer und Zeitstempel
die Pakete werden durch das Netz wegen dynamischer Lastsituationen
unterschiedlich verzögert
Prefetching: beim Empfänger Zwischenspeicherung in
Wiedergabepuffer
Zeitstempel ermöglicht kontinuierliche (d.h. periodische) Wiedergabe
nach einer Verzögerung
Rechnerkommunikation, Anwendungsschicht
60
Real-Time Protocol
Real-Time Transport Protocol (RTP, RFC 3550)
verbreitetes Anwendungsprotokoll für den Transport von
Multimediadaten
üblicherweise über UDP
unterstützt Codec-Identifikation, Sequenznummern, Zeitstempel,
Sitzungsidentifikation
aber nicht Pufferung, Fehlerkontrolle, Zeitsynchronisation auf
Endsystemen oder Reservierung, Priorisierung im Netz
auch keine Bestätigungen und kein Sitzungsaufbau
Philosophie: Bereitstellung einheitlicher Funktionalität für
Multimediaanwendungen, überläßt möglichst viel der Anwendung,
kurzer Kopf für Effizienz
Erweiterung durch Profile und Formate für Anwendungsklassen
Sender kann mehrere Medienströme versenden, z.B. Video und
Sprache
Unterstützung von Multicast
Rechnerkommunikation, Anwendungsschicht
61
Real-Time Protocol
RTP-Kopf
Version (V, 2 Bits),
gegenwärtig 2
Paddingbit (P), Länge in UDPKopf, letztes Byte enthält
Anzahl von Auffüllbytes
Extensionbit (X), Anzeige eines
Erweiterungs-Kopfes
CSRC Count (CC), Anzahl
CSRC-Felder, normalerweise 0
Markerbit (M), spezielle
Kennzeichnung gemäß Profil
0
8
V P X
CC
M
Payload Type (7 Bits) für CodecIdentifikation
Sequenznummern (16 Bits),
zufälliger initialer Wert,
inkrementiert pro Paket
Zeitstempel (32 Bits), zufälliger
initialer Wert, Einheit (Tick) Codecabhängig (Profil)
SSRC (32 Bits), Identifikation der
Synchronisationsquelle
CSRC (32 Bits), Identifikation
mehrer beitragender Quellen
16
Payload Type
31
Sequence Number
Time Stamp
SSRC Identifier
CSRC Identifier
Rechnerkommunikation, Anwendungsschicht
62
SIP
Alice
Session Initiation Protocol
(SIP)
Initialisierung einer Sitzung
über IP-Netz, z.B. für Sprache
Anfrage/Antwort-Modell ähnlich
wie HTTP, aber über UDP
Bsp.: Aufbau einer Verbindung
bei bekannter IP-Adresse
(vereinfacht)
Aushandeln von
Kodierungsverfahren mit
Session Description Protocol
(SDP), hier unterschiedlich in
beide Richtungen
die Medienströme werden dann
unabhängig über RTP
transportiert
Rechnerkommunikation, Anwendungsschicht
Bob
193.64.210.89
167.180.112.24
Bob‘s
terminal
rings
µ Law audio
port 38060
GSM
port 48753
Time
Time
63
SIP
SIP registrar
upenn.edu
Lokalisieren von Benutzern
Infrastruktur aus verschiedenen Servern
jim@umass.edu möchte mit
keith@upenn.edu telefonieren, kennt
aktuelle IP-Adresse nicht
- 1. INVITE keith@upenn.edu an
Proxy-Server umass.edu senden
- 2. umass.edu fragt Registrar
upenn.edu, wo Keith gerade ist
- 3. bei upenn.edu ist Keith nicht, aber
vielleicht bei eurecom.fr
- 4. Frage an eurecom.fr
- 5. eurecom.fr schickt INVITE an
Host, auf dem sich Keith gerade
befindet
- 6.-8. OK über Registrar, Proxy zurück
- 9. Medienstrom direkt zwischen
Hosts
1.-8. entspricht Signalisierung im
Telefonnetz
Rechnerkommunikation, Anwendungsschicht
2
SIP proxy
umass.edu
SIP registrar
eurcom.fr
3
4
7
1
6
8
5
9
SIP client
217.123.56.89
SIP client
197.87.54.21
64
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
65
Socket-Programmierung
Socket-Schnittstelle
verbreitetes API für Transportdienste
Festlegung von TCP/UDP, IP-Adressen, Portnummern
im folgenden Java-Programm mit TCP (UDP in Übung)
Java erlaubt flexible Nutzung der Strom-Abstraktion
Architektur:
Kontrolle durch
Anwendungsprogramm
Kontrolle durch
Betriebssystem
Prozeß
Prozeß
Socket
Socket
TCP mit
Puffern,
Variablen
Host oder
Server
Rechnerkommunikation, Anwendungsschicht
Internet
TCP mit
Puffern,
Variablen
Kontrolle durch
Anwendungsprogramm
Kontrolle durch
Betriebssystem
Host oder
Server
66
Socket-Programmierung
Beispiel für einfache
Client-Server-Anwendung
Rechnerkommunikation, Anwendungsschicht
inFromUser
Bildschirm
ClientProzeß
Ausgabestrom
inFromServer
Eingabestrom
outToServer
Client liest Zeile aus
Standardeingabe (inFromUser
stream) und sendet ihn über
ein TCP-Socket zum Server
Server liest Zeile aus TCPSocket
Server konvertiert in
Großbuchstaben (seine
Dienstleistung) und sendet
diese Zeichenkette über TCPSocket zurück an Client
Client liest Zeichenkette aus
TCP-Socket und gibt diese auf
Standardausgabe aus
Tastatur
clientSocket
zur
Transportschicht
Eingabestrom
TCP-Socket
von der
Transportschicht
67
Socket-Programmierung: Übersicht
Server-Prozeß auf hostid
Client-Prozeß
erzeuge Socket für
eingehende Verbindungswünsche an Port x:
welcomeSocket =
ServerSocket(x)
TCP-
warte auf Verbindungswünsche: Verbindungsaufbau
connectionSocket =
welcomeSocket.accept()
schreibe Zeile in
clientSocket
lese Zeile aus
connectionSocket
schreibe Antwort in
connectionSocket
schließe
connectionSocket
erzeuge Socket,
Verbindung zu hostid, port=x
clientSocket =
new Socket(hostid, x)
lese Antwort aus
clientSocket
TCPVerbindungsabbau
Rechnerkommunikation, Anwendungsschicht
schließe
clientSocket
68
Socket-Programmierung: Client
import java.io.*;
import java.net.*;
class TCPClient {
erzeuge
Eingabestrom für
Standardeingabe
erzeuge
Clientsocket,
verbinde mit Server
erzeuge
Ausgabestrom
für Socket
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Rechnerkommunikation, Anwendungsschicht
69
Socket-Programmierung: Client
erzeuge
Eingabestrom
für Socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
schreibe Zeile in Socket,
wird zu Server gesendet
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
lese Zeile aus Socket,
wurde von Server
gesendet
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Rechnerkommunikation, Anwendungsschicht
70
Socket-Programmierung: Server
import java.io.*;
import java.net.*;
class TCPServer {
erzeuge
WelcomeSocket
für Port 6789
blockiert,
erzeuge Socket bei
Verbindungswunsch
von Client
erzeuge
Eingabestrom
für Socket
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
Rechnerkommunikation, Anwendungsschicht
71
Socket-Programmierung: Server
erzeuge
Ausgabestrom
für Socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
lese Zeile aus Socket,
wurde von Client
gesendet
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
schreibe Zeile
in Socket,
wird zu Client
gesendet
}
}
}
outToClient.writeBytes(capitalizedSentence);
Ende der While-Schleife,
zurück und Warten auf neue TCP-Verbindung
Rechnerkommunikation, Anwendungsschicht
72
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
73
Verteilte Systeme
Verteiltes System
besteht aus mehreren unabhängigen Systemen, die wie ein einzelnes
kohärentes System erscheinen
wird oft durch Middleware realisiert, eine verteilte Software-Schicht, die
zwischen Betriebssystem und den Anwendungen angeordnet ist
Endsystem A
Endsystem B
verteilte Anwendung
Endsystem C
Anwendung
Verteilte Systemschicht (Middleware)
Netzdienste
des BS
Netzdienste
des BS
Netzdienste
des BS
Betriebssystem
Betriebssystem
Betriebssystem
Netz
Rechnerkommunikation, Anwendungsschicht
74
Verteilte Systeme
Remote Procedure Call (RPC)
verteilte Systeme können durch expliziten Nachrichtenaustausch
zwischen Prozessen über Sockets realisiert werden
im Prozedurfernaufruf (Remote Procedure Call, RPC) werden
Prozeduren auf entfernten Rechnern aufgerufen
in der Programmiersprache sieht dies wie ein herkömmlicher
Prozeduraufruf auf einem einzelnen Rechner aus
der RPC wird vor dem Benutzer verdeckt in Primitive des
Betriebssystems umgewandelt, z.B. mit Sockets
Transparenz, bietet bequeme Möglichkeit zur Abstraktion
RPC verbreiteter Ansatz zur Realisierung verteilter Anwendungen
Rechnerkommunikation, Anwendungsschicht
75
Verteilte Systeme
Realisierung eines RPCs
RPC wird durch Client Stub und Server Stub realisiert (Stub = Stumpf)
Client-Prozess legt Parameter auf Stack
Client Stub wandelt sie in Nachricht um (Marshalling) und sendet sie
zum Server-Stub
Server-Stub ruft Prozedur in Server-Prozess auf und sendet Ergebnis in
Nachricht zurück (benötigt Kopie des Inhalts, nicht Zeiger)
Server-Stub schreibt Ergebnis auf Stapel und ggfs. in andere
Speicherbereiche
Warten auf Ergebnis
Client
Aufruf der
Prozedur
Anfrage
Server
Rückkehr
vom Aufruf
Antwort
Aufruf einer lokalen
Zeit
Prozedur und Rückgabe
der Ergebnisse
Rechnerkommunikation, Anwendungsschicht
76
Verteilte Systeme
Bsp.: RPC add(i,j)
Client-Computer
Server-Computer
Client-Prozess
Server-Prozess
1. Client-Aufruf
der Prozedur
Implementierung
von add
Server-Stub
Client-Stub
k = add(i,j)
proc:“add“
int: val(i)
int: val(j)
2. Stub erstellt
Nachricht
Betriebssystem des Clients
proc: “add“
int: val(i)
int: val(j)
k = add(i,j)
proc:“add“
int: val(i)
int: val(j)
6. Stub führt einen
lokalen Aufruf
von „add“ aus
5. Stub entpackt
Nachricht
4. Das Betriebssystem
des Servers leitet
Betriebssystem des Servers
die Nachricht zum
Server-Stub weiter
3. Die Nachricht wird über
das Netzwerk gesendet
Rechnerkommunikation, Anwendungsschicht
77
Verteilte Systeme
Verteilte Objekte
Objekte auf verschiedenen Rechnern bieten Dienste an
Remote Method Invocation (RMI): wie RPC, für Methoden der Objekte
wird durch Vertreter der Objekte realisiert, die die Kommunikation über
Primitiven des Betriebssystems ausführen
Client
Client
Server
gleiche
Schnittstelle
wie Objekt
Client ruft
Methode auf
Proxy
BS des Clients
Netz
Rechnerkommunikation, Anwendungsschicht
Skeleton
ruft Methode
von Objekt
auf
Server
Objekt
Zustand
Methode
Skeleton
Schnittstelle
BS des Servers
„Marshallisierter“ Aufruf wird
übertragen
78
Verteilte Systeme
Mechanismen von Middleware-Systemen
Kommunikation
- Verdecken der „Low-Level“-Mechanismen des Netzwerks
- Marshalling, Unmarshalling (Kodierung und Dekodierung der
gesendeten Daten)
- Heterogenität von Plattformen und Sprachen
Prozesse: Threads, Migration, Agenten
Namensdienste: Namen für Objekte, Look-Up-Dienste
Uhrensynchronisation
Replikation von Daten und Konsistenzerhaltung
Fehlertoleranz
Sicherheit
Probleme von Middleware-Systemen
Komplexität, Performance-Overhead, Sicherheitsprobleme
Rechnerkommunikation, Anwendungsschicht
79
Verteilte Systeme
Einige Middleware- und RPC-Systeme
Common Object Request Broker Architecture (CORBA)
- durch Object Management Group (OMG) standardisiert, nichtkommerzielle Organisation mit über 800 Mitgliedern, www.omg.org
- Object Request Broker (ORB) ermöglicht Interaktion von
Anwendungen in verschiedenen Programmiersprachen
Java 2 Platform Enterprise Edition (J2EE)
- offener Standard (Java Community Process)
- nur für Java (weniger Overhead als bei CORBA), verwendet Java RMI
- verwendet Komponenten: komplexe Objekte (Enterprise Java Beans)
.NET
- für Microsoft Plattformen, Component Object Model (COM, DCOM)
Web Services
- Anbieten von Diensten über XML-basierte Internet-Protokolle
- WSDL (Web Service Description Language, W3C), SOAP (Middleware
Protokoll, W3C), UDDI (Universal Description, Discovery, and
Integration, OASIS)
Rechnerkommunikation, Anwendungsschicht
80
Verteilte Systeme: Remote Method Invocation (RMI)
Komponenten
RMI-Registry
Remote Interface
2
1
Naming.rebind()
Naming.lookup()
- beschreibt die Funktionen,
die auf dem Server zur
Server
Client
Verfügung stehen
3 Funktionsaufruf mit
- definiert damit das Verhalten
Funktionsparametern
Remote
Remote
des entfernten Objekts
Object
Interface
Remote Object
Rückgabewert
4 oder Exception
- stellt das entfernte Objekt dar
- liegt auf dem Server
- implementiert das Remote Interface und das Verhalten der für die
Clients zur Verfügung stehenden entfernten Methoden
Remote Reference
- Referenz auf Remote Object
- bekommen die Clients von der RMI Registry
Rechnerkommunikation, Anwendungsschicht
81
Verteilte Systeme: Remote Method Invocation (RMI)
Ablauf
RMI-Registry
2
1 Der Server registriert ein Remote
1
Naming.lookup()
Naming.rebind()
Object bei der RMI-Registry unter
einem eindeutigen Namen.
Server
Client
2 Der Client schaut bei der RMI
Registry unter diesem Namen nach
3 Funktionsaufruf mit
Funktionsparametern
Remote
Remote
und bekommt eine Objektreferenz,
Object
Interface
die seinem Remote Interface
Rückgabewert
4 oder Exception
entsprechen muss.
3 Der Client ruft eine Methode aus der
Objektreferenz auf
4 Der Server gibt dem Client die Rückgabewerte
dieses Aufrufs, oder der Client bekommt eine
Fehlermeldung (z. B. bei einem Verbindungsabbruch).
Rechnerkommunikation, Anwendungsschicht
82
Verteilte Systeme: Remote Method Invocation (RMI)
Remote Interface
Definition der
angebotenen
Methode
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Converter extends Remote {
public String toUpperCase(String toConvert)
throws RemoteException;
}
Remote Object
Implementierung der angebotenen Methode
public class ConverterImpl implements Converter {
public String toUpperCase(String toConvert) {
return toConvert.toUpperCase();
}
}
Rechnerkommunikation, Anwendungsschicht
83
Verteilte Systeme: Remote Method Invocation (RMI)
Server
Erzeugen des
Objekts
Exportieren des
Objekts, vgl.
ServerSocket
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class Server {
public static void main(String args[]) throws Exception {
ConverterImpl obj = new ConverterImpl();
Converter stub = (Converter)
UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("MyConverter", stub);
Bekanntmachen
des Objekts in
der Registry
1
System.err.println("Server ready");
}
}
Rechnerkommunikation, Anwendungsschicht
84
Verteilte Systeme: Remote Method Invocation (RMI)
Client
Laden der
Registry
import
import
import
import
java.io.BufferedReader;
java.io.InputStreamReader;
java.rmi.registry.LocateRegistry;
java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) throws Exception {
String sentence;
String modifiedSentence;
Registry reg = LocateRegistry.getRegistry(„hostname");
Converter stub = (Converter) reg.lookup("MyConverter");
Client bekommt 2
Remote Reference
Rechnerkommunikation, Anwendungsschicht
85
Verteilte Systeme: Remote Method Invocation (RMI)
Einlesen der
Benutzereingabe
BufferedReader inFromUser = new BufferedReader(
new InputStreamReader(System.in));
sentence = inFromUser.readLine();
Aufruf am 3 4
RemoteObject
modifiedSentence = stub.toUpperCase(sentence);
Ausgabe des
Ergebnisses
System.out.println("FROM SERVER: " + modifiedSentence);
}
}
Rechnerkommunikation, Anwendungsschicht
86
Verteilte Systeme: Web Services
Überblick
Software-Anwendung, die mit URL identifizierbar ist und deren
Schnittstelle über XML beschrieben, gefunden, und benutzt wird
Analogie: Web Services ist für Computer ähnlich zu Webseiten für
Menschen
Bsp.:
Kombination
einzelner Dienst
einzelner Dienst
Temperatur
Info Service
Neuer Web Service (Reise Info Service):
Ein Service, der einem mit dem Flugzeug
erreichbare Reiseziele, nach Entfernungen
geordnet, zusammen mit der aktuellen
Temperatur auflistet.
Flug Info
Service
Karten Info
Service
einzelner Dienst
Rechnerkommunikation, Anwendungsschicht
87
Verteilte Systeme: Web Services
XML Basistechnologien
SOAP (Simple Object Access Protocol)
- dient zur Kommunikation zwischen den Services
- arbeitet mit jedem Betriebssystem auf jeder Plattform
UDDI (Universal Description, Discovery and Integration)
- Industrieinitiative
- dient zur Suche und Registrierung von Services (weltweit eindeutig)
- ist vergleichbar mit einem Telefonbuch (Gelbe Seiten)
- Dienstanbieter registrieren Informationen zu ihren Services mit UDDI
WSDL (Web Services Description Language)
- dient zur Beschreibung
Beschreibung
WSDL
der angebotenen Dienste
Nachrichtenformat
SOAP
UDDI
HTTP, SMTP
Transport
TCP/IP, RMI …
Rechnerkommunikation, Anwendungsschicht
Verwaltung
88
Verteilte Systeme: Web Services
Zusammenhang / Rollen
Web Service Provider
1- beschreibt die Schnittstelle mittels WSDL
2- registriert seinen Dienst bei der UDDI Registry
Web Service Requestor (Applikation)
3- macht den Service ausfindig, indem er mit der UDDI Registry Kontakt
aufnimmt, und erhält Informationen, wo er das WSDL-Dokument des
Service findet
4- wertet die Informationen (u.a. XML-Schema für Anfrage) aus und
generiert eine SOAP-Nachricht
5- bezieht die passenden Informationen vom Service Provider
WSDL
SOAP
4
Suchen
UDDI
Web Service
Requestor
3
UDDI
Registry
Registrieren 2
UDDI
Aufruf SOAP
Web Service
Provider
5
Rechnerkommunikation, Anwendungsschicht
1
WSDL
Interface
89
Verteilte Systeme: Web Services, SOAP
Firewall
Eigenschaften
Mit SOAP können Web Services
miteinander kommunizieren, auch
wenn sie hinter einer Firewall sind.
SOAP Nachrichten haben eine sehr
einfache Struktur
Der SOAP-Envelope besteht aus einem
Header und einem Body
SOAP
Server
Server
Internet
SOAP
SOAP
Server
Die für den Empfänger gedachten Informationen (z.B. RPCInformationen, XML messages oder Error messages) stehen im Body
Der Header kann zusätzliche Informationen zur SOAP Nachricht
enthalten, z.B. Digitale Signatur, Transactions- und RoutingInformationen
Rechnerkommunikation, Anwendungsschicht
90
Verteilte Systeme: Web Services, SOAP
<?xml version = “1.0“?>
<soap:Envelope xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/“>
<soap:Header>
<!-- Optionale Headerinformationen -->
<To>Wetter Info Service</To>
<From>Reise Info Service</From>
Inhalt ist nicht spezifiziert;
</soap:Header>
er wird von der Anwendung
festgelegt!
<soap:Body>
<soap:Envelope
<!-- Eigentliche Nachricht -->
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/“
Schicke mir die aktuelle Temperatur in Rom
></soap:Body>
</soap:Envelope>
Rechnerkommunikation, Anwendungsschicht
91
Verteilte Systeme: Web Services, UDDI
White Pages
Namensregister, sortiert nach Namen
Auflistung der Anbieter mit allen Detailangaben
Kontaktinformationen (Telefon, Telefax,...)
Yellow Pages
Branchenverzeichnis
spezifische Suche gemäß verschiedener Taxonomien (Ort, Dienstart,...)
verweist auf White Pages
klassifiziert die Services anhand internationaler Standards wie UNSPEC
Green Pages
Informationen über das Geschäftsmodell des Unternehmens
technische Details zu den angebotenen Web Services
Auskunft über Geschäftsprozesse
Rechnerkommunikation, Anwendungsschicht
92
Verteilte Systeme: Web Services, UDDI
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<find_business xmlns="urn:uddi-org:api_v2" generic="2.0">
<categoryBag>
Interesse: Software-Industrie
<keyedReference keyValue="51121"
tModelKey="uuid:c0b9fe13-179f-413d-8a5b5004db8e5bb2" />
</categoryBag>
</find_business>
Referenzspezifikation:
</soap:Body>
Wie arbeitet der Webservice?
</soap:Envelope>
Diese Informationen muss der Benutzer kennen.
Es wird z.B. ein Web User Interface angeboten.
Rechnerkommunikation, Anwendungsschicht
93
Verteilte Systeme: Web Services, WSDL
Aufgabe
Beschreibung von Web Services
Auswertung von Computern
Informationen für den
Entwickler
WSDL
u.a. Infos zu:
beschreibt
•Interface
•Implementierung
•URL
Web
Service
Inhalt
Informationen zum Interface
- Nachrichtenformat
- Kommunikationsprotokoll
- Operationen für den Datentransfer (z.B. send only, receive only,
send and receive)
Informationen zur Implementierung
- Access Point des Web Services (URL)
Rechnerkommunikation, Anwendungsschicht
94
Verteilte Systeme: Web Services, WSDL
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://localhost/wetterFrosch"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:tns="http://localhost/wetterFrosch"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Deklaration der Namespaces
Rechnerkommunikation, Anwendungsschicht
95
Verteilte Systeme: Web Services, WSDL
<wsdl:portType name="Temperature">
<wsdl:operation name="getTemp" parameterOrder="ort">
<wsdl:input message="tns:tempRequest" name="TempRequest"/>
<wsdl:output message="tns:tempResponse" name="TempResponse"/>
</wsdl:operation>
</wsdl:portType>
Deklaration der Schnittstelle
<wsdl:message name="TempRequest">
<wsdl:part name="ort" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="TempResponse">
<wsdl:part name="tempReturn" type="xsd:int"/>
</wsdl:message>
Deklaration der
verwendeten Nachrichten
Rechnerkommunikation, Anwendungsschicht
96
WSDL
Wie kommt man an den Dienst
mittels SOAP ran?
<wsdl:binding name="TemperatureSoapBinding" type="tns:Temperature">
<wsdlsoap:binding
RPC
style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getTemp">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="TempRequest">
TempRequest erwartet
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:input>
<wsdl:output name="TempResponse">
TempResponse zurück
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost/wetterFrosch" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
Rechnerkommunikation, Anwendungsschicht
97
Verteilte Systeme: Web Services, WSDL
<wsdl:service name="TemperatureService">
<wsdl:port binding="impl:TemperatureSoapBinding"
name="Temperature">
<wsdlsoap:address location="http://localhost/wetterFrosch"/>
</wsdl:port>
</wsdl:service>
Unter der Angegebenen URL wird ein
TemperatureService angeboten.
</wsdl:definitions>
Rechnerkommunikation, Anwendungsschicht
98
Anwendungsschicht
Einführung
Verbreitete Anwendungen
Hypertext Transfer Protocol (HTTP)
File Transfer Protocol (FTP)
E-Mail
Netzwerkmanagement
Domain Name System (DNS)
Content Distribution Networks
Real-Time Protocol (RTP)
Session Initiation Protocol (SIP)
Socket-Programmierung
Verteilte Systeme
Peer-to-Peer-Systeme
Rechnerkommunikation, Anwendungsschicht
99
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
Internet
d3
u4
dN
uN
Rechnerkommunikation, Anwendungsschicht
d6
u6
d5
d
uU5 4
100
P2P
Peer-to-Peer
Anwendungen wie Napster und KaZaA zum direkten Austausch von
Musikdateien (MP3) haben P2P populär gemacht
Napster aus juristischen Gründen stillgelegt, diverse Nachfolger
(Gnutella, Pastry, eDonkey, …)
Hauptteil des Netzverkehrs wird heute durch P2P erzeugt
Peers kommunizieren direkt mittels TCP oder UDP
P2P-Netze bilden Overlay-Netz: logisches Netz aus Peers über dem
physikalischen Netz
Rechnerkommunikation, Anwendungsschicht
101
P2P
Zentralisiertes Verzeichnis
Architektur von Napster
Eintritt 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
- juristischer „Schwachpunkt“
- Leistungs- und
Zuverlässigkeitsproblem
Bob
centralized
directory server
1
peers
1
3
1
2
1
Alice
Rechnerkommunikation, Anwendungsschicht
102
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 Identität des ursprünglich anfragenden Peers
bleibt so unbekannt)
die Antwort findet zur Quelle zurück, diese kontaktiert direkt einen der Peers,
der die Anfrage beantworten kann, die Übertragung erfolgt mittels HTTP
kein zentraler Server benötigt
Eintritt in das Overlay-Netzwerk: Nachricht an eine veröffentlichte
Liste von möglichen Peers schicken
Skalierbarkeit ist wegen des Flutens problematisch
Rechnerkommunikation, Anwendungsschicht
103
P2P
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 ≈ „MiniNapster“)
Overlay-Netzwerk zwischen Group
Leadern
Austausch zwischen Group Leadern
ähnlich wie bei Gnutella
bessere Skalierbarkeit, ebenfalls
keine zentrale Kontrolle
Rechnerkommunikation, Anwendungsschicht
104
P2P
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 mittels Hash-Funktion 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 ≤-Relation gilt bis auf Modulo 2m-1)
- Lookup für ein Datenelement mit Schlüssel k erfolgt auf Peer
succ(k)
Rechnerkommunikation, Anwendungsschicht
105
P2P
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 exponentiell 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
Rechnerkommunikation, Anwendungsschicht
106
Eigentlicher Knoten
1
2
3
4
5
30
1
1
1
4
14
0
1
4
4
9
9
18
2
Finger-Tabelle
i
4
28
Lookup von k =12
auf Peer 28
27
1
2
3
4
5
3
29
26
1
2
3
4
5
31
1
2
3
4
5
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
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
Rechnerkommunikation, 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
107
P2P
Lookup von k = 26 auf Peer 1
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 von k = 12 auf Peer 28
Lookup auf Peer 28 ergibt p = 4 = FT28[4] ≤ 12 < FT28[5]
Lookup auf Peer 4 ergibt p = 9 = FT4[3] ≤ 12 < FT4[3]
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 Operationen notwendig
Aktualisierung des Overlays, Optimierung
Rechnerkommunikation, Anwendungsschicht
108
P2P
Hybridarchitektur
Tracker
Peer
Obtain
list of
peers
Alice
Rechnerkommunikation, Anwendungsschicht
Trading chunks
109