Verteilte Systeme - Übung 3 - Parallele und verteilte Systeme

Werbung
3.1 Anmerkungen Aufgabe 1
Verteilte Systeme
Aufgabe dient zur Vermittlung und Übung von Grundlagen der
Socket-Programmierung
Der zu implementierende Dienst zum Dateidownload sollte NICHT
produktiv eingesetzt werden, inhärente Sicherheitsprobleme:
Übung 3
Jens Müller
Grundsätzlich empfangene Daten anderer Prozesse als feindlich
ansehen ⇒ stark Prüfen
Auslesen anderer Verzeichnisse muss explizit verhindert werden
Serverprozess sollte unter speziellem Unix-Benutzer laufen
Programmierfehler könnten Einschleusen von fremden Code erlauben
Gruppe PVS (Parallele und Verteilte Systeme)
Institut für Informatik
Westfälische Wilhelms-Universität Münster
Sommersemester 2007
Das Rad wenn möglich nicht neu erfinden, sondern erprobte
Protokolle und Implementierungen einsetzen.
3-2
3.2 OSI-Referenzmodell
3.2 OSI-Referenzmodell
Prozess A
Prozess B
Anwendungsschicht
Application Layer
Anwendungsprotokoll
Anwendungsschicht
Application Layer
Darstellungsschicht
Presentation Layer
Darstellungsprotokoll
Darstellungsschicht
Presentation Layer
7 Anwendung (Application Layer)
Standardisierte Protokolle für bestimme Anwendungsaufgaben (www,
E-Mail, ...)
6 Darstellung (Presentation Layer)
Regelung der Informationskodierung
5 Sitzung (Session Layer)
Sitzungsschicht
Session Layer
Sitzungsprotokoll
Transportschicht
Transport Layer
Transportprotokoll
Netzwerkschicht
Network Layer
Sicherungsschicht
Data Link Layer
Übertragungsschicht
Physical Layer
Netzwerk−
protokoll
Sicherungs−
protokoll
Übertragungs−
protokoll
Gateway
Netzwerkschicht
Network Layer
Sicherungsschicht
Data Link Layer
Übertragungsschicht
Physical Layer
Steuerung der Kommunikationssitzung
Sitzungsschicht
Session Layer
4 Transport (Transport Layer)
Interprozesskommunikation
Transportschicht
Transport Layer
Netzwerk−
protokoll
Sicherungs−
protokoll
Übertragungs−
protokoll
3 Vermittlung (Network Layer)
Adressierung
Wegewahl (Routing)
Überlastkontrolle
Segmentierung/Reassemblierung
Netzwerkschicht
Network Layer
Sicherungsschicht
Data Link Layer
2 Sicherung (Data Link Layer)
Fehlerkontrolle
Zugriffsregelung
Übertragungsschicht
Physical Layer
1 Bitübertragung (Physical Layer)
Übertragung von Bitströmen über ein Medium
3-3
3-4
3.3 TCP/IP-Stack
Das OSI-Referenzmodell dient vielen verteilten Systemen als Vorlage, aber
gerade nicht für das Internet. Dort einfacherer TCP/IP-Stack:
4 Anwendungsschicht (Application Layer)
3 Transportschicht (Transport Layer)
Entwickler/User−Space
3.3 TCP/IP-Stack
Web−Browser, E−Mail,.
Anwendung
Andere
Anwendungen
(erfordern
spezielle
Optimierung)
Appl.−Protokolle:
FTP, HTTP, SMTP, ...
Andere
Anwendungen
Middleware:
CORBA, RMI
Programming Interface (Sockets)
2 Vermittlungsschicht (Network Layer)
TCP
Betriebssystem
1 Netzzugangsschicht (host to Network)
IGMP
ICMP
RARP
ARP
UDP
Transport
RIP
IP
OSPF
Vermittlung
Ethernet
WLAN
...
ATM
Netzzugang
3-5
TCP/IP: Ethernet als Netzzugangsschicht
B
TCP/IP: Ethernet als Netzzugangsschicht
0 1 2 3 4 56 7 8 9 0 12 3 4 5 6 7 89 0 1 2 3 45 6 7 8 901
D
.. 1 0 0 1 0 ..
3-6
Präambel (0−31)
Präambel (32−63)
geteiltes
Ethernet−Medium
Zieladresse (0−31)
Zieladresse (32−47)
MAC−Adresse
72:B0:11:2C:00:3C
A
C
Quelladresse (0−15)
111111111111111111111111
000000000000000000000000
000000000000000000000000
111111111111111111111111
000000000000000000000000
111111111111111111111111
000000000000000000000000
111111111111111111111111
000000000000000000000000
111111111111111111111111
Quelladresse (0−15)
28:A3:60:43:C2:4B
Paket−Typ
E
Daten
Daten
...
Prüfsumme
Adressierung der Hosts durch 48-bit große MAC-Adresse (Media
Access Control)
Auflösung der MAC-Adresse zu einer IP-Adresse durch ARP (Address
Resolution Protocol)
Regelung des Medienzugriffs durch CSMA/CD-Verfahren (Carrier
Sense Multiple Access with Collision Detection)
Präambel (1010101...) dient zur Sender-Empfänger-Synchronisierung
Maximal 1500 Bytes Nutzdaten pro Frame (Header + Trailer: 18
Byte groß)
Mindestgröße eines Frames ist 64 Bytes
1. Vereinfacht Kollisionsbehandlungen
2. Verhindert “späte Kollisionen”
Nutzdaten werden aufgefüllt falls kleiner als 46 Bytes
(http://www.jaganelli.de/csmacd FrameSet/index.htm)
3-7
3-8
TCP/IP: Ethernet als Netzzugangsschicht
TCP/IP: Vermittlungsschicht
Ab ca. 50 % Auslastung führt der gemeinsame Medienzugriff zur
Überlastung ⇒ Switches statt Hubs lösen das Problem durch
Punkt-zu-Punkt-Verbindungen
Die Vermittlungsschicht verbindet mehrere Netzwerke. Aufgaben:
Trotzdem: Anzahl der Hosts in einem Netzwerk ist beschränkt
⇒ Internetworking zum Verbinden verschiedener Netze
Adressierung
Wegewahl (Routing)
Alternative Implementierungen einer Netzzugangsschicht:
Kommunikationskontrolle
Wireless LAN, Zugriffssteuerung durch CSMA/CA (Carrier Sense
Multiple Access with Collision Avoidance)
Segmentierung/Reassemblierung
CAN Bus (Controller Area Network), eingesetzt im Auto oder
anderen störanfälligen Bereichen, Zugriffssteuerung durch CSMA/BA
(Carrier Sense Multiple Access with Bitwise Arbitration)
Token Ring, ATM, PPP, Frame Relay, ...
3-10
3-9
Vermittlungsschicht: Adressierung
Vermittlungsschicht: Adressierung
Jedes Netzwerkinterface wird durch eindeutige 32-bittige (IPv4)
IP-Adresse identifiziert
IP-Adresse besteht aus Netzadresse und Hostadresse
Früher: Statische Unterteilung von Netz- und Hostadresse durch feste
NetzKlassen (RFC 990)
Netzklasse
A
Binär-Format
0xxxxxxx.X.X.X
Adressbereich
0.x.x.x - 127.x.x.x
B
10xxxxxx.X.X.X
128.x.x.x - 191.x.x.x
Netzklasse
C
110xxxxx.X.X.X
192.x.x.x - 223.x.x.x
D
1110xxxx.X.X.X
224.x.x.x - 239.x.x.x
E
1111xxxx.X.X.X
240.x.x.x - 255.x.x.x
A
Länge Netzadresse
8 Bit
Länge Hostadresse
24 Bit
Anzahl Netze
126
16 777 216
B
16 Bit
16 Bit
16 384
65 534
C
24 Bit
8 Bit
2 097 151
254
Heute (bzw. 1993 eingeführt):
Classless Internet Domain Routing (CIDR) mit Netzmasken
Die Maske gibt an, welche Bits zur Netzadresse gehören
Beispiel: IP-Adresse 128.176.180.44, Maske 255.255.252.0
Schreibweise: 128.176.180.44/22
Um nur Netzwerke zu adressieren den Hostteil auf “null setzen”:
Beispiel: 192.168.0.0/16
Hosts/Netz
3-11
3-12
3.3.2 TCP/IP: Vermittlungsschicht
3.3.2 TCP/IP: Vermittlungsschicht
Beispiel: Routing-Tabelle des Host A
Destination
128.176.80.0
127.0.0.0
0.0.0.0
128.176.80.55
A
Netzadresse
128.176.80.0/24
128.176.80.1
[...]
1
Netzadresse
128.155.19.0/24
128.155.19.4
Gateway
0.0.0.0
0.0.0.0
128.176.80.1
Genmask
255.255.255.0
255.0.0.0
0.0.0.0
Iface
eth0
lo
eth0
Genmask
255.255.255.0
255.0.0.0
255.255.255.0
0.0.0.0
Iface
eth0
lo
eth1
eth1
Beispiel: Routing-Tabelle des Routers 1
128.155.19.1
Ein Router vermittelt zwischen (mindestens) zwei Netzen
Routing-Tabellen geben an (in normalen Hosts wie auch in den
Routern), über welches Interface ein Paket weitergeleitet werden soll
Destination
128.176.80.0
127.0.0.0
128.155.19.0
0.0.0.0
Gateway
0.0.0.0
0.0.0.0
0.0.0.0
128.155.19.1
3-14
3-13
Vermittlungsschicht: Wegewahl (Routing)
Vermittlungsschicht: Wegewahl (Routing)
Für den Routing-Vorgang und das Anpassen der Routing-Tabellen
(adaptives Routing, z. B. bei Teilnetzausfall) gibt eine Vielzahl von
Mechanismen, z. B.:
Time To Live eines IP-Paketes:
RIP: Routing Information Protocol (veraltet)
OSPF: Open Shortest Path First
TTL-Feld im IP-Header wird durch jeden Router dekrementiert
BGP: Border Gateway Protocol
Bei TTL=0 wird das Paket verworfen
. . . (Vgl. Tanenbaum, Computernetzwerke)
Schützt vor Routing-Zyklen durch defekte Routen
Das TTL-Feld wird auch zum Anzeigen einer Route zu einem Zielhost mit
tracepath/traceroute benutzt
Grundsätzlich: “Best effort”-Kommunikation
Keine Auslieferungsgarantie
Paketreihenfolge kann sich ändern
Pakete können auf verschiedenen Routen zum Empfänger gelangen
Keine Dienstgüteunterstützung (Quality of Service)
3-15
3-16
3.3.2 TCP/IP: Vermittlungsschicht
Vermittlungsschicht: Kommunikationskontrolle
tracepath www.heise.de:
1:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
karlovo (128.176.180.50)
C65RRZA-MATHE.UNI-MUENS.. (128.176.180.4)
UNIA0010-RZA-0039.UNI-MUENS.. (10.29.3.9)
UNIA4019-UNIA0010.UNI-MUENS.. (10.29.1.9)
C65RISPA-UNIA.UNI-MUENS.. (192.168.16.65)
..nster1-ge1-0-0.x-win.dfn.de (188.1.49.9)
..ln1-ge8-2.x-win.dfn.de (188.1.18.122)
..nkfurt1-po2-0.x-win.dfn.de (188.1.18.97)
..nkfurt2-po6-0.x-win.dfn.de (188.1.80.66)
...ffm.plusline.net (80.81.192.132)
..de.plusline.net (213.83.57.23)
www.heise.de (193.99.144.71)
Resume: pmtu 1500 hops 11 back 11
0.125ms pmtu 1500
0.468ms
0.540ms
0.565ms
1.072ms
1.425ms
8.222ms
10.084ms
10.601ms
11.000ms
11.530ms
11.924ms reached
Das Internetprotokoll beeinhaltet zwei Protokolle zur Steuerung der
Kommunikation:
ICMP Internet Control Message Protocol
Spezifiziert Steuerungsnachrichten wie
Host Unreachable,
Fragmentation Needed, DF Set, TTL Exceeded
und Echo Reply (für ping)
oder
Echo Request
Im Allgemeinen können ICMP-Nachrichten verschickt werden, müssen
aber nicht
IGMP Internet Group Management Protocol
Spezifiziert Steuerungsnachrichten für Multicast-Kommunikation
3-17
Vermittlungsschicht:
Segmentierung/Reassemblierung
Vermittlungsschicht:
Segmentierung/Reassemblierung
2 Statisch direkt beim Sender mit Path MTU Discovery (RFC 1191)
Die MTU (Maximum Transfer Unit) als maximale Nutzdatengröße eines
Frames der Netzzugangsschicht ist üblicherweise kleiner als die eines
IP-Paketes (64 kB).
Zwei Segmentierungstrategien:
1 Dynamisch durch die Router
Ermittelt geringste MTU auf dem kompletten Weg zum Empfänger:
A
B
C
D
Jeder Router kennt die MTU der angeschlossenen Netze
Beim Routing von grösserer auf kleinerer MTU (z. B. von ATM (4500)
auf Ethernet (1500)) teilt der Router zu grosse IP-Pakete auf:
IP
Header
IP
Header Datenfragment
Daten
IP
Header Datenfragment
3-18
Wähle geeignete Anfangs-MTU und zerlege IP-Pakete entsprechend
Setze DF-Bit im IP-Header (Don’t Fragment)
Versende Pakete
Bei Empfang von ICMP Frag Needed, DF Set Nachricht eines
Routers verringere MTU entsprechend und beginne bei A
Problem 1: Pakete können auf verschiedenen Routen zu demselben
Empfänger ausgeliefert werden. Trotzdem praktikabel, da Routen im
Internet meist stabil
Problem 2: ICMP-Nachrichten werden mitunter von schlecht
konfigurierten Firewalls oder NAT-Routern geblockt
Dynamische Segmentierung/Reassemblierung belastet Router,
deswegen wird üblicherweise die Segmentierung am Sender
vorgenommen.
IP
Header Datenfragment
3-19
3-20
Vermittlungsschicht: IP-Header
Vermittlungsschicht: IPv6
Substantielles Redesign von IP
Erweiterte und verbesserte Funktionalität
012 345 678 901 2345 678 9 01 2345 678 901
Version
HLänge
Diensttyp
Gesamtlänge (Bytes)
Fragmentidentifizierung
TTL
Flags
Protokoll
Neue Eigenschaften
Fragmentadresse
Adressen 128 Bit groß, hexadezimale Notation, Bsp:
Kopfprüfsumme
2a75:5db0:85a3:08d3:1079:6b2e:0363:7a04
Quelladresse
Path MTU Discovery fest vorgeschrieben, Router segmentieren nicht
Zieladresse
Optionen
Übernahme erfolgreicher Konzepte von IPv4
Adressauflösung und Gruppenmanagement Teil von ICMPv6,
ARP und IGMP entfernt
Füllbyte
Neue Headerstruktur, jetzt über optionale Header erweiterbar
Daten . . .
Dienstgüteunterstützung (Quality of Service)
Beeinhaltet IPsec als Protokoll für Verschlüsselung und
Authentifizierung auf dem Network-Layer
3-21
TCP/IP: Transportschicht
3-22
Transportschicht: UDP-Header
Aufgabe der Transportschicht:
Datentransport zwischen Prozessen
Zwei Transportprotokolle im TCP/IP-Stack:
UDP - User Datagram Protocol
Unzuverlässige Kommunikation, kein Verbergen der zugrundeliegenden
IP-Unzuverlässigkeiten
Protokollentwickler muss selbst Mechanismen zu Erreichen der
gewünschten Zuverlässigleit implementieren
012 345 678 901 2345 678 901 2345 678 901
Quell−Port
Ziel−Port
Länge
Prüfsumme
Daten . . .
TCP - Transmission Control Protocol
Expliziter Verbindungsaufbau
Erhält Absendereihenfolge von Daten
Liefert Daten garantiert aus
Welches Protokoll man einsetzt hängt von der Anwendung ab
3-23
3-24
Transportschicht: TCP-Header
Transportschicht: TCP-Zustandsautomat
CLOSED
Quell−Port
(active open)/SYN
Ziel−Port
timeout/RST
Sequenznummer
nicht verw.
1 2 3 4 5 6
Prüfsumme
LISTEN
SYN/SYN,ACK
Bestätigungsnummer
Offset
(send data)/SYN
RST/
Fenster
(close)
SYN/SYN,ACK
SYN RECVD
Dringlich
Optionen
SYN SENT
timeout
SYN,ACK/ACK
ACK/
Füllbytes
ESTABLISHED
(close)/FIN
Daten . . .
1 URG
2 ACK
3 PSH
EINGABE/AUSGABE
(Anwendungsbefehlle)
(passive open)/
0 1 2 3 4 56 7 8 9 0 12 3 4 5 6 7 89 0 1 2 3 45 6 7 8 901
FIN/ACK
CLOSE WAIT
(close)/FIN
4 RST
5 SYN
6 FIN
(close)/FIN
FIN WAIT−1
FIN/ACK
CLOSING
LAST ACK
ACK/
FIN WAIT−2
FIN,ACK/ACK
FIN/ACK
ACK/
ACK/
TIME WAIT
timeout
3-25
Transportschicht: TCP-Verbindungsaufbau
3-26
3.4 Linux/BSDs: Netzwerkinformationen
3-way handshake“:
”
Anzeigen von Informationen zu Netzwerk Schnittstellen (nicht auf
Ethernet begrenzt): ifconfig
(active open)
SYN−SENT
CLOSED
ESTABLISHED
Anzeigen von Routing-Tabellen: netstat -nr
SEQ=100
CTL=SYN
CLOSED
LISTEN
SEQ=300
ACK=101
CTL=SYN,ACK
SYN−RECVD
SEQ=101
ACK=301
CTL=ACK
Route eines Pakets verfolgen: traceroute oder tracepath
DATA
Anzeigen des ARP-Caches: arp -a
Well-known ports: /etc/services
ESTABLISHED
(passive open)
3-27
3-28
Herunterladen