Kap. 7 Verteilte Systeme Version vom 14.06.2007 Kap. 7 - Inhalt Grundlagen Schichtenmodelle Netzkommunikation Dateisysteme im Netz Sicherheit im Netz Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 2 Grundlagen I - Netze Arbeitsstation Arbeitsstation File Server Ethernet Drucker Computer Netze: Verknüpfung von einzelnen Rechnern zu Netzwerken Datenzugriff Gemeinsame Nutzung von Ressourcen Router Internet Zusammenschluß von Netzen Protokolle Vereinbarungen über die Kommunikation zwischen Rechnern Internet Mainframe Router Mainframe Router File Server File Server Arbeitsstationen Arbeitsstationen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste Auf- und Abbau der Kommunikationsverbindung Datentransport Format Sicherstellung (Prüfsummen, Verschlüsselung, Fehlererkennung) © H. Weber, FH Wiesbaden Folie 3 Grundlagen II - Zahlen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 4 Grundlagen III - Netzwerk-Nutzen Können wir uns überhaupt noch vorstellen, ohne Netzwerk zu arbeiten? electronic mail Kommunikation: Terminabsprachen, Projektkoordination, Mitteilungen, ... file sharing keine multiplen Kopien: Dateikonsistenz, Speichererparnis device sharing bessere Druckerauslastung, lohnende Anschaffung von Spezialhardware (Farblaserdrucker, high-speed-scanner,...) processor sharing Zeitersparnis durch bessere Prozessorauslastung bei Lastverteilung und /oder Kostenersparnis durch geringere Investitionen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 5 Grundlagen IV - Verteilte Betriebssysteme Verteiltes System: Aufteilung von Funktionen in einem Rechnernetz; BS auf jedem Rechner. Verteiltes Betriebssystem: Jede BS-Funktion ex. nur einmal im Netz client file server print server Benutzerprozeß DateisystemManager PrinterManager Mikrokern Betriebssysteme und Grundlagen verteilter Systeme: Mikrokern Netzwerkdienste Mikrokern © H. Weber, FH Wiesbaden Folie 6 Grundlagen V - Verteilte Betriebssysteme Vorteile Flexibilität inkrementelle Erweiterbarkeit um neue Dienste Transparenz durch ortsunabhängige Dienste Leistungssteigerung bei Lastverteilung Fehlertoleranz bei multiplen, gleichen Diensten Nachteile Leistungseinbuße durch Kommunikationsverzögerung Keine Fehlertoleranz wenn Funktion nur einmal vorhanden Fazit Alle BS sind Mischsysteme aus netzbasierten und lokalen BS-Funktionen; es ex. kein „reines“ System Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 7 Schichtenmodelle I - Definitionen Schichtenmodelle zerlegen Aufgaben in verschiedene Abstraktionsebenen Jede Ebene und die Weiterleitung/Schnittstelle von einer Ebene in die nächste Ebene ist definiert Ziel des OSI Schichtenmodells: Referenzmodell für die „Verbindung offener Systeme“ Interoperabilität zwischen Herstellern (Hardware und Software) Unterteilung des Kommunikationsprozesses in eine Reihe von separaten Schichten, wobei sich die der jeweiligen Schicht zugewiesenen Funktionen auf die Funktionen der benachbarten Schicht stützen Interner Aufbau der Schicht ist offen (Entwicklern überlasses Detail), Funktion der Schicht und die Schnittstellen zwischen den Schichten sind definiert Unterteilung in Funktionsgruppen: Hardware Schichten (inkl. Treiber) Logische Schichten (Bildung von Netzen und virtuellen Verbindungen über Netzwerkgrenzen hinaus) Anwendungsschichten (bedient sich des Netzes, ohne daß die verwendete Hardware von Bedeutung ist) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 8 Schichtenmodelle II - Analogie Versand einer Porzellanfigur von Hamburg nach München: Bruchsichere Umhüllung der Figur mit Zeitungspapier (Encapsulation) Verpackung der Figur in einem Postpaket, Auffüllen mit Holzwolle (zweite Encapsulation, Padding) Adressierung des Pakets (erste Protokolldaten für Transportschicht) Glasbruchaufkleber und Transportversicherung mit Rückschein (weitere Protokolldaten für Transportschicht – nicht fragmentieren, Empfang quittierren lassen und zurücksenden) Übergabe an Poststelle in Hamburg – Vermerk der Post, an welches Paketlager das Paket weitergeleitet wird Vorbereitung zum Bahntransport – Einsortierung in entsprechende Transportbox, Beladen des Waggons Bahntransport nach München Auslieferung des Pakets – Entladen des Waggons und der Transportbox, Weiterleitung an Auslieferungspostamt Übergabe des Pakets, Kontrolle der Adressdaten, Quittierung des Erhalts Auspacken aus Postpaket und Zeitungspapier Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 9 Schichtenmodelle III - Aufbau Kommunikation Arbeitsstation Arbeitsstation Application Terminal Emulation Anwendung Presentation Telnet Protokoll Darstellung Session Telnet Daten Sitzung Transport Network Data Link LLC-Header 802.x-Header LLC-Header TCP-Header Telnet Daten Transport IP-Header TCP-Header Telnet Daten Netzwerk IP-Header TCP-Header Telnet Daten IP-Header TCP-Header Telnet Daten 802.x Trailer Physical Datenübertragung Sicherung Physikalische Schicht Beispiel: Telnetsession Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 10 Schichtenmodelle IV - Erklärung Physikalische Schicht (Physical Layer) Übergabe und Empfang des Bitstroms an physikalisches Medium (Draht, LWL,...) Definition der elektrischen Signale der Hardware Ethernet, Standleitungen,... (802.x) Spezifikation der Verbindungsleitungen Datenübertragungs-, Sicherungsschicht (Data Link Layer) Verantwortlich für fehlerfreie Kommunikation zwischen zwei Netzknoten Z.B. MAC Adressen bei Ethernet oder Token Ring Treiber für Betriebssystem MTU (Maximum Transfer Unit) Netzwerkschicht (Network Layer) Verbindung der Netzknoten zwischen den Rechnern zu einem Netzwerk (über die Netzwerkgrenzen hinweg) Routing und Flußkontrolle Logische Adressen für die einzelnen Netzwerkschnittstellen (NIC) Zerlegung des Datenstroms in Datagramme passender Größe (Fragmentierung, entsprechend dem verwendeten Protokoll, bsp. MTU – Ethernet 1518 Byte) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 11 Schichtenmodelle V - Erklärung Transportschicht (Transport Layer) Bereitstellung von Transportprotokollen für Anwendungsentwickler Verbindungsorientierte und verbindungslose Portokolle Sitzungsschicht (Session Layer) Definition der Datenstrukturen Ende-zu-Ende Kommunikationsprozeß (aktiver Prozeß des einen Hosts kommuniziert mit aktivem Prozeß des anderen kommunizierenden Hosts) In TCP/IP beschreiben Ports und Sockets den Weg, über den Applikationen kommunizieren Authentisierung und Verrechnung Darstellungsschicht (Presentation Layer) Definition des Formats der eigentlichen Daten Bspw. Kompression, Zeichencodeumsetzung (ASCII, EBCDIC, usw.), Verschlüsselung (Veschlüsselung und Entschlüsselung der Übertragung; z. B. DES) Anwendungsschicht (Application Layer) Definition des eigentlichen anwendungsspezifischen Protokolls Bsp: SMTP, FTP, TFTP, HTTP(S), Telnet, DNS, SNMP, ... Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 12 Schichtenmodelle VI - ARPA Anfang der 70er Jahre entwickelte die Advanced Research Projects Agency ein Schichtenmodell zur Beschreibung der Kommunikation von Rechnersystemen bestehend aus vier Schichten. Dieses Modell ist die Grundlage für die TCP/IP Protokollimplementierung. Application Session Transport Process/ Application Network Host-to-Host Data Link Internet Physical Network Interface Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste ARPA Schichtenmodell OSI Schichtenmodell Presentation Schichten 5 bis 7 werden in der Prozeß- und AnwendungsSchicht zusammengefaßt Schicht 4 (TCP und UDP) entspricht der Host-to-Host Schicht Schicht 3 (IP, ICMP) entspricht der Internet-Schicht Schicht 1 und 2 werden als Netzwerkschnittstellen-Schicht (Network Access Layer, Local Network Layer) bezeichnet © H. Weber, FH Wiesbaden Folie 13 Schichtenmodelle VII - ARPA Netzwerkschnittstellen-Schicht: Verbindet den Host mit der Netzwerk Hardware (physikalische Verbindung zum Netz und Zugriff auf das Netzwerk Æ Carrier Sense Multiple Access mit Collision Detection, CSMA/CD oder Token Passing Verfahren) und verpackt die Daten in einen Frame (Rahmen) Frameformat ist durch die angeschlossene Hardware definiert (z.B. Ethernet – RFC 894, IEEE 802 LANs – RFC 1042, Fiber Distributed Data Interface, FDDI – RFC 1103, Serial Line Internet Protocol, SLIP – RFC 1055, Frame Relay – RFC 1490, Asynchronous Transfer Mode, ATM – RFC 1438) Frame enthält Informationen über Hardwareadresse des Hosts und Checksummen zur Überprüfung der Datenintegrität Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 14 Schichtenmodelle VIII – Internet-Schicht Internet-Schicht: Übertragung von Paketen von einem Host zu einem anderen Host Pakete enthalten die Adressinformation für die Datenübertragung durch das Netzwerk Realisierung durch das Internet Protokoll (RFC 791); definiert werden: Quell- und Zieladresse Time to Live (TTL) Flags (z.B. DF – don‘t fragment) Fragment Offset Versionsnummer Protokollnumer Zerlegung und Wiederzusammenführung von Paketen Keine Sicherstellung des Empfangs Pakete, die einen Fehler verursachen, werden ignoriert und verworfen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 15 Schichtenmodelle IX – Internet-Schicht 8 Version IHL 16 Type of Service 31 Bitstelle Total Length Flags Identifier Time to Live 24 Protocol Fragment Offset Header Checksum Source Address IP Header 0 Destination Address IP Data Options & Padding Data ... Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste ... © H. Weber, FH Wiesbaden Folie 16 Schichtenmodelle X – Internet-Schicht IP Header: Versionsnummer: 4 Bit – meist Version 4 (IPv4), wird zukünftig durch Version 6 (IPv6) abgelöst Länge des Headers: 4 Bit – Festlegung der durch die verschiedenen Optionen variablen Länge des Headers (in 4 Byte-Einheiten) Type of Service: 8 Bit – definiert die Priorität eines IP Pakets Gesamtlänge: 2 Byte – von IP Header und Daten (2 Byte definieren maximale Paketgröße auf 65536 Byte = 64 kByte) Identification: 16 Bit – für Zusammensetzen fragmentierter IP Pakete genutzt Flags: 3 Bit – Fragmentierungsinformation; erstes Bit ohne Bedeutung; zweites Bit (DF) 0=fragmentierbar, 1=nicht fragmentierbar; drittes Bit (MF) 0=letztes Fragment, 1=mehr Fragmente folgen Fragment Offset: 13 Bit – zeigt an, an welcher Stelle ein fragmentiertes IP Paket ursprünglich stand Time to Live: 8 Bit – zeigt die maximale Anzahl von Routerhops (oder Sekunden) an; jeder Router, den das IP Paket durchläuft, dekrementiert diesen Wert; der Router, der den Wert auf Null setzt, verwirft das Paket Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 17 Schichtenmodelle XI – Internet-Schicht IP Header: Protocol ID: 8 Bit – identifiziert, welches Protokoll der höheren Schichten dem IP Header folgt (Bsp.: 1dec ICMP, 6dec TCP, 17dec UDP, 89dec OSPF) Prüfsumme: 16 Bit – Prüfsumme des IP Headers Ausgangs- (Source) und Ziel- (Destination) adresse: je 4 Byte Erstes Byte Netzanteil Klasse A Klasse B Klasse C Klasse D Klasse E 0 – 127 128 – 191 192 – 223 224 – 239 240 – 255 Hostanteil Anzahl Anzahl Netze Hosts 7 Bit 24 Bit 128 16.777.216 14 Bit 16 Bit 16.384 65.536 21 Bit 8 Bit 2.097.152 256 IP-Multicast Adressen gemäß RFC 1112 Reserviert Optionen und Padding: 32 Bit – Debug-, Meß- und Sicherheitsfunktionen (z.B. Zeitpunkt, zu dem sich das Datenpaket in einem bestimmten Router befunden hat) und Padding zum Auffüllen der 32 Bit mit Nullen Daten: enthält die eigentlichen Nutzdaten Folie 18 Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Schichtenmodelle XII – Internet-Schicht ICMP (Internet Control Message Protocol) Sind in IP Paketen verpackt (Protokollnummer 1) Signalisieren das Auftreten von Fehlern in der Übertragung von IP Paketen Große Bedeutung bei der Fehlerbeseitigung (-suche); RFC 792 sowie RFCs 896, 1016, 950 8 Type 16 Code 24 Checksum Typabhängige Struktur ... Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden 31 Bitstelle ICMP Meldung 0 Folie 19 Schichtenmodelle XIII – Internet-Schicht ICMP Header Typ: 8 Bit – bezeichnet die Art der ICMP Meldung Typ 0 / 8 Typ 3 Typ 4 Request Typ 5 Typ 11 Typ 12 Error Echo Reply / Echo Request Destination unreachable Source Quench Typ 13 Typ 14 Typ 17 Timestamp Timestamp Reply Address Mask Redirect Time Exceeded Parameter Problem Typ 18 Typ 30 Typ 31 Address Mask Reply Traceroute Datagram Conversion Code: 8 Bit – bezeichnet jeweiligen Typ genauer (Bsp. Für Typ 3 Ziel nicht erreichbar: 0 Netz nicht erreichbar, 1 Host nicht erreichbar, 2 Protokoll nicht erreichbar, 3 Port nicht erreichbar, 4 Fragmentierung notwendig, aber DF Flag gesetzt, 5 falsche Source Route, ...) Checksum: 16 Bit – Wert des Prüfungsalgorithmus über gesamte ICMP Meldung Typspezifische Struktur: enthält nähere Informationen zur ICMP Meldung Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 20 Schichtenmodelle XIV – Internet-Schicht ARP/RARP Adreßauflösung Verbindung der logischen Netz(IP)adresse mit der von LAN bzw. WAN Infrastruktur abhängigen Hardware Adresse Address Resolution Protocol, ARP, RFC 826: Übersetzung der IP Adresse in die entsprechende Hardware Addresse Reverse Address Resolution Protocol, RARP, RFC 903: Übersetzung der Hardware Adresse in die zugehörige IP Adresse 8 16 Hardwaretyp Hardwareadressenlänge Protokolladressenlänge 24 31 Bitstelle Protokolltyp Operation Hardwareadresse der Sendestation Hardwareadresse der Sendestation Protokolladresse der Sendestation Protokolladresse der Sendestation Hardwareadresse der Zielstation Hardwareadresse der Zielstation Protokolladresse der Zielstation Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden ARP/RARP Meldung 0 Folie 21 Schichtenmodelle XV – Internet-Schicht ARP/RARP Message Hardwaretyp: Angabe der verwendeten Netzhardware (Bsp. 1 Ethernet, 6 IEEE 802 Netzwerke, 7 ARCNET,11 LocalTalk, 15 Frame Relay, 16 ATM) Protokolltyp: Angabe des Netzprotokolls (Bsp. 0800Hex IP Protokoll) Hardwareadressenlänge: 8 Bit – Länge der Hardwareadresse (Bsp. MAC Adresse bei Ethernet oder Token Ring 48 Bit) Protokolladressenlänge: 8 Bit – Länge der Protokolladresse (Bsp. IPv4 32 Bit) Operation: 16 Bit – definiert 1=ARP Reqest, 2=ARP Response (bei InARP auch 8 und 9 möglich – wird bei IP über Frame Relay benutzt, um einer IP Adresse einen DLCI, Data Link Connection Identifier zuzuordnen) Adressen: 4 Adreßfelder für Hardware- und Protokolladressen der Absender und Zielstationen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 22 Schichtenmodelle XVI – Host-zu-Host-Schicht Host-zu-Host-Schicht: Zuordnung der IP Datagramme zu den jeweiligen Prozessen mittels UDP bzw. TCP Ports Routing auf den Zielsystemen User Datagram Protocol, UDP: Sicherung (Quittierung) für die einzelnen Datenpakete wird den Applikationen überlassen Reihenfolge der IP Pakete muß duch die Applikation kontrolliert und ggf. berichtigt werden Schnelles, verbindungsloses Protokoll Verwendung: DNS, NFS, TFTP, RIP, SNMP Transport Control Protocol, TCP: Verbindungsaufbau Ende-zu-Ende (von Port zu Port), ohne Festlegung des Wegs in der Internet-Schicht Reihenfolge der IP Pakete wird kontrolliert und ggf. in die richtige Reihenfolge sortiert Gesichertes, verbindungsorientiertes Protokoll Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 23 Schichtenmodelle XVII – Host-zu-Host-Schicht UDP Header: Minimaler Protokolloverhead Ausgangs- (optional) und Zielport Länge des gesamten UDP Datenpakets Checksumme über das gesamte Datenpaket (optional; abhängig davon, ob höheres Protokoll eine Checksumme verlangt) wird unter Berücksichtigung des Pseudoheaders, bestehend aus Ausgangs- und Zieladresse sowie Protokollfeld des IP Headers, berechnet 8 16 24 Source Port Destination Port Length Checksum Data ... Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden 31 Bitstelle UDP Message 0 Folie 24 Schichtenmodelle XVIII – Host-Host-Schicht TCP Header: Adressierung der Applikation über Portnummer Datenpakete werden nummeriert (Sequenznumber) und bestätigt (Acknowledgement Number) Tree Way Handshake zum Verbindungsaufbau Flußkontrolle ist vorgesehen 8 16 24 Source Port 31 Bitstelle Destination Port Sequence Number Acknowledgement Number Offset Reserviert Code Window Urgent Pointer Checksum Padding Options TCP Message 0 Data ... Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 25 Schichtenmodelle XIX – Prozeß- und Anwendungsschicht Nutzung der TCP bzw. UDP Daten in Applikationen Application Presentation FTP HTTP SNMP TFTP telnet DNS SMTP TCP ICMP UDP OSPF Host-to-Host RIP IP Network Internet ARP Data Link Sicherung Physical Physikalische Verbindung Betriebssysteme und Grundlagen verteilter Systeme: Process/ Application BootP Session Transport DHCP Netzwerkdienste © H. Weber, FH Wiesbaden RARP Network Interface Folie 26 Schichtenmodelle XX ScProtokollfamilie OSI Schichtenmodell Application Presentation Session Transport Network Protokoll-Implementierung Hypertext File Electronic Terminal Domain File Transfer Transfer Mail Emulation Names Transfer Hypertext Transfer Protocol (HTTP) File Transfer Protocol (FTP) Simple Mail Transfer Protocol (SMTP) Telnet Protocol RFC 2068 RFC 959 RFC 821 RFC 854 Domain Name System (DNS) RFC 1034, 1035 Transmission Control Protocol (TCP) RFC 793 Address Resolution ARP RFC 826 RARP RFC 903 Data Link Physical Betriebssysteme und Grundlagen verteilter Systeme: ARPA Schichtenmodell Client/ Server Trivial Sun Micro- Simple Network File systems Transfer Network FileManagement Protocol Protocol System (SNMP) (TFTP) (NFS) RFC 1157, RFCs 1014, 1901-10, RFC 783 1057, 1094 2271-75 User Datagram Protocol (UDP) RFC 768 Internet Protocol (IP) Internet Control Message Protocol (ICMP) RFC 792 RFC 791 Network Interface Cards: Ethernet, Token Ring, ARCNET, MAN, WAN RFC 894, RFC 1042, RFC 1201 und andere Übertragungsmedien Twisted Pair, Coax, LWL, Wireless Media u.a. Netzwerkdienste Network Management © H. Weber, FH Wiesbaden Process/ Application Host-to-Host Internet Network Interface Folie 27 Schichtenmodelle XXI - Kommunikationsschichten: Unix Stream-System für Protokollschichten Schicht = Treiber, leicht austauschbar 7 Anwendung 6 Präsentation 5 4 3 2 1 Sitzung Transport Netzwerk Datenverbindung Phys. Verbindung Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste named pipes, rlogin, … XDS BS-Schnittstelle: sockets ports, IP Adresse TCP/IP Ethernet © H. Weber, FH Wiesbaden Folie 28 Schichtenmodelle XXII - Kommunikationsschichten: NT Kompatibilität zu bestehenden Protokollen SMB (server message block) NetBIOS (network basic input output system) 7 Anwendung 6 5 4 3 2 Präsentation Sitzung Transport Netzwerk Datenverbindung NDIS Protokoll 1 Phys. Verbindung Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste files, named pipes, mail slots Subsysteme Redirector NetBIOS Net BEUI IPX/ SPX NBT WindowsSockets TCP/IP NDIS-Treiber Ethernet/token net © H. Weber, FH Wiesbaden Folie 29 Netzkommunikation I Namensgebung im Internet Eindeutige IP-Adresse: z.B. 141.2.15.25, 32 Bits, notiert in 4 Dezimalzahlen je 0..254 (Bytes) (IP 4) Name: mailhub.informatik.fh-wiesbaden.de server.LocalNet.domain.country Zuordnung IP-Nummer»¼Name wird auf speziellen Rechner gehalten (dynamic name server DNS) Vergabe und Zuordnung der IP-Adresse durch zentrale Instanzen byte 0 A 0 byte 1 Netz Id B 1 0 byte 2 byte 3 Rechner Id Netz Id C 1 1 0 Rechner Id Netz Id Rechner Id D 1 1 1 0 Multicast E 1 1 1 1 reserviert Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 30 Netzkommunikation II Internetnamen: Subnetze Problem: hoher zentraler Verwaltungsaufwand bei zu vielen Netzen Lösung: Unterteilung der Rechneradresse in (Subnetz,Rechner), dezentrale Verwaltung Beispiel: Klasse B-Netz: 2 Byte Rechner ID = (1Byte Subnetz, 1Byte Rechner) besser: dynamische Aufteilung durch Bitmaske (Subnetzmaske) Adressierung (Routingentscheidung) der Subnetze durch die Maske: (Adresse AND Maske) = ? Subnetznummer JA : Zielrechner ist lokal im Subnetz NEIN : Routing-Rechner ansprechen Beispiel Rechner 160 im Subnetz Maske 129.206.218.160 129.206.218.0 255.255.255.0 1000 0001.1100 1110.1101 1010.1010 0000 1000 0001.1100 1110.1101 1010.0000 0000 1111 1111.1111 1111.1111 1111.0000 0000 Also: Festlegung eines Subnetzes durch Angabe (Subnetznummer,Maske) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 31 Netzkommunikation III Namen im regionalen Netz wide area network WAN Problem Integration von Diensten mehrerer Domänen Konsistente, zeitveränderliche Ressourcentabelle Lösung CCITT X.500 (1988) DAP Directory Access Protocol Dateizugriff DSP Directory Service Protocol Server-Server Kommunikation DISP Directory Information Shadowing Protocol LDAP Lightweight DAP vereinf. DAP-Version auf TCP/IP Beispiel Windows NT ADS Active Directory Service nutzt LDAP Ressourcen sind Blätter im Pfadbaum <DomänenId>://<Pfad> „Aktive Objekte“: Jede Änderung im Verzeichnis wird dem Knoten darüber mitgeteilt. Nur die letzte Änderung an einem Objekt bleibt erhalten Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 32 Netzkommunikation IV Namen im lokalen Netz Zusammenschluß mehrer Rechner gemeinsame Wurzel // … Hera Zentrale EDV Einzelverbindung Zentrale … … Netzwerkdienste … Kronos … Abteilung 7 … / EDV … Betriebssysteme und Grundlagen verteilter Systeme: local area network LAN AndereAbteilungen Abteilung 7 © H. Weber, FH Wiesbaden … Folie 33 Netzkommunikation V Beispiel Windows NT Namensraum im lokalen Netz Symbolic links parse-Methode der Treiber (MS Redirector, Novell NetWare File System) führt zum Netzverbindungsaufbau. Beispiel: Neuer „Laufwerks“buchstabe V:für Netzverbindung +Dateiname führt zu Umleitung „V:\public\text.doc“ \ Device Floppy0 \Device\NetWareFileSystem\public\text.doc DosDevices NetWareFileSystem A: .. V: MUP UNC: V:\public\text.doc Redirector Universal Naming Convention UNC Beispiel \\textserv\public\text.doc → UNC:\textserv\public\text.doc → \Device\MUP\textserv\public\text.doc → \Device\NetWareFileSystem\textserv\public\text.doc Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 34 Netzkommunikation VI - Ports Konzept „Kommunikationspunkte“ Beispiel TCP/IP: well known port numbers Dienst Telnet FTP SMTP rlogin rsh portmap rwhod portmap Betriebssysteme und Grundlagen verteilter Systeme: Portnummer Protokoll 23 TCP 21 TCP 25 TCP 513 TCP 514 TCP 111 TCP 513 UDP 111 UDP Netzwerkdienste © H. Weber, FH Wiesbaden Folie 35 Netzkommunikation V - Sockets Arten von Sockets: - UNIX Domain Sockets lokal, Repräsentation im Dateisystem - Internet Domain Sockets verteilt, Repräsentation über IP-Adresse + Portnummer Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 36 Netzkommunikation VI – Sockets Stream-Sockets: • Verlässliche Kommunikation (i.d.R eines Bytesroms) zwichen zwei Endpunkten • Verbindungsorientierter Transportdienst • Im Fall von Internet-Domain-Sockets ist TCP das benutzte Default-Protokoll Datagram-Sockets: • Unzuverlässige Kommunikation von Einzelnachrichten (best effort delivery) • Verbindungsloser Datagram-Dienst • Im Fall von Internet-Domain-Sockets ist UDP das benutzte Default-Protokoll Raw Sockets: •Erlauben Zugriffe auf untergelagerte Protokolle wie IP, ICMP, ... (hier nicht weiter betrachtet) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 37 Netzkommunikation VII – Sockets Socket-Adressen Datentypen • Include-Dateien: #include <sys/types.h> #include <sys/sockets.h> • Internet-Adresse: struct in_addr { u_long s_addr; }; • Socket-Adresse (allg. Typ, in System Calls benutzt): struct sockaddr {u_short sa_family; /* hier AF_xxxx */ char sa_data[14]; /* bis 14B typ-spez.Adresse */ }; • Socket-Adresse (Internet-Typ): struct sockaddr_in { u_short sin_family; /* hier AF_INET, o. AF_UNIX */ u_short sin_port; /* Port-Numer in network byte order */ struct in_addr sin_addr; /* IP-Adresse in network byte order */ char sin_zero[8]; /* unbenutzt */ }; • Cast: struct sockaddr_in my_addr; ...(struct sockadd*) &my_addr Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 38 Netzkommunikation VIII – Sockets Überblick über Systemaufrufe socket( ) bind( ) listen( ) accept( ) connect( ) send( ) / write( ) recv / read( ) shutdown( ) close( ) sendto( ) / recvfrom( ) select( ) Betriebssysteme und Grundlagen verteilter Systeme: Erzeugen Adresse oder Namen zuordnen Server: Socket auf Akzeptieren von Clients vorbereiten Server: Warten auf Verbindungsanfrage Client: Verbindung aufbauen Senden Empfangen Verbindung schliessen Socket zerstören UDP senden/empfangen Warten auf Eintreffen eines von mehreren I/O-Ereignissen Netzwerkdienste © H. Weber, FH Wiesbaden Folie 39 Netzkommunikation IX – Sockets Verbindungsorientierte Kommunikation mit TCP/IP Client Betriebssysteme und Grundlagen verteilter Systeme: Server Netzwerkdienste © H. Weber, FH Wiesbaden Folie 40 Netzkommunikation X – Sockets Verbindungslose Kommunikation mit UDP Server Client Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 41 Netzkommunikation XI – Sockets Erzeugen eines Sockets • int socket(int family, int type, int protocol) Erzeugt einen Socket in der Internet-Domäne (family = AF_INET) oder der UNIX-Domäne (AF_UNIX) vom Typ Stream-Socket (type = SOCK_STREAM), Datagram-Socket (SOCK_DGRAM) oder RawSocket (SOCK_RAW) zur Verwendung mit dem Protokoll protocol und liefert einen Deskriptor für den erzeugten Socket. Für protocol wird i.a. der Wert 0 übergeben. Dann wird das Default-Protokoll gewählt. In der Internet-Domäne ist dies TCP für einen Stream-Socket bzw. UDP für einen Datagram-Socket. Es ist noch keine Adresse zugeordnet. Der Socket ist nicht gebunden. Beispiele: sd = socket(AF_INET, SOCK_STREAM, 0) sd = socket(AF_INET, SOCK_DGRAM, 0) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 42 Netzkommunikation XII – Sockets Binden einer Socket-Adresse • int bind(int sd, struct sockaddr *addr, int addrlen) Bindet die in der struct sockaddr übergebene, von der Domäne des betrachteten Sockets abhängige Adresse an den Socket. Internet-Domäne: struct sockaddr_in UNIX-Domäne: Filename Der Socket wird im TCP/IP Protokoll-Modul registriert. Für Clients in verbindungsorientierter Kommunikation nicht notwendig. Beispiel: r = bind(sd,(struct sockaddr)* my_addr, sizeof(my_addr)) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 43 Netzkommunikation XIII – Sockets Socket vorbereiten auf Verbindungsanfragen • int listen(int sd, int qlength) Zeigt dem TCP/IP-Modul an, dass TCP-Verbindungen über den Socket sd angenommen werden sollen. qlength gibt die maximale Länge der Warteschlange eingehender Verbindungsanfragen an, für die ein accept aussteht. Dies ist nicht die Gesamtzahl von möglichen Clients. Nur auf der Serverseite notwendigBeispiel: r = listen(sd, 10) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 44 Netzkommunikation XIV – Sockets Warten auf Verbindungsanfragen • int accept(int sd, struct sockaddr * claddr, int *addrlen) Blockiert, bis eine Verbindungsanfrage eines Clients am Socket sd anliegt. Dann wird ein neuer Socket erzeugt und dessen Deskriptor zurückgegeben. Damit entsteht eine private Verbindung zwischen Client und Server. Der Socket sd steht für weitere Verbindungsanforderungen zur Verfügung. Die Identität des Clients (entfernte Socket-Adresse) steht in der Struktur claddr zur Verfügung, deren Länge wird in addrlen zurückgegeben. Nur auf der Serverseite bei verbindungsorientierter Kommunikation notwendig. Beispiel: sndnew = accept(sd, struct sockaddr* clientaddr, *clientaddrlen) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 45 Netzkommunikation XV – Sockets Verbindungsanfrage • int connect(int sd, struct sockaddr *saddr, int saddrlen) Aktive Verbindungsanfrage eines Clients über seinen Socket sd an den durch die Adresse in saddr mit Länge saddrlen adressierten Server. Dies ist nur für die Client-Seite bei verbindungsorientierter Kommunikation notwendig. Beispiel: r = connect(sd, &saddr, sizeof(saddr)) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 46 Netzkommunikation XVI – Sockets Senden / Empfangen • int write(int sd, char *buf, int len) • int send(int sd, char *buf, int len, int flag) Der write-Aufruf wird wie bei File-Deskriptoren benutzt. Der send-Aufruf besitzt einen zusätzlichen Parameter flag für spezielle Optionen. •int read(int sd, char *buf, int nbytes) •int recv(int sd, char *buf, int nbytes, int flag) Der read-Aufruf wird wie bei File-Deskriptoren benutzt. Der recv-Aufruf besitzt einen zusätzlichen Parameter flag für spezielle Optionen. Beispiel: count count count count = = = = write(sd, buf, len) read(sd, buf, len) send(sd, buf, len, sflag) recv(sd, buf, len, rflag) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 47 Netzkommunikation XVII – Sockets Schliessen einer Verbindung • int shutdown(int sd, int how) Geordnetes Schliessen einer Verbindung, how gibt an, ob sich das TCP/IP-Modul auch nach dem Schliessen noch um die Verbindung kümmern soll. Der Socket-Deskriptor bleibt bestehen und muß gegebenenfalls mit close zerstört werden. Beispiel: r = shutdown(sd, 2) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 48 Netzkommunikation XVIII – Sockets Hilfsfunktionen gethostname() gethostid() gethostbyname() getservbyname() getsockopt() setsockopt() Betriebssysteme und Grundlagen verteilter Systeme: Ermitteln des eigenen Hostnamens Ermitteln der eigenen IP-Adresse Ermitteln der IP-Adresse eines Rechners bei gegebenem Hostnamen Ermitteln der Portnummer bei gegebenem Dienstnamen Ermitteln der Optionen eines Sockets Setzen von Socket-Optionen Netzwerkdienste © H. Weber, FH Wiesbaden Folie 49 Netzkommunikation XXII - Named Pipes Konzept: Named pipe („Netzwerk/Pfadname“) = LAN-Interprozeß-Kommunikation Unix Named pipe = special device ⇒ nur IPC auf selben Rechner, nicht NFS Named pipe = STREAM (SystemV) socket_pair() / bind() Windows NT CreateNamedPipe() : Objekt im globalen Namensraum, auch NetzPfad IPC = ReadFile() / WriteFile() UNC-Name = \\ComputerName\PIPE\PipeName Lokale pipe: \\ .\PIPE\PipeName Kommunikation zu Unix möglich, wenn LAN-Manager für Unix LM/U installiert. Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 50 Netzkommunikation XXIII - Mailbox Briefkasten ex. bei Sender und Empfänger Multicast & Broadcast möglich Probleme: keine garantierte Reihenfolge, kein garantierter Empfang Beispiel Windows NT mail slots Briefkasten = mail slot, erzeugt mit CreateMailslot(MailBoxName) Senden: CreateFile(MailSlotName)-WriteFile()-CloseFile() mit MailSlotName = „\\ComputerName\mailslot\MailBoxName“ bei ComputerName= „.“ ⇒ lokale IPC bei ComputerName= „*“ ⇒ Broadcast an alle angeschlossenen Rechner bei ComputerName= „DomainName“ ⇒ Broadcast an alle Rechner der Domäne Empfänger sind jeweils alle Briefkästen mit dem angegebenen Namen, falls existent. Einschränkungen: Nachrichtenlänge bei NetBEUI: 64kB bei Punkt-zu-Punkt, 400Byte bei broadcast Höheres Protokoll erforderlich für Reihenfolge, Empfang, etc. Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 51 Netzkommunikation XXIV - RPC Remote Procedure Calls Remote Method Invocation Remote Function Call RPC RMI RFC Java! Form: wie normaler Prozedur/Methodenaufruf, Ausführung durch Netzwerkdienst & Transport bleiben verborgen Client-Server Standardmechanismus! Syntaxformen Stub-Procedure Argument ComputeWetter(heute) → RemoteProc(Wetter,heute) RemoteProc(Wetter,heute) Client Anwenderprozeß RPC-Prozeduren Transport Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste Server RPC - Prozeß RPC-Prozeduren Transport © H. Weber, FH Wiesbaden Prozeduraufruf OriginalProzeduren Folie 52 Netzkommunikation XXV - RPC RPC-Ablauf Client Stub Prozeduraufruf Netzwerk Argumente packen RPC warten … RPC return Stub Server wartet .. Argumente entpacken Prozeduraufruf OriginalRückkehr ablauf Ergebnisse packen Ergebnisse auspacken RETURN Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 53 Netzkommunikation XXVI - RPC Transport der Argumente: maschinenunabhängig! Problem: Hardwareformat von Zahlen Big endian Motorola 680X0, IBM 370 höherwertig Byte0 Little endian höherwertig Byte3 niederwertig Byte1 Byte2 Byte3 Intel 80X86, VAX, NS32000 Byte2 Byte1 niederwertig Byte0 Lösung data marshaling, z.B. mit XML, Java Serialisierung, ... auch für compiler data alignment (Adreßgrenzen bei records, Wortadressierung, ...) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 54 Netzkommunikation XXVII - RPC Beispiel Unix Spezielle C-Bibliotheken /lib/libc.a; SystemV: /usr/lib/librpc.a RPC über NFS Schichtenmodell RPC/XDR external data representation Client: anmelden mit registerrpc() Client: callrpc() Server: svr_run() clnt_. ../ svc_... Parameter des Transportprotokoll TCP/IP setzen/lesen Berechtigungen setzen/lesen Pmap_.., ath_.., xdr_.. Details des Protokolls: Vorsicht! RPC bei DCE: Compiler für spezielle Interface Definition Languge. RPC durch stub-Aufrufe und Laufzeitbibliothek für Transport Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 55 Netzkommunikation XXVIII - RPC Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 56 Netzkommunikation XXIX - RPC Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 57 Netzkommunikation XXX - RPC • Verwendung des RPC-Protokoll-Compilers rpcgen • Zu schreiben: Spezifikationsdatei mul.x • rpcgen mul.x -> generiert: mul.h mul_clnt.c <- Client-Stub mul_xdr.c <- XDR-Transformationen mul_svc.c <- Server-Stub • Zu programmieren: Client-Hauptprogram mul.c Server-Funktion mul_svc_proc.c Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 58 Netzkommunikation XXXI - RPC Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 59 Netzkommunikation XXXII - RPC Beispiel Windows NT Verbindungslose RPC: anonymer Service Verbindungsorientierte RPC: bestimmte Prozeduren Network Data Representation(NDR)-Format Programmierung durch MIDL-Compiler Protokoll-Wahl durch Namensnotation: „ncacn_ip_tcp: MyServer[2004]“ = TCP/IP-Protokoll zu MyServer,port 2004 presentation layer RPC named files session layer transport layer TCP/IP IPX/SPX sockets NetBEUI etc. ... network layer Betriebssysteme und Grundlagen verteilter Systeme: mail WinNet slots API redirector Netzwerkdienste © H. Weber, FH Wiesbaden Folie 60 Netzkommunikation XXXIII – Server-Modelle Wo entstehen in Client-Server-Systemen Qualitäts- und Effizienzprobleme? Im Bereich des Servers ! Wann? - Bei zu lang dauernder Antwort des Servers - Bei zu vielen gleichzeitigen Clients - Bei zu starker Beanspruchung des Server-Rechners Client 1 Client 2 ... Server Client n-1 Client n Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 61 Netzkommunikation XXXIV – Server-Modelle Ziel: Leistungssteigerung Es werden hier nur Socket-basierte Server betrachtet, bei RPCs sind ähnliche Vorgehensweisen möglich Iterativer Server Server mit select-Technik Konkurrenter Server mit Prozeßmodularität Konkurrenter Server mit Thread-Modularität Konkurrenter Server mit Pool von n wiederverwendbaren Prozessen (unterschiedliche Techniken bezüglich Einsatz und Schutz des accept, eventuell zusätzliche Synchronisierung notwendig je nach Betriebssystem) Konkurrenter Server mit Pool von n wiederverwendbaren Threads (verschiedene Thread-Arten: KLT, ULT, unterschiedliche Techniken bzgl. Einsatz und Schutz des accept) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 62 Dateisysteme im Netz I Zugriffssemantiken Read Only File Problemlos, da alle Kopien aktuell sind, unabhängig von der Pufferung Operationssemantik race conditions Alle Änderungen werden sofort umgesetzt; die zeitlich nächste Operation bemerkt die Folgen der vorigen Sitzungssemantik race conditions Alle Änderungen werden nur auf einer Kopie ausgeführt. Am Ende der Sitzung wird das Original überschrieben. Transaktionssemantik Atomare Transaktion: Während der Sitzung ist die Datei gesperrt. Problem: Zugriffssemantik hängt von der Implementierung ab (Hardware, Existenz von Puffern, Netzprotokollen, ...) Beispiel Operationssemantik: Reihenfolge der Operationen = Inhalt hängt von der Kommunikationsgeschwindigkeit (Leitungsgeschwindigkeit, Netzstruktur, CPU-Takt, BS-Version, Lastverteilung, ...) ab. Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 63 Dateisysteme im Netz II Zustandsbehaftete und zustandslose Server = verbindungsorientierte Kommunikation vs. verbindungslose Kommunikation Verbindung/Dienst eröffnen Datenstrukturen für Zugriff aufsetzen (Kennungen etc.) Zugriffsrechte prüfen Puffer einrichten Verbindung/Dienst nutzen Mit Dateikennung lesen/schreiben Auftragskopien werden über gleiche Sequenznummern erkannt Verbindung/Dienst schließen Puffer leeren + deallozieren Datenstrukturen abbauen Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 64 Dateisysteme im Netz III Zustandsbehaftete und zustandslose Server Vorteile Schneller Zugriff: keine Adreßinfo, keine Berechtigungsprüfung Effizienter Cache: Strategien möglich (read ahead etc.) Vermeiden von Auftragskopien Nummerierung der Aufträge Dateisperrung möglich (Exklusiver, atomarer Zugriff) Datenbanken! Nachteile Client crash: kein Löschen der Strukturen+Puffer Server crash: kein Löschen der Strukturen+Puffer, Dateizustand ungewiß Begrenzte, gleichzeitig benutzte Dateienzahl: begrenzte Speicherbelegung Fazit: Server(Verbindung) mit Zustand kann Dateien reservieren, Auftragskopien vermeiden. Server(Verbindung) ohne Zustand ist fehlertoleranter, kann mehr Benutzer gleichzeitig verwalten. Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 65 Dateisysteme im Netz IV Beispiel Unix Auftrag: file locking Zustandsloser Server Zugriffsinfo auf Client +Server gespeichert File lock durch RPC Betriebssysteme und Grundlagen verteilter Systeme: NFS-Server Network Lock Manager Client Benutzer prozeß statd Server 4) Status statd 3) 1) lockd 2) 6) 5) Auftrag lockd OK 7) NFS-Server File locking NFS-Client Netzwerkdienste /etc/sm © H. Weber, FH Wiesbaden 7) Datei Folie 66 Dateisysteme im Netz V Cache und Puffer Vorteil: Nachteil: Puffer auf Client beschleunigt Lesen/Schreiben lokaler Puffer führt zu Inkonsistenz bei Zugriffen anderer Rechner Mögliche Pufferorte: Benutzerprozeß Transport Netzdateisystem Transport lokaler Treiber Platte Leiter Client Benutzerprozeß Transport Client Leiter Transport Server Lokaler Treiber Plattencontroller Betriebssysteme und Grundlagen verteilter Systeme: Server Heap/Stack Ausgangspuffer 1GHz auf 3 km=10kB Eingangspuffer Dateipuffer Schreib/Lesepuffer Netzwerkdienste © H. Weber, FH Wiesbaden Folie 67 Dateisysteme im Netz VI Cache und Puffer Konsistenzstrategien Write Through Änderungen gehen am Puffer vorbei sofort zum Original Delayed Write Sammeln der Änderungen, dann erst schicken Zentrale Kontrolle Vor dem Lesen Vergleich der Änderungsinfos (VersionsNr,Quersummen) zwischen Client-Server Write On Close Sitzungssemantik: lokale Kopie geht an Server bei close() Fazit: Puffern auf Serverseite ist einfacher auf Clientseite effizienter, aber komplexer (Protokolle) Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 68 Dateisysteme im Netz VII Beispiel UNIX NFS-Cachestrategien Asynchrone RPC durch basic input output biod – Dämonen Read ahead Vorauseilende Anforderung von Benutzerblöcken Delayed write Pufferung aller Schreibdaten, flush() alle 3 s (Daten) , 30 s (Verzeichnisse), bei sync(), Puffer belegt Write through bei exklusiv gesperrten Dateien Code aus Effizienzgründen im Kernel Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 69 Dateisysteme im Netz VIII Implementierung eines Dateiserver durch Prozesse Client Server Anwenderprozeß Netzdateimanager System call Betriebssystemaufruf Dateitreiber Gerätetreiber Vorteil Nachteil Netzdateitreiber Transport Netzanschlußtreiber Betriebssystemaufruf Netzdateitreiber Transport Netzanschlußtreiber Dateitreiber Gerätetreiber symmetrisches System, jeder kann beides sein Kopieren der Systempuffer kernel space/user space Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 70 Dateisysteme im Netz IX Implementierung eines Dateiserver durch Treiber Client Server Anwenderprozeß System call Betriebssystemaufruf Dateitreiber Gerätetreiber Vorteil Nachteil Netzdateitreiber Transport Netzanschlußtreiber Betriebssystemaufruf Netzdateitreiber Transport Netzanschlußtreiber Dateitreiber Gerätetreiber schnelles System asymmetrische Kerne Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 71 Dateisysteme im Netz X Beispiel Unix Das NFS-System Mount() zum Einhängen eines Server-Dateisystems Prozesskommunikation zum mount-demon Nfs_svc() im kernel mode auf dem Server Virtual i-nodes für virtuelles Dateisystem Client Server Anwenderprozeß System call Systemaufruf-Verteiler Virtual File System MS-DOS UNIX NFS file file Client system system Gerätetreiber UDP/IP Virtual File System UNIX MS-DOS NFS file file Server system system UDP/IP Gerätetreiber Netz Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 72 Dateisysteme im Netz XI Beispiel Windows NT Netzdateisystem Verbindungsorientierter Netzaufbau durch Redirector mit Transport Driver Interface TDI über virtual circuits (Kanäle) Kernel Thread pool im Server Server Client Anwenderprozeß System call Systemaufruf-Verteiler I/O-Manager MS-DOS NT-file Redirecsystem file tor system Netztransport Gerätetreiber I/O-Manager Server NT-file OS/2-file Treiber system system Netztransport Gerätetreiber Netz Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 73 Dateisystem im Netz XII - Sicherheitskonzepte Problem Inkonsistente Netz-Kopplung von Systemen bei unterschiedlichen Sicherheitsmechanismen ! z.B. Authentifizierung bei unterschiedlich langen Namen und Groß/Kleinschreibung Unix/WinNT vs MS-DOS, fehlende ACLs, ... Beispiel Unix NFS-Sicherheitssystem NIS Benutzerliste (yellow pages) verwaltet von NIS RPC hat Zugriffsrechte user/group/other SuperUserID=0 auf Client ⇒ UserId=-2 auf Server („external Super User“) konsist. Behandlung von gleichen NutzerIds unterschiedl. Systeme Beispiel Windows NT NT 4.0: ACL, Netzbenutzer müssen beim SAM registriert sein mit gleichem Paßwort, sonst Nachfrage bzw. Ablehnung NT 5.0: Kerberos-System bei netzweiter Zugangskontrolle Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 74 Sicherheit im Netz I Netzeinbruch Paßwort erraten Paßwort abhören Trojanische Pferde Email-Programme WWW-Dienste FTP file transfer Kontrollübernahme Dateisystem-Zugriffsrechte Systemprogramme-Zugriffsrechte Viruserzeugung Virusentdeckung Virusentfernung selbstreplizierende Trojanische Pferde Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste Start user program code Infektion virus program user program code Start © H. Weber, FH Wiesbaden Folie 75 Sicherheit im Netz II Beispiel Unix Authentifizierung am Rechner Prozeßfolge: init Prozeß getty → login → sh /etc/passwd : Kommando 1 Kommando 2 root:Igl6derBr45Tc:0:0:The Superuser:/:/bin/sh ... brause:ntkyb1ioøkk3j:105:12:&Brause:/user/user2/ASA:/bin/csh LoginName Paßwort PersonId GruppeId uid Name StartPfad ShellName /etc/group: staff:*:12:boris,peter,brause GruppenName GruppenPaßwort Gruppenkennung gid Benutzerliste Authentifizierung im Netz rsh remote shell, rlogin remote login: Dominoeffekt! basierend auf etc/hosts.equiv Autorisierung BenutzerProzeßRechte =ruid, rgid ProgrammErzeugerRechte = uid, gid effektive ProzeßRechte = euid, egid Laufzeit: euid = ruid, egid=rgid. Speziell set userId/groupId: euid=uid, egid=gid Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 76 Sicherheit im Netz III Beispiel Windows NT Benutzerauthentifikation lokale Anmeldung, bei der sich der Benutzer mit seinem lokalen Benutzernamen auf seinem Computer anmeldet (lokale ACL) Netzwerk-Anmeldung, um Zugriff auf die Dateien eines Dateiservers zu erhalten (Server-ACL) Anmeldung in einer Domäne, mit der der Zugriff auf die Rechner und die Dienste der Domäne geregelt wird primary domain controller (R/W), backup domain controller (R) Anmeldung in einem Domänennetz durch trust relationship = ACL Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 77 Sicherheit im Netz IV Problem: Zugriff auf 1000 Rechner durch 1000 Benutzer Muß jeder sich bei jedem registrieren mit Paßwort? Idee: Capability-Modell vs. ACL User A User B User C User D Objekt 1 rw Objekt 2 Objekt 3 Objekt 4 rwx rx rx r r Capab. rw ACL Erweiterungen • Rollen-basiertes Modell: User können Rollen mit Capabilities annehmen • Vertraulichkeit (Informationsweitergabe) Kein User darf Objekte lesen/schreiben, die höher klassifiziert sind als er selbst Betriebssysteme und Grundlagen verteilter Systeme: Netzwerkdienste © H. Weber, FH Wiesbaden Folie 78