Rechnerkommunikation

Werbung
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: <[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
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
 [email protected] möchte mit
[email protected] telefonieren, kennt
aktuelle IP-Adresse nicht
- 1. INVITE [email protected] 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
Herunterladen