Verteilte Systeme - Universität Münster

> Verteilte Systeme
Übung 3 – Netzwerkkommunikation im TCP/IP Stack
Philipp Kegel
Sommersemester 2012
Gruppe PVS (Parallele und Verteilte Systeme)
Institut für Informatik
Westfälische Wilhelms-Universität Münster
OSI-Referenzmodell
Prozess B
Prozess A
Anwendungsschicht
Application Layer
Anwendungsprotokoll
Anwendungsschicht
Application Layer
Darstellungsschicht
Presentation Layer
Darstellungsprotokoll
Darstellungsschicht
Presentation Layer
Sitzungsschicht
Session Layer
Sitzungsprotokoll
Sitzungsschicht
Session Layer
Transportschicht
Transport Layer
Transportprotokoll
Transportschicht
Transport Layer
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
Übung Verteilte Systeme
SS 2012
Netzwerk−
protokoll
Sicherungs−
protokoll
Übertragungs−
protokoll
Philipp Kegel
Netzwerkschicht
Network Layer
Sicherungsschicht
Data Link Layer
Übertragungsschicht
Physical Layer
2
OSI-Referenzmodell
7 Anwendung (Application Layer)
ˆ Standardisierte Protokolle für bestimme Anwendungsaufgaben (www,
E-Mail, ...)
6 Darstellung (Presentation Layer)
ˆ Regelung der Informationskodierung
5 Sitzung (Session Layer)
ˆ Steuerung der Kommunikationssitzung
4 Transport (Transport Layer)
ˆ Interprozesskommunikation
3 Vermittlung (Network Layer)
ˆ Adressierung, Wegewahl (Routing), Überlastkontrolle,
Segmentierung/Reassemblierung
2 Sicherung (Data Link Layer)
ˆ Fehlerkontrolle, Zugriffsregelung
1 Bitübertragung (Physical Layer)
ˆ Übertragung von Bitströmen über ein Medium
Übung Verteilte Systeme
SS 2012
Philipp Kegel
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)
2 Vermittlungsschicht (Network Layer)
1 Netzzugangsschicht (Host to Network)
ˆ Darstellungsschicht: In der Anwendung, Umwandlung von Host- in
Network-Byteorder
Übung Verteilte Systeme
SS 2012
Philipp Kegel
4
Entwickler/User−Space
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)
Betriebssystem
TCP
IGMP
ICMP
RARP
ARP
UDP
Transport
RIP
IP
OSPF
Vermittlung
Ethernet
WLAN
Übung Verteilte Systeme
...
SS 2012
ATM
Philipp Kegel
Netzzugang
5
Protokolldaten
ˆ Protokolldaten (Kopf, header )jeder Schicht werden von der
darunterliegenden Schicht als Daten betrachtet
ˆ Beim Empfangen werden Protokolldaten niedriger Schichten sukzessive
entfernt
Empfangen
Senden
Nutzdaten
ETHERNET
HTTP
Nutzdaten
TCP
HTTP
Nutzdaten
IP
TCP
HTTP
Nutzdaten
IP
TCP
HTTP
Nutzdaten
Übung Verteilte Systeme
SS 2012
Philipp Kegel
6
TCP/IP: Ethernet als
Netzzugangsschicht
B
D
.. 1 0 0 1 0 ..
MAC−Adresse
72:B0:11:2C:00:3C
A
geteiltes
Ethernet−Medium
28:A3:60:43:C2:4B
C
E
ˆ 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)
(http://www.erg.abdn.ac.uk/users/gorry/course/lan-pages/csma-cd.html )
Übung Verteilte Systeme
SS 2012
Philipp Kegel
7
Aufbau Ethernet Paket
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 90 1
Präambel (0−31)
Präambel (32−63)
Zieladresse (0−31)
Zieladresse (32−47)
Quelladresse (0−15)
111111111111111111111111
000000000000000000000000
000000000000000000000000
111111111111111111111111
000000000000000000000000
111111111111111111111111
000000000000000000000000
111111111111111111111111
Quelladresse (0−15)
Paket−Typ
Daten
Daten
...
Prüfsumme
ˆ Präambel (1010101. . . ) dient zur Sender-Empfänger-Synchronisierung
ˆ Maximal 1500 Bytes Nutzdaten pro Frame (Header + Trailer: 18 Byte)
ˆ Mindestgröße eines Frames ist 64 Bytes
1. Vereinfacht Kollisionsbehandlungen
2. Verhindert “späte Kollisionen”
ˆ Nutzdaten werden aufgefüllt falls kleiner als 46 Bytes
Übung Verteilte Systeme
SS 2012
Philipp Kegel
8
TCP/IP: Ethernet als
Netzzugangsschicht
ˆ Ab ca. 50 % Auslastung führt der gemeinsame Medienzugriff zur
Überlastung ⇒ Switches statt Hubs lösen das Problem durch
Punkt-zu-Punkt-Verbindungen
ˆ Trotzdem: Anzahl der Hosts in einem Netzwerk ist beschränkt
⇒ Internetworking zum Verbinden verschiedener Netze
Alternative Implementierungen einer Netzzugangsschicht:
ˆ Wireless LAN, Zugriffssteuerung durch CSMA/CA (Carrier Sense
Multiple Access with Collision Avoidance)
ˆ 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)
ˆ InfiniBand (z.B. im ZIV-HPC), Token Ring, ATM, ...
Übung Verteilte Systeme
SS 2012
Philipp Kegel
9
TCP/IP: Vermittlungsschicht
Die Vermittlungsschicht verbindet mehrere Netzwerke. Aufgaben:
ˆ Adressierung
ˆ Wegewahl (Routing)
ˆ Kommunikationskontrolle
ˆ Segmentierung/Reassemblierung
Übung Verteilte Systeme
SS 2012
Philipp Kegel
10
Vermittlungsschicht:
Internet Protocol (IP)
ˆ Zahl der Rechner an einem Ethernet Netzwerk ist begrenzt
(Kollisionen)
ˆ Internet Protokoll dient zum Zusammenschluss mehrerer Netzwerke
(nicht nur Ethernet)
ˆ Paketorientiertes Protokoll:
ˆ Längere Nachrichten werden in Pakete zerlegt, diese einzeln verschickt
ˆ Pakete können weiter unterteilt werden, falls sie zu groß für ein
bestimmtes Netzwerk sind (Fragmentierung)
ˆ Nicht zuverlässige Übertragung:
ˆ Pakete können verlorengehen
ˆ Pakete können mehrfach ankommen
ˆ Pakete können sich gegenseitig überholen
ˆ Ursprünglich IPv4 (32 Bit Adressen),
wird ersetzt durch IPv6 (128 Bit Adressen)
Übung Verteilte Systeme
SS 2012
Philipp Kegel
11
IP-Adresse: IPv4 vs. IPv6
ˆ IPv4
ˆ Jedem Netzwerk Interface wird eine netzweit eindeutige
IPv4 Adresse (32 Bit) zugeordnet
ˆ Unterteilt in Netzadresse und Knotenadresse
ˆ Moderne Variante: Netzmasken
Geben an welche Bits zur Netzadresse gehören
ˆ CIDR: Classless Internet Domain Routing
ˆ Beispiel:
128.176.180.44 Maske: 255.255.252.0
ˆ Andere Schreibweise: 128.176.180.46/22
ˆ Nur Netzwerk (Hostteil auf “null setzen”): 192.168.0.0/16
ˆ IPv6
ˆ Jedem Netzwerk Interface können mehrere IPv6 Adressen (128 Bit)
zugeordnet sein
ˆ Auch unterteilt in Netz- und Knotenadresse nach dem CIDR Prinzip
ˆ Hexadezimale Darstellung:
ˆ 2001:660:3003::/48
ˆ 2001:660:3003:2:a00:20ff:fe18:964c/64
Übung Verteilte Systeme
SS 2012
Philipp Kegel
12
Vermittlungsschicht: Wegewahl
(Routing)
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
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
Übung Verteilte Systeme
SS 2012
Philipp Kegel
13
Vermittlungsschicht: Wegewahl
(Routing)
ˆ Beispiel: Routing-Tabelle des Host A
Destination
128.176.80.0
127.0.0.0
0.0.0.0
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
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
Übung Verteilte Systeme
SS 2012
Philipp Kegel
14
Vermittlungsschicht: Wegewahl
(Routing)
Für den Routing-Vorgang und das Anpassen der Routing-Tabellen
(adaptives Routing, z. B. bei Teilnetzausfall) gibt es eine Vielzahl von
Mechanismen, z. B.:
ˆ RIP: Routing Information Protocol (veraltet)
ˆ OSPF: Open Shortest Path First
ˆ BGP: Border Gateway Protocol
ˆ . . . (Vgl. Tanenbaum, Computernetzwerke)
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)
Übung Verteilte Systeme
SS 2012
Philipp Kegel
15
Vermittlungsschicht: Wegewahl
(Routing)
Time To Live eines IP-Paketes:
ˆ TTL-Feld im IP-Header wird durch jeden Router dekrementiert
ˆ Bei TTL=0 wird das Paket verworfen
ˆ Schützt vor Routing-Zyklen durch defekte Routen
Das TTL-Feld wird auch zum Anzeigen einer Route zu einem Zielhost mit
tracepath/traceroute benutzt
Übung Verteilte Systeme
SS 2012
Philipp Kegel
16
Vermittlungsschicht: Wegewahl
(Routing)
tracepath www.heise.de:
1:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
SCHAF01 ( 1 2 8 . 1 7 6 . 1 8 0 . 2 2 7 )
0.097 ms
RZB -0190 - V222 . UNI - MUENSTER . DE ( 1 2 8 . 1 7 6 . 1 8 0 . 2 ) 0.644 ms
UNIA0010 - RZB -0190. UNI - MUENSTER . DE ( 1 0 . 2 9 . 1 9 . 9 ) 0.696 ms
ACSA0013 - UNIA0010 . UNI - MUENSTER . DE (10.29.1. 9 )
0.851 ms
ACSA0011 - ACSA0013 . UNI - MUENSTER . DE ( 1 0 . 3 0 . 0 . 7 3 ) 1.015 ms
ACSA0012 - ACSA0011 . UNI - MUENSTER . DE ( 1 0 . 3 0 . 5 . 5 7 ) 2.160 ms
UNIA0100 - ACSA0012 . UNI - MUENSTER . DE ( 1 0 . 2 9 . 1 . 1 7 ) 2.597 ms
UNIA4019 - UNIA0100 . UNI - MUENSTER . DE ( 1 0 . 2 9 . 1 0 . 9 ) 2.765 ms
C65RISPA - UNIA . UNI - MUENSTER . DE ( 1 9 2 . 1 6 8 . 1 6 . 6 5 ) 1.466 ms
xr - mue2 - te1 -3. x - win . dfn . de ( 1 8 8 . 1 . 4 9 . 9 )
1.347 ms
xr - dui1 - te2 -1. x - win . dfn . de ( 1 8 8 . 1 . 1 4 4 . 1 2 1 )
3.654 ms
xr - aac1 - te1 -1. x - win . dfn . de ( 1 8 8 . 1 . 1 4 5 . 2 6 )
6.309 ms
zr - fra1 - te0 -6 -0 -0. x - win . dfn . de ( 1 8 8 . 1 . 1 4 6 . 1 8 ) 10.151 ms
te3 -1. c302 . f . de . plusline . net ( 8 0 . 8 1 . 1 9 3 . 1 3 2 )
11.228 ms
heise2 . f . de . plusline . net ( 8 2 . 9 8 . 9 8 . 1 1 0 )
10.979 ms
heise2 . f . de . plusline . net ( 8 2 . 9 8 . 9 8 . 1 1 0 ) asymm 14 11.108 ms
Resume : pmtu 1500
Übung Verteilte Systeme
SS 2012
Philipp Kegel
17
Routing Beispiel: X-WiN
Quelle: DFN, http://www.dfn.de/xwin/
Übung Verteilte Systeme
SS 2012
Philipp Kegel
18
Vermittlungsschicht:
Kommunikationskontrolle
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 oder Echo Request und
Echo Reply (für ping)
ˆ Im Allgemeinen können ICMP-Nachrichten verschickt werden, müssen
aber nicht
ˆ IGMP Internet Group Management Protocol
ˆ Spezifiziert Steuerungsnachrichten für Multicast-Kommunikation
Übung Verteilte Systeme
SS 2012
Philipp Kegel
19
Vermittlungsschicht:
Segmentierung/Reassemblierung
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
ˆ 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
Übung Verteilte Systeme
SS 2012
IP
Header Datenfragment
Philipp Kegel
20
Vermittlungsschicht: Internet
Protocol (IP)
2 Statisch direkt beim Sender mit Path MTU Discovery (RFC 1191)
ˆ Ermittelt geringste MTU auf dem kompletten Weg zum Empfänger:
A
B
C
D
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.
Übung Verteilte Systeme
SS 2012
Philipp Kegel
21
IP-Pakete: IPv4
ˆ Hier: Adressen = IP-Adressen
012 345 678 9012 345 678 9 01 234 5678 901
Version
HLänge
Diensttyp
Fragmentidentifizierung
TTL
Gesamtlänge (Bytes)
Flags
Protokoll
Fragmentadresse
Kopfprüfsumme
Quelladresse
Zieladresse
Optionen
Füllbyte
Daten . . .
Übung Verteilte Systeme
SS 2012
Philipp Kegel
22
Linux/BSDs:
Netzwerkinformationen
ˆ Anzeigen von Information und steuern des TCP/IP Stacks:
Iproute2,ip(8)
ˆ Anzeigen von Adressen: ip address show
ˆ Anzeigen von Routing-Tabellen: ip route show
ˆ Anzeigen des ARP-Caches: ip neighbour show
ˆ Weitere tools (iputils)
ˆ Route eines Pakets verfolgen: traceroute oder tracepath
ˆ Well-known ports: /etc/services
ˆ Weiterführende Online Referenz:
http://www.tcpipguide.com/free/index.htm
ˆ Literatur: Tanenbaum, Computernetzwerke
Übung Verteilte Systeme
SS 2012
Philipp Kegel
23
TCP/IP: Transportschicht
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
ˆ 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
Übung Verteilte Systeme
SS 2012
Philipp Kegel
24
Transportschicht: UDP-Header
012 345 678 9012 345 678 901 234 5678 901
Quell−Port
Ziel−Port
Länge
Prüfsumme
Daten . . .
Übung Verteilte Systeme
SS 2012
Philipp Kegel
25
Transportschicht: TCP-Header
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 90 1
Quell−Port
Ziel−Port
Sequenznummer
Bestätigungsnummer
Offset
nicht verw.
Fenster
1 2 3 4 5 6
Prüfsumme
Dringlich
Optionen
Füllbytes
Daten . . .
1 URG
2 ACK
3 PSH
4 RST
5 SYN
6 FIN
Übung Verteilte Systeme
SS 2012
Philipp Kegel
26
Transportschicht:
TCP-Zustandsautomat
CLOSED
EINGABE/AUSGABE
(Anwendungsbefehlle)
(passive open)/
(active open)/SYN
timeout/RST
LISTEN
SYN/SYN,ACK
(send data)/SYN
RST/
(close)
SYN/SYN,ACK
SYN RECVD
timeout
SYN,ACK/ACK
ACK/
ESTABLISHED
(close)/FIN
SYN SENT
FIN/ACK
CLOSE WAIT
(close)/FIN
(close)/FIN
FIN WAIT−1
FIN/ACK
CLOSING
LAST ACK
ACK/
FIN WAIT−2
FIN,ACK/ACK
FIN/ACK
ACK/
TIME WAIT
Übung Verteilte Systeme
timeout
SS 2012
Philipp Kegel
ACK/
27
Transportschicht:
TCP-Verbindungsaufbau
3-way handshake“:
”
(active open)
CLOSED
SYN−SENT
SEQ=100
CTL=SYN
CLOSED
LISTEN
(passive open)
ESTABLISHED
SEQ=300
ACK=101
CTL=SYN,ACK
SEQ=101
ACK=301
CTL=ACK
SYN−RECVD
Übung Verteilte Systeme
SS 2012
DATA
ESTABLISHED
Philipp Kegel
28