> 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