Verteilte Systeme BS AI Rumen Stainov http://www2.hs-fulda.de/~stainov/ [email protected] Verteilte Systeme 2009 © R. Stainov 1 Das Internetmodell Schicht 3 und 4. Die Internet- und die Transportschicht entsprechen der (dritten) Vermittlungs- und der (vierten) Transportschicht bei OSI. Das Internetmodell lässt allerdings keine anderen Protokolle als IP (Internetprotokoll) oder IPv6 (die neue 6. Version) auf der Internetschicht und TCP oder UDP auf der Transportschicht zu. Schicht Protokolle Anwendung Telnet FTP Vordergrund (Terminal) (Filetransfer) TCP Transport HTTP SMTP P2P-Protokolle (WWW) (E-Mail) (Ressourcen) RTP (IP-Telefon) (Personen) UDP (verbindungsorientiert über TCP-Pakete) (verbindungslos über UDP-Datagramme) ICMP (Fehlermitteilung und Steuerinformation), IGMP (Gruppenkommunikation) Vermittlung IP oder IPv6 (unzuverlässige IP-Datagramme zwischen zwei Internetcomputern) X.25 GigabitIEEE 802.x HDLC PPP Einkapseln von IPEthernet Paketen Link (LANs) (Netze) (über DSL) Verteilte Systeme (LAN) 2009 © R. Stainov 2 Internetworking ICMP (Internet Control Message Protocol) 4-Bit 4-Bit Version HeaderLänge 8-Bit Type_of_Service TOS Identifikator Time-to -live TTL Typ Verteilte Systeme 2009 © R. Stainov 16-Bit Länge des Datagramms Flags Protokolltyp IP-Adresse des IP-Adresse des Code weitere Offset des Fragments Prüfsumme des Headers Absenders Empfängers Prüfsumme Kontroll-Information 3 Internetworking - ICMP Typ Bedeutung 0 Informationsnachricht: Echo-Antwort (Ping-Antwort). 3 Fehlermeldung: Empfänger ist nicht erreichbar (destination unreachable). 4 5 Das Feld Code bestimmt die Ursache: 0 = Netzwerk ist nicht erreichbar, 1= Host ist nicht erreichbar, 2= Das Protokoll ist nicht erreichbar, 3 = Port ist nicht erreichbar, 4 = Fragmentierung ist notwendig, aber das Bit „nicht fragmentieren“ ist gesetzt, 5 = SourceRouting-Fehler, 6 = unbekanntes Netzwerk, 7 = unbekannter Host, 8 = Sender-Host ist abgetrennt, 9 = Zielnetzwerk ist administrativ nicht zugänglich, 10 = Ziel-Host ist administrativ nicht zugänglich, 11 = Das Netzwerk ist nicht erreichbar für TOS (Type of Service), 12 = Der Host ist nicht erreichbar für TOS, 13 = Die Kommunikation ist administrativ nicht erlaubt (wegen Filtrieren), usw. Fehlermeldung: Flusskontrolle (source quench) Fehlermeldung: Umleitung zum anderen Router (redirect) (zur Veränderung der RoutingTabelle des Senders). Das Feld Code bestimmt: 0 = redirect für Netzwerk-ID, 1 = redirect für Host-ID, 2 = redirect für TOS und Netzwerk-ID, 3 = redirect für TOS und Host-ID 8 Informationsnachricht: Echo-Anforderung (Ping-Anforderung). 9 Informationsnachricht: Router-Advertisement als Antwort auf Typ 10 router solicitation oder zum periodischen Broadcasting von Routing-Tabellen. 10 Informationsnachricht: Router-Solicitation - Abfragen der Routing-Tabellen des lokalen Router. Systeme Verteilte 2009 © R. Stainov 4 Internetworking - ICMP Typ Bedeutung 11 Fehlermeldung: Die Zeit ist abgelaufen (time exceeded) (TTL hat 0 erreicht). 12 Das Feld Code bestimmt: 0= TTL hat 0 erreicht während der Übertragung, 1= TTL hat 0 erreicht während der Zusammensetzung des Paketes nach der Fragmentierung. Fehlermeldung: Problem mit den Parametern (parameter problem). Das Feld Code bestimmt: 0= der IP-Header ist beschädigt, 1= die erforderliche Option fehlt. 13 14 Informationsnachricht: Zeitstempel-Anforderung (time stamp request) (UTC-Zeit in Millisekunden). Informationsnachricht: Zeitstempel-Antwort (time stamp replay) (UTC-Zeit in Millisekunden). 15 16 17 18 Informationsnachricht: Informationsanforderung (information request). Informationsnachricht: Informationsantwort (information replay) Informationsnachricht: Adressmaske-Anforderung (address mask request). Informationsnachricht: Adressmaske -Antwort (address mask replay). Verteilte Systeme 2009 © R. Stainov 5 Transportschicht (UDP und TCP) Multiplexing an die Ports Schichten 7 6 5 4 Computer „Palme“ Computer „Eiche“ Programme Programme Sender-Ports Empfänger-Ports Das TCP-Protokoll TCP/UDP TCP/UDP 3 Protokollnummer IP-Adresse/Interface Version 2 IP FDDI 1 Protokollnummer Das IP-Protokoll IP FDDI IP- Adresse/Interface Version Ethernet LAN Ethernet LAN FDDI Verteilte Systeme 2009 © R. Stainov INTERNET 6 Transportschicht - UDP Multiplexing an die Ports 4-Bit 4-Bit 8-Bit Version HeaderLänge Type_of_Service TOS Identifikator Time-to -live TTL 16-Bit Länge des Datagramms Flags Protokolltyp Offset des Fragments Prüfsumme des Headers IP-Adresse des Absenders IP-Adresse des Empfängers IP-Optionen Port- Nummer des Senders UDP- Länge Verteilte Systeme 2009 © R. Stainov Portnummer des Empfängers UDP-Prüfsumme 7 Transportschicht - TCP Multiplexing an die Ports + TCP-Pipe 4-Bit 4-Bit Version H-Länge 8-Bit 16-Bit Type_of_Service TOS Identifikator Flags Time-to -live TTL Port- HeaderLänge Protokolltyp IP-Adresse IP-Adresse IP-Optionen Nummer des Senders Sequenznummer Bestätigungsnummer URG, PSH, RST, SYN, FIN, ACK TCPPrüfsumme Optionen Daten Verteilte Systeme 2009 © R. Stainov des des Länge des Datagramms Offset des Fragments Prüfsumme des Headers Absenders Empfängers Portnummer des Empfängers Fenstergröße Urgent-Pointer 8 TCP 4-Bit 4-Bit Port- Nummer Header -Länge 8-Bit des Senders Sequenznummer Bestätigungsnummer 16-Bit Portnummer des Empfängers URG, PSH, RST, SYN, FIN, ACK TCPPrüfsumme Optionen Daten Fenstergröße Urgent-Pointer Sequenznummer für geordnete Übertragung - beide Sender verwalten je eine Sequenznummer (Folgenummer) für die Verbindung. Die Sequenznummern werden während der Verbindungsaufbauphase ausgewählt und gegenseitig ausgetauscht. Das Feld Bestätigungsnummer dient zur Bestätigung eines empfangenen TCPPakets. URG = Urgent Pointer ist gültig ACK = Bestätigung (Acknowledgment), PSH = unverzögertes Weiterleiten der Daten zur Anwendung RST = Zurücksetzen (Reset) der Verbindung SYN = Synchronisiere die Sequenznummer FIN = Sender hat die Datenübertragung beendet. Das Feld Fenstergröße dient zur Flusskontrolle. Das Feld Urgent Pointer zeigt auf die dringenden Daten (URG-Flag) Verteilte Systeme 2009 Segment © R. StainovSize (MSS) bestimmtdie maximale Länge des TCP-Pakets. Maximum 9 TCP 4-Bit 4-Bit 8-Bit 16-Bit Port- Nummer des Senders Sequenznummer Bestätigungsnum. Portnummer des Empfängers Header -Länge URG, ACK PSH, RST, SYN, FIN, TCPPrüfsumme Optionen Daten Fenstergröße Urgent-Pointer Weitere TCP-Dienste Segmentierung. Große TCP-Pakete werden in kleinere Segmente aufgeteilt, UDP-Datagramme nicht. Bei TCP spricht man grundsätzlich von Übertragung von Segmenten, statt von Paketen. Erneutes Senden. Zu jedem TCP-Segment wird beim Senden ein Timer gestartet. Wenn der Timer für eine Bestätigung abgelaufen ist, wird das Segment erneut gesendet (retransmission). Duplikatenbehandlung. TCP-Segmente werden nicht dupliziert zugestellt (auch wenn die IP-Datagramme dupliziert sind). Die Sequenznummern werden zur Erkennung der Duplikate verwendet. Verteilte Systeme 2009 © R. Stainov 10 TCP 4-Bit 4-Bit 8-Bit 16-Bit Port- Nummer des Senders Sequenznummer Bestätigungsnum. Portnummer des Empfängers Header -Länge URG, ACK PSH, RST, SYN, FIN, TCPPrüfsumme Optionen Daten Fenstergröße Urgent-Pointer TCP-Verbindungsaufbau - 3-Wege-Handshake Der Client sendet eine SYN-Nachricht an die Portnummer des Servers (8080) und mit der 32-Bit-langen Sequenznummer des Client für diese Verbindung (Seq=2948254858). 1 bragi->inti TCP D=8080 S=37518 SYN Seq=2948254858 Win=8760 Der Server antwortet mit einer SYN-Nachricht an die Portnummer des Clients (37518), schickt seine eigene Sequenznummer für diese Verbindung (Seq=2789133898) und bestätigt die Clients-SYN-Nachricht (Ack=2948254859). 2 inti->bragi TCP D=37518 S=8080 Syn Ack=2948254859 Seq=2789133898 Win=8760 Der Client bestätigt die Servers-SYN-Nachricht (Ack=2789133899) 3 bragi->inti TCP D=8080 S=37518 Ack=2789133899 Seq=2948254859 Win=8760 Verteilte Systeme 2009 © R. Stainov 11 4-Bit 4-Bit 8-Bit 16-Bit Port- Nummer des Senders Sequenznummer Bestätigungsnum. Portnummer des Empfängers Header -Länge TCP URG, ACK PSH, RST, SYN, FIN, TCPPrüfsumme Optionen Daten Fenstergröße Urgent-Pointer TCP-Datenaustausch 4 bragi->inti TCP D=8080 S=37518 Ack=2789133899 Seq=2948254859 Len=288 Win=8760 5 inti->bragi TCP D=37518 S=8080 Ack=2948254860 Seq=2789133899 Len=190 Win=8760 TCP-Verbindungsabbau 6 inti->bragi TCP D=37518 S=8080 Fin Ack=2948254862 Seq=2789133902 7 bragi->inti TCP D=8080 S=37518 Ack=2789133903 Seq=2948254862 8 bragi->inti TCP D=8080 S=37518 Fin Ack=2789133903 Seq=2948254862 9 inti->bragi TCP D=37518 S=8080 Ack=2948254863 Seq=2789133903 Verteilte Systeme 2009 © R. Stainov 12 4-Bit 4-Bit 8-Bit 16-Bit Port- Nummer des Senders Sequenznummer Bestätigungsnum. Portnummer des Empfängers Header -Länge TCP URG, ACK PSH, RST, SYN, FIN, TCPPrüfsumme Optionen Daten WWW-SERVER Fenstergröße Urgent-Pointer WWW-CLIENT auf Port 8080 TelekomNETZWERK inti auf Port 37518 bragi Verbindungsaufbau SYN (Port=8080, Seq=2948254858) SYN (Port=37518, Seq=2789133898,Ack=2948254859) ACK(Port=8080, Seq=2789133899) Datenaustausch Ack=2789133899 Seq=2948254859 Ack=2948254860 Länge=288 Seq=2789133899 Länge=190 Verbindungsabbau FIN( ) ACK( ) FIN( ) Verteilte Systeme 2009 © R. Stainov ACK( ) 13 DNS (Domain Name System) Normale Abbildung. Abbildung von alphanumerischen Internetnamen in numerischen Internetadressen. Da die Internetnamen strukturiert sind, werden die entsprechenden Domains und ihre DNS-Server dieser globalen (baumförmigen) Hierarchie folgen. virtuelle Root-Domain arpa 193 gov edu fr normale DNS-Eintragung de ca fh-fulda 193.174.26 174 26 inverse DNS-Eintragung fh-fulda.de Verteilte Systeme 2009 © R. Stainov 14 DNS Beispiel Root-Server ns.nic.de rz.uni-bonn.de inti.fh-fulda.de 193.174.26.19 tethis.uni-bonn.de 131.220.4.4 buche eiche NS olymp.uni-bonn.de NS rz.fh-fulda.de 2 7 A? tethis.uni-bonn.de 6 1 DNS-Server rz.fh-fulda.de A 131.220.4.4 Root-Server ns.nic.de rz.uni-bonn.de 5 DNS-Server rz.fh-fulda.de IP-Paket 4 9 3 PTR? 193.174.26.19 PTR inti.fh-fulda.de 8 A 131.220.4.4 DNS-Server olymp.uni-bonn.de Verteilte Systeme 2009 © R. Stainov PTR inti.fh-fulda.de OK DNS-Server rz.fh-fulda.de 15 WWW 1. Einheitliche Adressierung. Statt durch die absolute Rechneradresse wie es bis jetzt üblich war, wird in WWW ein Objekt adressiert.. Ein Objekt wird durch die "Adresse der Ressource", die sogen. URL (Universal Resource Locator) angesprochen. 2. Einheitliche Client-Server-Kommunikation. Das Hypertext Transfer Protocol (HTTP) ist das einheitliche Client-Server-Protokoll, das auch eine Anpassung an die Daten- und Kommandoformate und ihrer Interpretation spezifiziert. Weiterhin werden Sicherheitsmechanismen für Authentifizierung und Zugriffskontrolle angeboten. 3. Hypertext-basierte Oberflächengestaltung auf der Basis einheitlicher Beschreibungssprache. Das Oberflächengestaltungsprogramm (der sogen. WWW-Browser) interpretiert die WWW-Seite mit Hypertextmenues, Internetlinks, Grafiken, Video etc., die in der Beschreibungssprache HTML (Hypertext Markup Language) notiert ist. Verteilte Systeme 2009 © R. Stainov 16 HTTP (Hypertext Transfer Protocol) 1. Die Adressierung des Objektes über URL. 2. Abwicklung der Client-Server-Interaktion. Die HTTPAnforderung (HTTP-Request) fordert eine Ressource auf (z.B. profs.html), die dann zum WWW-Browser über eine HTTP-Antwort (HTTP-Response) geht und stellt die Ressource zu. 3. Die Anpassung der Formate erfolgt durch Verhandlung zwischen dem Client und dem Server und durch Einbeziehen seitens des Client von externen Interpretern (sogen. Browser für Grafik, Bilder, Audio, Video). Verteilte Systeme 2009 © R. Stainov 17 HTTP Erweiterungen in HTTP 1.0: 1. die Universalität des Einsatzes für verschiedene natürliche Sprachen, Medien, Codierungen, Hardware- und Softwaresysteme. 2. die Leistungserhöhung durch Caching über das Internet. 3. den Ausbau der Unabhängigkeit der Datenformate durch deren Anpassung und Verhandlung. 4. die Sicherheit durch Zugriffsschutz und Authentifizierungstest. Verteilte Systeme 2009 © R. Stainov 18 HTTP Zugriff auf eine HTML-Seite durch WWW-Browser WWW-Client PC WWW-Server WWW-Browser HTTP-Request mit URL DNS MIME HTTP-Response mit HTML TCP/UDP IP HTTPDämon RPC DNS TCP/UDP IP INTERNET Verteilte Systeme 2009 © R. Stainov 19 HTTP – Requests GET Aufforderung zum Kopieren der durch URI adressierten Daten in den Nachrichtentext der Antwort. HEAD wie GET, aber nur für Testzwecke. Es werden keine Daten in den Nachrichtentext der Antwort kopiert. POST Senden von Daten im Nachrichtentext der Anforderung zu dem durch URI adressierten Server. PUT Senden von Daten im Nachrichtentext der Anforderung, um sie unter URI zu speichern. DELETE LINK Löschen der durch URI adressierten Daten. Herstellen von Links zwischen den durch URI adressierten Daten und einer anderer Ressource (HTTP 1.0). UNLINK Auflösen von Links zwischen den durch URI adressierten Daten und einer anderer Ressource (HTTP 1.0). TRACE Zurücksenden mit der OK-Antwort der originalen HTTPAnforderung. Der Client kann dadurch überprüfen, was vom Verteilte Systeme Server empfangen wurde (HTTP 1.1). 2009 © R. Stainov 20 HTTP – GET-Request % telnet sta2.informatik.hsfulda.de 80 Trying 193.174.26.22... Connected to sta2.informatik.hs-fulda.de. Escape character is '^]'. GET /index.html HTTP/1.0 Verteilte Systeme 2009 © R. Stainov HTTP/1.1 200 OK Date: Thu, 23 Oct 2008 13:58:57 GMT Server: Apache/1.3.28 (Linux/SuSE) PHP/4.3.3 Last-Modified: Tue, 02 Mar 2004 08:40:56 GMT ETag: "15e79-8f-40444898" Accept-Ranges: bytes Content-Length: 143 Connection: close Content-Type: text/html <HTML> <HEAD> <TITLE>sta2.informatik.fh-fulda.de</TITLE> </HEAD> <BODY> <BR> <IMG SRC="apache_pb.gif" HEIGHT=32 WIDTH=259 ALIGN=RIGHT></DIV> .... <H1>sta2.informatik.fh-fulda.de (193.174.24.142)</H1> </BODY> 21 </HTML> HTTP – HEAD-Request % telnet sta2.informatik.hsfulda.de 80 Trying 193.174.26.22... Connected to sta2.informatik.hs-fulda.de. Escape character is '^]'. HEAD /index.html HTTP/1.0 Verteilte Systeme 2009 © R. Stainov HTTP/1.1 200 OK Date: Thu, 23 Oct 2008 13:58:57 GMT Server: Apache/1.3.28 (Linux/SuSE) PHP/4.3.3 Last-Modified: Tue, 02 Mar 2004 08:40:56 GMT ETag: "15e79-8f-40444898" Accept-Ranges: bytes Content-Length: 143 Connection: close Content-Type: text/html Connection closed by foreign host. 22 HTTP – POST-Request % telnet sta2.informatik.hsfulda.de 80 Trying 193.174.26.22... Connected to sta2.informatik.hs-fulda.de. Escape character is '^]'. POST /index.html HTTP/1.0 Verteilte Systeme 2009 © R. Stainov HTTP/1.1 405 Method Not Allowed Date: Thu, 23 Oct 2008 14:05:52 GMT Server: Apache/1.3.28 (Linux/SuSE) PHP/4.3.3 Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>405 Method Not Allowed</TITLE> </HEAD><BODY> <H1>Method Not Allowed</H1> The requested method POST is not allowed for the URL /index.html.<P> <HR> <ADDRESS>Apache/1.3.28 Server at sta2.informatik.fh-fulda.de Port 80</ADDRESS> 23 </BODY></HTML> HTTP – Caching-Modelle 1. Validierungs-Modell. Es wird über ein Validator zuerst bei dem originalen überprüft, ob diese Eintragung noch aktuell ist. • Falls aktuell, wird die Kopie aus dem Cache genutzt, wobei die erneute Übertragung der gesamten Daten erspart wird. Als könnte auch der „LastModified“-Header dienen. • Falls nicht aktuell, wird die WEB-Seite zum Cache übertragen. 2. Gültigkeitsdauer-Modell. Festlegen einer Gültigkeitsdauer für die CacheEintragung (keine Kommunikation mit dem Server) • Der Server kann festlegen, wie lange die Eintragung noch gültig ist. (z.B. durch das Feld expire = 604800 (7 days)). • Der Cache legt fest, wie lange eine Eintragung im Cache gültig ist: einen Tag, eine Woche ...: „heuristisch“ auf der Basis des „Last-Modified“-Headers oder auf der Basis des berechneten „Alters“ im Cache. 3. Explizite Mechanismen. Der Client oder der Server können selbst entscheiden, wie „alt“ eine Kopie im Cache werden darf. Z.B. festlegen im Cache-Control-Header (HTTP/1.1), dass er auch Cache-Eintragungen mit einer abgelaufenen Verteilte SystemeGültigkeitsdauer bis zum 3600 Sekunden akzeptieren kann: 2009 © R. Stainov max-stale=3600 24 Cache-Control: HTTP – Cache-Validierungs-Modell % telnet sta2.informatik.hs-fulda.de 80 Trying 193.174.26.22... Connected to sta2.informatik.hs-fulda.de. Escape character is '^]'. GET /index.html HTTP/1.0 If-Modified-Since: Mon, 10 Mar 2008 13:43:24 GMT HTTP/1.1 304 Not Modified Date: Thu, 23 Oct 2008 14:08:22 GMT Server: Apache/1.3.28 (Linux/SuSE) PHP/4.3.3 Connection: close ETag: "15e79-8f-40444898" Connection closed by foreign host. Verteilte Systeme 2009 © R. Stainov 25