Modul: Programmierung B-PRG Grundlagen der Programmierung 1

Werbung
Grundlagen der Programmierung 1
Modul: Programmierung B-PRG
Grundlagen der Programmierung 1 – Teil 4
Teil 4 – Verteilte Systeme
1. Einführung
1.1 Vernetzung von Rechnern
1.2 Client / Server - Modell
1.3 ISO-OSI Referenzmodell
1.4 Internet: Architektur, Protokolle
Verteilte Systeme
Prof. Dr. O. Drobnik
Professur Architektur und Betrieb verteilter Systeme
Institut für Informatik
Fachbereich Informatik und Mathematik
2. Routing: Kürzeste Wege
1. Einführung
Protokoll : Regeln für den Austausch von Nachrichten
zwischen kommunizierenden Einheiten (Prozessen) :
ƒ Format, Bedeutung und Reihenfolge (Ordnung) der
Nachrichten
ƒ Aktionen, die zur Übertragung und/oder beim
Empfang einer Nachricht oder beim Auftreten eines
anderen Ereignisses durchzuführen sind.
1.1 Vernetzung von Rechnern
Verteiltes Rechnersystem (Distributed Computer System)
Rechner
Prozess
Kommunikationssystem
Menge von autonomen Rechnern (kein gemeinsamer Speicher)
Kommunikationssystem, das die Rechner untereinander
verbindet und den Austausch von Nachrichten zwischen ihnen
(bzw. Prozessen) ermöglicht (Menge von Hardware und
Software Komponenten).
Prozesse kooperieren zur Erfüllung einer gemeinsamen
Aufgabenstellung ; die Kooperation erfolgt über
Nachrichtenaustausch.
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 3
Rechnernetz
(Computer Network)
Rechner und Kommunikationssystem
ermöglichen Nachrichtenaustausch (sind
kommunikationsfähig)
enthalten jedoch keinerlei Mechanismen, die eine
kooperative Aufgabenbearbeitung durch mehrere
Programme unterstützt. (Anmerkung : Rechnernetz ist
Basis eines verteilten Systems ! )
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 4
Vernetzungsszenarien
Internet-Architektur
geostationär
z.B. GPS, Galileo
Internet heute
Großes Unternehmen
Mobilfunk
Clients
Server
Backend
Rechner
Token
Ring
CSMA
Fast-Ethernet
Gigabit-Ethernet
Vermittlungsnetze
•ATM
ATM
Gigabit-Ethernet
Sonet
Firewall
CSMA
Internet Service
Provider (ISP)
Peering
Point
Backbone Service Provider
Data
Warehouse
•Sonet
Backbone
Frontend
Peering
Point
Öffentl. Netze
Intranet
Autonome
Systeme
Transit
ISP
ISP
Gateway
Cluster
WLAN
Kleinfirma
Supercomp.
Großes Unternehmen
Techn. Prozesse
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 5
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
1.2 Client / Server - Modell
Dienst-Nutzung
Client / Server - Modelle beruhen auf dem Grundsatz einer
funktionalen Trennung von Benutzer (Client) und Bereitstellung
sowie Verwaltung von Betriebsmitteln / Diensten (Server).
Um einen Dienst eines Servers nutzen zu können, ist es
für den Client erforderlich, folgende Informationen zu
besitzen:
Betriebsmittel sind u. a.: Rechnerleistung, Datenbestände,
Plattenspeicher, etc.
Funktion und Leistungsumfang des angebotenen
Dienstes.
Client:
Syntax der Schnittstellen, Datentypen
Server:
System, das die Dienstleistung eines Servers anfordert
und nutzt.
Zentrales oder dezentrales System, auf dem Dienste
(Services) installiert sind, die vom Client aufgerufen
und genutzt werden.
© J.W.G-Universität Frankfurt a.M.
Semantik der an der Schnittstellen angebotenen
Funktionen
Auswirkung der Funktionsaufrufe auf den Zustand des
Servers, mögliche Aufruffolgen.
Zugangsprotokoll
Beispiel: WWW-Browser (Client), - Server
Grundlagen der Programmierung 1
Folie 6
Folie 7
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 8
Nachrichtenaustausch
1.3 ISO-OSI Referenzmodell
Der Client sendet eine Nachrichten an den Server, in der er den zu
erbringenden Dienst spezifiziert.
Der Server nimmt die Nachricht entgegen und führt den Dienst aus.
Falls kein Fehler aufgetreten ist, sendet der Server das Ergebnis in einer
weiteren Nachricht an den Client zurück. Im Fehlerfall wird ein
Fehlerindikator zurückgeschickt.
Der Client nimmt das Ergebnis (bzw. den Fehlerindikator) entgegen und
verarbeitet es weiter.
Anforderungen
(Request)
Client
receive (p)
Ergebnis
(Reply)
Protokolle werden durch kooperierende Instanzen
(Prozesse) abgewickelt. Diese tauschen
Protokolldateneinheiten aus, die neben den zu
übertragenden Daten die protokollrelevante
Informationen erhalten (z.B. Sequenznummern,
Prüfsummen).
Bei der Kommunikation zwischen Rechnern kommen
i.a. mehrere Protokolle zum Einsatz, die verschiedene
Aufgaben erfüllen, und aufeinander aufbauen.
Elementare Protokolle realisieren Funktionen, die von
höheren Protokollen verwendet , um ihrerseits neue
Funktionen zu realisieren.
Server
send (p)
Entkopplung, ggf.
weitere Aktivitäten
und Anforderungen
Das ISO-OSI Referenzmodell
Bearbeitung von p
send (r)
receive (r)
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 9
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
ISO-OSI Referenzmodell
ISO-OSI Referenzmodell
Architekturmodell für Kommunikationssysteme :
ISO
International Organisation for Standardisation
OSI
Open Systems Interconnection
Zerlegung des komplexen Kommunikationsvorgangs in
einfachere Teilfunktionen, die weitgehend voneinander
unabhängig betrachtet werden können.
Folie 10
1977 – 82/83 : Int. Standard
Zweck dieses Modells :
Probleme :
ƒ Identifikation der Teilfunktionen
ƒ Zusammenwirken der Teilfunktionen zur Erfüllung
des Systemzwecks
Bereitstellung einer gemeinsamen konzeptuellen Basis zur Koordination
der internationalen Entwicklung von existierenden und zukünftigen
Standards für die Kommunikation zwischen Systemen im Sinne offener
Systeme.
Kommunikation : Austausch von Informationen
zwischen Partnern mittels Nachrichten über ein
Medium.
Identifikation von Bereichen, in denen Standards neu entwickelt werden
oder verbessert werden müssen.
Einschätzung des Werts existierender Standards.
Flexibilität gegenüber neueren technischen Entwicklungen.
Das Referenzmodell unterteilt die vom Kommunikationssystem zu
erbringenden Aufgaben in sieben aufeinander aufbauende Schichten:
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 11
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 12
ISO-OSI Referenzmodell
Anwendung
(application)
1.4 Internet: Architektur, Protokoll
Semantik der durchzuführenden Aktion
DNS
Darstellung
(presentation)
Syntaktische Regeln für den Informationstransfer mit
Umsetzung
Kommunikationssteuerung (session)
Organisation und Synchronisation der Kommunikation
zwischen Anwendungsprozessen
Transport
(transport)
Transparenter, zuverlässiger und kostengünstiger
Transfer von Daten zwischen Anwendungsprozessen
Vermittlung
(network)
Transfer von Daten zwischen Endsystemen über
gekoppelte Teilstrecken oder Netze
Sicherung
(data link)
Bitübertragung
(physical)
SSH
HTTP
UDP
ICMP
Anwendung
Transport
TCP
IP
IGMP
Netzwerk
Überwachung von Teilstrecken mit Fehlererkennung
und Fehlerkorrektur
Strom von Bits ohne Sicherung über Medien
Jede Schicht stellt eine Menge von Funktionen bereit, die der Schnittstelle zur
darüberliegenden Schicht zur Verfügung steht, und als Dienst bezeichnet
wird. Ein Dienst wird an Dienstzugangspunkten bereitgestellt.
Dienstzugangspunkte werden durch Adressen identifiziert.
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
RARP
ARP
Folie 13
Hardware Interface
Bitübertragung
Medium
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
IP-Adressen (1)
IP-Adressen (2)
IP : Internet Protocol
Eine IP-Adresse der Klasse A,B oder C identifiziert eine
Netzschnittstelle, nicht einen Rechner, denn ein Rechner kann
mehrere Netzschnittstellen besitzen.
IP ist ein verbindungsloses Protokoll. Es bietet die Basis für eine Vielzahl
der im Internet verwendeten Protokolle.
IP-Adressen
Folie 14
Beispiel für eine IP-Adresse
Die Adressen der Schicht 3 sind IP-Adressen.
IP-Adressen sind 32-Bit Zahlen, die meist byteweise notiert werden, z.B.
141.2.14.16.
Als Beispiel dient die IP-Adresse eines Rechners im Netz der
Universität Frankfurt : 141.2.14.16.
IP-Adressen sind in fünf Klassen unterteilt :
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 15
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 16
Verwaltung des IPIP-Adressraums
Domain Name System (DNS)
ICANN (the Internet Corporation for Assigned Names and Numbers)
ist verantwortlich für :
IP Adressraum Zuordnung,
DNS verwendet einen hierarchischen Namensraum (Baum),
ähnlich dem Unix-Dateisystem.
DNS (Domain Name System) Management,
Jeder Knoten hat einen Namen (label) von bis zu 63 Zeichen.
An der Wurzel des Baums befindet sich ein besonderer
Knoten mit einem Namen der Länge 0.
Root Server System-Managementfunktionen.
Groß- und Kleinschreibung in Namen ist irrelevant.
Protokollparameter Zuweisung,
Der Domainname eines Knotens ist die Liste der
Knotennamen beginnend mit dem Namen des Knotens selbst
bis zur Wurzel, wobei die Namen mit Punkten („ .“)
voneinander getrennt werden.
DNS :
DNS ist eine verteilte Datenbank u.a. zur Abbildung von
Rechnernamen auf Adressen (und umgekehrt).
Eigenschaften:
Ein Domainname, der mit einem Punkt endet, heißt absoluter
oder voll qualifizierter Domainname (fully qualified domain
name, FQDN), zum Beispiel:
Es gibt keine Instanz auf dem Internet, der die kompletten
Informationen vorliegen.
Nameserver stellen Daten zur Verfügung.
hera.rbi.informatik.uni-frankfurt.de.
Zugang zum DNS : über Resolver (Bibliothek).
Die TCP/IP-Protokolle wissen nichts über DNS.
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
(IP-Adresse: 141.2.1.1)
Folie 17
Socket-basierte Kommunikation
© J.W.G-Universität Frankfurt a.M.
Grundlagen der Programmierung 1
Sockets
Seit BSD Unix 4.2 (~1984), mittlerweile in (fast) allen Betriebssystemen
als „kleinster gemeinsamer Nenner“ der Abstraktion einer Netzschnitt-
Die Adressen der Schicht 4 sind Sockets.
Sockets bestehen aus :
stelle verfügbar.
IP-Adresse und Portnummer
Sockets :
sind das grundlegende Konzept für Interprozesskommunikation unter
Unix,
Port: Adreßkomponente, identifiziert Speicherbereich für
die Daten einer Kommunikationsverbindung
bilden die Schnittstelle zum Betriebssystem für die Abwicklung von
Kommunikationsaufträgen,
Portnummer: Zahl zwischen 0-65535.
bilden die Kommunikationsendpunkte zwischen zwei Prozessen.
Schreibweise für Sockets :
141.2.1.1:22.
orientieren sich am Unix-Prinzip für Datei-Zugriff:
Open
O
Read
R
Write
W
Close
C
Grundlagen der Programmierung 1
Folie 18
© J.W.G-Universität Frankfurt a.M.
IP-Adresse:Port, z.B. :
Sockets erlauben die Adressierung verschiedener
Empfänger innerhalb eines Rechners, z.B.
verschiedener Prozesse.
Folie 19
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 20
UDP : User Datagram Protocol
Sockets
Durch die feste Zuordnung eines Teils der Portnummern
zu Diensten (RFC 3232 ) wird die Bereitstellung von
Internetweit verfügbaren Diensten ermöglicht.
Internet Assigned Numbers Authority - Liste der
zugeordneten Ports:
http://www.iana.org/assignments/port-numbers
well known ports:
UDP (RFC 768) stellt einen verbindungslosen
Transportdienst bereit.
UDP verwendet IP zum Transport der Datagrame, dabei
ist die maximale Größe der UDP-Daten durch die
maximale Größe eines IP-Pakets bestimmt.
0 – 1023
ƒ Port 21 : File Transfer Protocol (FTP)
ƒ Port 22 : Secure Shell (SSH)
ƒ Port 80 : Hypertext Transfer Protocol (HTTP)
registered ports:
1024 – 49151
dynamic and/or private ports:
49152 – 65535
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 21
TCP : Transmission Control Protocol
Die Kommunikation zwischen Endsystemen erfolgt bei TCP in drei
Schritten
ƒ Aufbau der Kommunikationsverbindung,
ƒ Austausch von Daten,
ƒ Abbau der Kommunikationsverbindung.
TCP unterteilt Anwendungsdaten in Segmente (TCP-Segmente), die
mit IP transportiert werden. Die Größe der Segmente kann von den
Kommunikationspartnern beim Verbindungsaufbau bestimmt werden.
© J.W.G-Universität Frankfurt a.M.
© J.W.G-Universität Frankfurt a.M.
Folie 22
IPIP-Routing
TCP ist ein verbindungsorientiertes, zuverlässiges Transportprotokoll.
Grundlagen der Programmierung 1
Grundlagen der Programmierung 1
Folie 23
Beim Transport eines IP-Paketes lassen sich zwei Fälle
unterscheiden.
Der Empfänger ist direkt mit dem Sender verbunden, z.B.
über eine PPP-Verbindung oder durch eine Schnittstelle zum
gleichen Netz :
IP-Pakete können direkt an den Empfänger gesendet werden.
Der Empfänger ist nicht direkt mit dem Sender verbunden :
IP-Pakete müssen über Netzgrenzen hinweg transportiert
werden. Dazu werden die IP- Pakete an den Default-Router
des lokalen Netzes gesendet, der sie auf der Basis seiner
Routing-Tabellen an den Empfänger liefert. Routing Protokolle (RIP, OSPF) dienen der Erstellung der Routing –
Tabellen.
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 24
2.1 Routing: Kürzeste Wege
Routing: Kürzeste Wege
Der kürzeste Weg von einer Quelle zu anderen Knoten
In Anlehnung an Dijkstra:
Betrachte eine Menge S der Knoten, zu denen bereits ein kürzester Weg
gefunden wurde.
(Single Source Shortest Path, SSSP)
Gegeben: ein gerichteter Graph G = (V, E) mit Kosten GE : E → Nat.
Der Knoten v0 ∈ V ist der Startknoten.
Beginne mit S = {ø}
Gesucht: der Weg mit minimalen Kosten von v0 zu allen anderen Knoten:
kürzester Weg
In jedem Schritt wird ein Knoten v ∈ V \S zu S hinzugefügt, dessen Abstand
zu s minimal ist (minimal unter dem Knoten in V \S).
Beispiel: Startknoten: v0
Dieser Knoten v läßt sich erreichen, indem man nur über Knoten in S läuft.
Es kann also keinen kürzeren Weg zu v geben, der über einen Knoten w ∈
V \S läuft.
45
v0
50
20 10 15
v2
Weg
v1
35
20
v3
15
10
v4
1
2
3
4
30
3
v0v2
v0v2v3
v0v2v3v1
v0v4
Länge/Kosten
Falls (s, · · · , w, · · · v) kürzer ist als (s, · · · , v),
wäre nicht v gewählt worden, sondern w. Daher
muß w ∈ S gelten.
10
25
45
45
Es genügt also, den kürzesten Pfad ausgehend
von den Knoten in S aus zu suchen.
v5
© J.W.G-Universität Frankfurt a.M.
Grundlagen der Programmierung 1
Folie 25
© J.W.G-Universität Frankfurt a.M.
Grundlagen der Programmierung 1
Routing: Kürzeste Wege
Routing: Kürzeste Wege
Variablen im Programm:
Repräsentation von Graphen:
g
Graph g als Datenstruktur: class D graph
result
Liste der kürzesten Wege einschließlich der zugeordneten
Kosten
short
Menge der Knoten, zu denen bereits kürzeste Wege bestimmt
worden sind:
{key:value} (dictionary)
vertices
Diferenzmenge Vshort: Liste
distance
Kosten der bisher gefundenen kürzesten Weges von v zu
Knoten vj in vertices über Knoten vi in short
pathcost
Kosten des aktuell betrachteten Weges
Knoten aus vertices, zu dem der bisher kürzeste Weg
gefunden wurde
anchor
Direkter Vorgänger von nearest in short
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
init:
addvertex:
addedge:
getvertices:
Erzeugen eines Graphen
Hinzufügen eines Knotens
Hinzufügen einer markierten Kante
Liefert die Menge der Knoten
cost:
Liefert Kosten zu einer Kante des Graphen,
sofern die Kante existiert; None: Sonst
Interne Kantendarstellung:
None: unendl. Kosten, keine Kante
if distance == None or distance > pathcost
nearest
Folie 26
Folie 27
e
e[0][0]
e[0][1]
e[1]
= ((v1,v2,),c)
= v1
= v2
=c
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 28
Routing: Kürzeste Wege
Routing: Kürzeste Wege
def getvertices(self):
return copy.copy(self.knotenListe)
import copy
class DGraph:
def __init__(self):
self.knotenListe = []
self.kantenListe = []
def cost(self, v1, v2):
ret = None
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
ret = i[1]
return ret
def addvertex(self, v1):
if v1 not in self.knotenListe:
self.knotenListe.append(v1)
def addedge(self, v1, v2, c):
if not v1 == v2:
self.addvertex(v1)
self.addvertex(v2)
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
self.kantenListe.remove(i)
self.kantenListe.append(((v1,v2),c))
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
def addedges(self, tupelListe):
for i in tupelListe:
a1 = i[0][0]
a2 = i[0][1]
c = i[1]
self.addedge(a1,a2,c)
Folie 29
Routing: Kürzeste Wege
© J.W.G-Universität Frankfurt a.M.
Folie 30
Routing: Kürzeste Wege
def printshort(dict,result): ## debug-Ausgabe-Funktion
print
eins = "short = "
for v in dict.keys():
print "%s '%s' : %s" % (eins,v,dict[v])
eins = "
"
print "result = %s" % result
Grundlagen der Programmierung 1
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 31
# SSSP nach Dijkstra
def sssp(g, v):
result = []
vertices = g.getvertices()
vertices.remove(v)
short = {v: ([v], 0)}
printshort(short,result) ### debug-Ausgabe
while len(vertices) > 0:
distance = None
for v0 in short.keys():
for v1 in vertices:
pathcost = g.cost(v0,v1)
if pathcost <> None:
pathcost = pathcost + short[v0][1]
if distance == None or distance > pathcost:
distance = pathcost
nearest = v1
anchor = v0
if distance == None:
break
vertices.remove(nearest)
short[nearest] = (short[anchor][0] + [nearest],
short[anchor][1] + g.cost(anchor, nearest))
result.append((short[nearest][0], short[nearest][1]))
printshort(short,result) ### debug-Ausgabe
return result
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 32
Routing: Kürzeste Wege
Routing: Kürzeste Wege
tl = [(("v0","v1"),50),
(("v0","v2"),10),
(("v2","v0"),20),
(("v1","v2"),15),
(("v2","v3"),15),
(("v1","v4"),10),
(("v3","v4"),35),
(("v4","v3"),30),
(("v5","v3"),3),
(("v0","v4"),45),
(("v3","v1"),20)]
g = DGraph()
g.addedges(tl)
ergebnis = sssp(g, "v0")
> python sssp.py
short = 'v0' : (['v0'], 0)
result = []
Grundlagen der Programmierung 1
'v0' : (['v0'], 0)
'v2' : (['v0', 'v2'], 10)
result = [(['v0', 'v2'], 10)]
short
=
short
=
'v0' : (['v0'], 0)
'v2' : (['v0', 'v2'], 10)
'v3' : (['v0', 'v2', 'v3'], 25)
'v4' : (['v0', 'v4'], 45)
result = [(['v0', 'v2'], 10), (['v0', 'v2', 'v3'], 25),
(['v0', 'v4'], 45)]
© J.W.G-Universität Frankfurt a.M.
Folie 33
=
'v0' : (['v0'], 0)
'v1' : (['v0', 'v2', 'v3', 'v1'], 45)
'v2' : (['v0', 'v2'], 10)
'v3' : (['v0', 'v2', 'v3'], 25)
'v4' : (['v0', 'v4'], 45)
result = [(['v0', 'v2'], 10), (['v0', 'v2', 'v3'], 25),
(['v0', 'v4'], 45), (['v0', 'v2', 'v3', 'v1'], 45)]
Grundlagen der Programmierung 1
=
'v0' : (['v0'], 0)
'v2' : (['v0', 'v2'], 10)
'v3' : (['v0', 'v2', 'v3'], 25)
result = [(['v0', 'v2'], 10), (['v0', 'v2', 'v3'], 25)]
Routing: Kürzeste Wege
short
short
© J.W.G-Universität Frankfurt a.M.
Folie 35
Grundlagen der Programmierung 1
© J.W.G-Universität Frankfurt a.M.
Folie 34
Zugehörige Unterlagen
Herunterladen