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