Prof. B. Plattner, 2.1.99 B Kurzübersicht über die Internet-Protokolle B.1 Einführung Die heute unter dem Namen TCP/IP bekannten Protokolle1 bauen auf den Erfahrungen auf, die in den siebziger Jahren im ARPANET gesammelt wurden [1], einem vom US Department of Defense finanzierten Forschungsprojekt im Bereich der Paketvermittlung. Sie erhielten in der zweiten Hälfte der siebziger Jahre ihre heutige Definition ([2], [3]) und werden seither sowohl im Internet, dem weltweiten Verbund von Netzen mit akademischer und kommerzieller Nutzung als auch - vor allem seit den späten achziger Jahren - als Technologie zur Realisierung von Firmennetzen (in der Werbung heute mit “Intranets” bezeichnet) eingesetzt. Es existieren heute eine Vielzahl von Produkten, welche den TCP/IP-Protkollstapel verwenden und damit auf einfache Weise vernetzt werden können. Ein wesentlicher Grund für die Verbreitung von TCP/IP liegt darin, dass ab ca. 1985 die von der University of California at Berkeley im Auftrag von DARPA unterhaltene Variante von UNIX (BSD UNIX) mit einer Implementation von TCP/IP und einer grossen Zahl von darauf aufbauenden System- und Anwendungsprogrammen ausgeliefert wurde. Daher wurde TCP/IP oft mit UNIX in Verbindung gebracht - eigentlich fälschlicherweise, denn heute ist TCP/IP für praktisch alle Rechnerplattformen und Betriebssysteme erhältlich. Es ist jedoch anzunehmen, dass die grosse Verbreitung sowohl von TCP/IP als auch von UNIX nicht zuletzt darauf zurückzuführen ist, dass beide Produkte zusammen und zu günstigen Preisen erhältlich wurden. Die technische Entwicklung von TCP/IP ist heute unter der Obhut der Internet Society (ISOC), welche als das primäre Organ für die Überwachung und Steuerung des Standardisierungsprozesses die Internet Engineering Task Force (IETF) eingesetzt; dies ist eine lose Gruppierung von Individuen und Firmenvertretern, die sich drei Mal jährlich zu Sitzungen in Arbeitsgruppen treffen und zwischen den Sitzungen ihre Arbeiten hauptsächlich mit elektronischer Post weiterführen. Die Arbeit der IETF ist in Bereiche (areas) aufgeteilt, die jeweils von einem area director geführt werden. Die area directors bilden gemeinsam die Internet Engineering Steering Group (IESG), das Führungsgremium der IETF, und sind u.a. verantwortlich für die Verabschiedung von Standards [4]. Der Weg eines Internet-Standards bis zu seiner formellen Verabschiedung umfasst verschiedene Stufen: Vom “initial” zum “proposed”, dann zum “draft” bis schliesslich zum (von der IESG) verabschiedeten Standard. Bemerkenswert ist, dass vor der Verabschiedung eines Standards Tests mit mindestens zwei unabhängig voneinander entwickelten Implementationen erfolgreich abgeschlossen sein müssen. Trotz dieser harten Anforderung werden Internet-Standards meistens in einer viel kürzeren Zeit verabschiedet als OSI-Standards2 mit vergleichbarer Zielsetzung. 1. Eine gute Einführung in TCP/IP geben die Bücher von D.E. Comer z.B. [5] 2. Mit ISO, IEC oder ITU-TS als Standardisierungsorganisation 1 Prof. B. Plattner, 2.1.99 Standards auf allen Entwicklungsstufen wie auch Diskussionspapiere werden als Internet Drafts und alsRequest for Comments (RFC) publiziert und elektronisch verfügbar gemacht. B.2 Netzmodell Den TCP/IP-Protokollen liegt das Konzept eines Verbunds von Netzen zugrunde; Internet Physikalisches Netz Router Rechner Bild 1 Verbund von Netzen mit TCP/IP Endsysteme (Rechner, “Hosts”) werden i.a. (aber nicht zwingend) als Stationen in einem lokalen Netz an den Netzverbund (Internet) angeschlossen. Die Teilnetze werden physikalische Netze genannt und über Router (in TCP/IP-Terminologie Gateways) miteinander verbunden. Das Internet bietet einen verbindungslosen Netzwerkdienst an, d.h. Pakete werden unabhängig voneinander als Datengramme innerhalb des Netzes behandelt. Die Aufgabe der Router ist es, Datengramme von Netz zu Netz in das Zielnetz und schliesslich zum Zielhost zu befördern. Der verbindungslose Netzwerkdienst wird vom Internet Protocol (IP), implementiert; IP definiert das Format der IP-Datengramme und die Bedeutung der darin enthaltenen Felder. Die Arbeit von IP wird von einem Satz von Routingprotokollen unterstützt, wobei unterschieden wird zwischen dem Routing bis zum Zielnetz und der Auslieferung an den Zielhost. Netze und Hosts werden durch Adressen (IP-Adressen) identifiziert. IP-Adressen sind 32 Bit lang und bestehen aus zwei Teilen; einer der Adressteile adressiert ein Netz und ein zweiter einen Host in diesem Netz. Die Aufteilung der 32 Adressbits in die zwei Teile kann auf drei verschiedene Arten (Klassen A, B und C) gemacht werden (s. Abbildung 2). Damit sind wenige grosse Netze (Klasse A), eine erhebliche Zahl von mittelgrossen Netzen (Klasse B) und eine grosse Zahl von kleinen Netzen (Klasse C) adressierbar. Die Zugehörigkeit zu einer der drei Klassen ist in den führenden Bits der Adresse codiert. Zusätzlich sind Adressformate für Multicast und BroadcastAdressierung definiert. Für die Adressierung von Netzen wird HostId=0 gesetzt. 2 Prof. B. Plattner, 2.1.99 0 Klasse A 0 Klasse B 10 Klasse C 110 8 24 16 NetzId 31 HostId HostId NetzId NetzId HostId Bild 2 IP-Adressen Die beschriebene Einteilung in drei Adressklassen ist inzwischen durch das sogenannte Subnetting ergänzt und flexibilisiert worden; dies ist eine Technik, mit welcher innerhalb eines Netzes aus dem Adressraum für Hosts ein Teil für Subnetze reserviert werden kann. Damit kann beispielsweise der Adressraum eines Klasse B-Netzes auf eine wählbar grosse Zahl von kleineren Netzen aufgeteilt werden, also innerhalb eines bestehenden B-Netzes lokale Netze unterstützt werden. Die Protokollhierarchie von TCP/IP wird in Abbildung 3 dargestellt. Sie kann grob in drei Abschnitte unterteilt werden (von unten nach oben betrachtet): 1. Bereitstellung des verbindungslosen Netzwerkdienstes (entsprechend den OSIOSI-Schicht TCP/IP-Protokolle Application Presentation Anwendungsdienste und -protokolle Session Transport Network Data Link Transmission Con- User Datagram Prototrol Protocol (TCP) col (UDP) Internet Protocol (IP) und ICMP diverse Routing-Protokolle Physikalische Netze (Ethernet, IEEE 802.x, FDDI, etc). Physical Bild 3 Protokollhierarchie von TCP/IP Schichten 1-3) durch das Internet Protocol (IP) in Verbindung mit der ganzen Bandbreite von LAN-Protokollen und anderen Protokollen, welche Funktionen der OSI-Schichten 1 und 2 abdecken. 2. Auf den Netzwerkdienst bauen zwei 7UDQVSRUWSURWRNROOH auf, das 7UDQVPLVVLRQ &RQWURO3URWRFRO (7&3) und das 8VHU'DWDJUDP3URWRFRO (8'3). Das erstere bietet seinen Benutzern einen zuverlässigen, verbindungsorientierten Dienst an, während das letztere im wesentlichen die Funktionen des von IP bereitgestellten Dienstes nach oben weitergibt, d.h. es wird ein verbindungsloser Transportdienst angeboten. 3 Prof. B. Plattner, 2.1.99 3. Eine grosse und stetig wachsende Zahl von Anwendungsdiensten werden auf Anwendungsprotokolle, die auf einem der beiden Transportprotokolle aufbauen, aufgesetzt. Neben oder als Ergänzung zu TCP und UDP werden eine Anzahl weiterer experimenteller Transportprotokolle für die Unterstützung spezieller Anwendungen eingesetzt, beispielsweise das Versatile Message Transaction Protocol (VMTP) für interaktive und Client/Server-Anwendungen und das Stream Transfer Protocol II (ST II) oder RTP für Sprach- und Videoübertragung.3 B.3 Das Internet Protocol (IP) Das Internet Protocol erbringt einen unzuverlässigen verbindungslosen Netzwerkdienst, wobei “unzuverlässig” im Sinne von “so gut wie möglich” zu verstehen ist; dies bedeutet, dass Datengramme durch dieses Protokoll nicht explizit vor Verlust oder Übertragungsfehlern geschützt werden. Ein IP-Datengramm hat ein Header-Feld mit Steuerinformation und ein Datenfeld; der Header enthält neben der Absender- und Empfängeradresse eine Reihe von Feldern, die u.a. die im folgenden beschriebenen Funktionen unterstützen. Fragmentierung: Ein IP-Datengramm (mit einer maximalen Länge von 65535 Oktetten) wird im Nutzdatenfeld der Protokolldateneinheit (Protocol Data Unit, PDU) des darunterliegenden Protokolls - i.a. des LLC oder MAC Frames - übertragen. Da dieses in der Länge beschränkt ist, muss ein zu langes IP-Datengramm in kleinere, die Maximum Transfer Unit (MTU) nicht überschreitende, Teile fragmentiert werden, die wiederum als IP-Datengramme übertragen werden. Beschränkung der Lebenszeit: Die Möglichkeit von Routing-Loops sowie die Bedürfnisse darüberliegender Protokolle verlangen, dass die Lebenszeit eines Datengramms beschränkt werden kann. Dafür ist das Time-To-Live Feld im Header vorgesehen. Protokolltyp: Das Feld “Protocol” wird verwendet, um die übergeordnete Protokollinstanz, welche die im Datengramm enthaltenen Nutzdaten verarbeitet, zu spezifizieren; i.a. wird damit eine TCP- oder UDP-Protokollinstanz referenziert. Schutz des Headers: Mit einer Prüfsumme wird der Header gegen Übertragungsfehler geschützt. Ein entsprechender Schutz für die Nutzdaten ist nicht vorhanden. Optionen: IP erlaubt die Spezifikation von Optionen, welche die Funktionalität des Protokolls erweitern. Damit ist es u.a. möglich, den Weg von Datengrammen zu verfolgen (Record Route), beim Absender die Route des Datengramms festzulegen (Source Route) und jeden Router auf dem Weg des Datengrammes einen Zeitstempel in dasselbe setzen zu lassen. 3. Klassierung dieser Protokolle als Transportprotokolle überprüfen. 4 Prof. B. Plattner, 2.1.99 B.4 Routing Das Routing in IP kann in einem ersten Ansatz in zwei Aufgabenstellungen strukturiert werden: 1. Routing innerhalb eines physikalischen Netzes (z.B. eines LAN oder eines X.25Netzes, welches die Rolle eines physikalischen Netzes spielt). Diese Aufgabe muss von Hosts und Routers gelöst werden. Das in einem LAN verwendete standardisierte Protokoll ist das Address Resolution Protocol (ARP), s. Abschnitt B.4.1 . 2. Routing zwischen Routers auf der Basis von Netzadressen (d.h. die HostId in einer Adresse wird für dieses Routing nicht beachtet). Im Laufe der Geschichte des Internet wurden verschiedene Konzepte und Algorithmen für die Lösung der beschriebenen Aufgaben verwendet, wobei jeweils das Wachstum des Netzes dazu geführt hat, dass ein einmal gewähltes Konzept nach einer gewissen Betriebszeit wieder verworfen werden musste. Die im Internet verwendeten Routingalgorithmen sind dynamisch und liefern normalerweise einen optimalen Pfad für ein einzelnes Datengramm. Der Pfad ist optimiert nach einem Kriterium (typischerweise die Paketverzögerung oder die Anzahl Hops); die Optimierung berücksichtigt den aktuellen Zustand des Netzes (verfügbare Links, lokale Überlastsituationen). Die Algorithmen lassen sich in zwei Klassen einteilen: 1. Distanzvektor-Algorithmen (DV) Diese Algorithmen beruhen darauf, dass jedes beteiligte System seine lokal gehaltene Routing-Information (den Inhalt seiner Routing-Tabelle) an seine Nachbarn propagiert, die daraufhin ihre Routing-Tabellen nachführen und geänderte Einträge ebenfalls an ihre Nachbarn weitergeben. Beim Nachführen der RoutingTabellen wird das aus der Sicht des Systems lokale Optimum berechnet. Die Optimierung findet somit bei diesen Verfahren auf eine verteilte Art, basierend auf lokal verfügbarer, nur teilweise optimaler Information statt. Synonym zum Begriff Distanzvektor-Algorithmus sind der Bellmann-Ford und der Ford-Fulkerson Algorithmus. Der grösste Vorteil der DV-Algorithmen ist ihre Einfachheit. Nachteilig wirkt sich aus, dass bei schnell ändernder Topologie oder Belastung die in den verschiedenen Systemen gespeicherte Routing-Information inkonsistent wird, was zu RoutingLoops (und damit langen Paketverzögerungen oder Paketverlusten) führen kann. Zudem wird Information über eine Verschlechterung der Links langsamer verbreitet als diejenige über Verbesserungen, was ebenfalls zu unerwünschten Effekten führen kann. 2. Linkzustand- oder Shortest Path First (SPF)-Algorithmen Bei Linkzustand-Algorithmen (Link State, LS) verteilen alle teilnehmenden Systeme Information über den Zustand der Links, die sie mit benachbarten Systemen verbinden, an alle Nachbarn in sog. Link State Packets (LSP). Erhaltene LSP werden von jedem System gespeichert und unverändert an alle Nachbarn (ausser demjenigen, von dem man das LSP erhielt) weitergereicht. Die Verbreitung der LSP erfolgt somit mit einem Flooding-Algorithmus, welcher mittels Folgenum- 5 Prof. B. Plattner, 2.1.99 mern oder Zeitstempeln in den LSP und ihren gespeicherten Formen dafür sorgt, dass jedes LSP auf jedem Link höchstens einmal in jeder Richtung übertragen wird. Dies führt dazu, das nach einer gewissen Zeit alle Systeme eine vollständige und sofern der Flooding-Algorithmus terminiert hat - konsistente Sicht der Topologie und des Zustands des Netzes haben. Routen können somit in jedem System autonom und vollständig berechnet werden. Dies geschieht am besten mit dem Dijkstra-Algorithmus [6, 7], der alle besten Pfade ausgehend von einem System berechnet. Die Vorteile der LS-Algorithmen besteht darin, dass jedes System eine Route unabhängig und auf den Originaldaten berechnet; damit ist die Konvergenz des Algorithmus garantiert. Da LSP unverändert weitergegeben werden, sind eventuelle Probleme leichter zu diagnostizieren. Im Unterschied zu den DV-Algorithmen ist bei LS-Routing die Länge der Pakete mit Routing-Information nur abhängig von der Zahl der Nachbarn und nicht von der Zahl der erreichbaren Netze. LS-Algorithmen skalieren daher besser mit wachsender Netzgrösse. Trotzdem sind alle verwendeten Routing-Algorithmen nicht für beliebig grosse Netze geeignet, so dass eine Hierarchisierung des Routing notwendig wird. Der momentan gültige Ansatz für hierarchischer Routing im Internet geht vom Konzept von autonomen Systemen (autonomous system, AS) aus. Innerhalb von AS können AS-spezifische Routing-Algorithmen und zugehörige -Protokolle verwendet werden. In Internet-Terminologie werden diese Routing-Protokolle Interior Gateway Protocol (IGP) genannt. AS sind über einen oder mehrere Router (Gateways) mit dem Rest des Internet verbunden. Diese Routers sind sog. “Exterior Gateways”, welche sich gegenseitig ihre Konnektivität mittels eines Exterior Gateway Protocol (EGP) mitteilen. IGP und EGP stehen hier für Klassen von spezifischen Protokollen, welche die jeweils verlangte Funktionalität aufweisen. Mit AS und Exterior Gateways somit eine weitere Hierarchieebene für das Routing eingeführt und damit die Komplexität der Routingaufgabe innerhalb einer Hierarchieebene vermindert. In der Literatur findet man auch andere Begriffe für das Routing in bzw. zwischen AS: Intra-Domain bzw. Inter-Domain Routing. AS werden in diesem Zusammenhang auch Routing Domains genannt. B.4.1 Routing im physikalischen Netz Die Hauptaufgabe von ARP ist es, aufgrund einer IP-(Ziel-)Adresse die Data-LinkAdresse des adressierten Systems (Host oder Router) herauszufinden. Diese wird benötigt, um ein Datengramm, das zwischen zwei Systemen auf dem gleichen physikalischen Netz übermittelt werden soll, mittels des Link-Protokolls zu befördern. ARP erfüllt seine Aufgabe, indem mittels eines Broadcast auf Link-Ebene alle Systeme auf dem physikalischen Netz aufgefordert werden, die Link-Adresse zu einer gegebenen IP-Adresse zu liefern. Normalerweise wird einzig das System, das die gegebene IP-Adresse hat, eine Antwort liefern. 6 Prof. B. Plattner, 2.1.99 Ein wesentliches Element von ARP besteht darin, dass die auf Anfragen gelieferten Antworten von allen Systemen in einem Cache (dem ARP-Cache) gespeichert werden. So ist nicht für jedes übertragene Paket eine Anfrage notwendig. Arbeitsstationen, die ohne Sekundärspeicher arbeiten (Diskless Workstation), verwenden das Reverse Address Resolution Protocol (RARP), um ihre eigene IP-Adresse zu erfragen. Die Antwort wird von einem oder mehreren RARP Servern geliefert, welche über eine Liste von Zuordnungen (IP-Adresse, physikalische Adresse) verfügen. Mit der erhaltenen IP-Adresse kann eine Station beim Aufstarten (Bootstrap) die standardisierten TCP/IP-Protokolle verwenden, um ihr eigenes Betriebssystem von einem geeigneten Server zu laden. B.5 Transportprotokolle Währenddem bei IP-Datengrammen Endsysteme (Hosts) als Absender bzw. Empfänger auftreten, treten bei den Transportprotokollen TCP und UDP Prozesse als Absender oder Empfänger auf. Dies bedeutet, dass ein Mechanismus für die Adressierung mehrerer (kommunizierender) Prozesse in einem Endsystem vorhanden sein muss. Dafür wird das Konzept von Protokoll-Ports verwendet; Ports werden durch eine 16-Bit Port-Nummer identifiziert und zum Zweck der Interprozess-Kommunikation an Prozesse gebunden. Da eine Applikation direkt auf TCP oder UDP aufsetzt, ist die Konkatenation einer IP-Adresse und einer Port-Nummer gleichbedeutend mit der Adresse einer Anwendung bzw. des Prozesses, der dieselbe implementiert. Die für einen Anwendungsprozess zu verwendenden Port-Nummern können durch Absprachen (statisch) festgelegt, über einen Verzeichnisdienst erfragt oder mittels eines vorgängigen Datenaustauschs verabredet werden. B.5.1 TCP TCP ermöglicht eine Interprozess-Kommunikation über einen zuverlässigen Datenstrom, d.h. eine Sequenz von Bits, die in Oktette strukturiert sind. Übertragungsfehler, Verluste oder Sequenzfehler des darunterliegenden IP-Dienstes werden durch TCP detektiert und korrigiert. Die dazu notwendigen Mechanismen arbeiten im Rahmen einer vorgängig zu erstellenden Verbindung. TCP ist datenstromorientiert; dies bedeutet, dass die zur Übertragung bereitgestellten Dateneinheiten als solche nicht erhalten bleiben müssen. Zwei gesendete Dateneinheiten von z.B. 50 und 120 Oktetten könnten beim Empfänger als eine Dateneinheit von 170 Oktetten oder zwei von 20 und 150 Oktetten ausgeliefert werden. Dies hat zur Konsequenz, dass die Applikation selbst dafür sorgen muss, dass für sie notwendige zusätzliche Strukturen erkannt werden können. TCP bietet voll-duplex-Verbindungen zwischen Prozessen an. Der Kern von TCP ist ein Schiebefensterprotokoll (Sliding Window Protocol) mit einem Zurücksetzen im Fehlerfall (Go-Back N). Es verwendet zudem die folgenden Mechanismen: Zuverlässige Verbindungserstellung mit 3-Way-Handshaking. 7 Prof. B. Plattner, 2.1.99 Flexible Flusssteuerung und mit variabler Fenstergrösse (wird auch bei Netzüberlast eingesetzt). Detektion von Übertragungsfehlern mit einer einfachen Prüfsumme. Möglichkeit des Sendens von “out of band” Daten (Übermittlung zeitkritischer Daten ungeachtet aktiver Flusssteuerung). Dynamische Einstellung von Zeitgebern für Wiederholungen aufgrund von Schätzungen der End-zu-End-Verzögerung. Der ordentliche Abbruch von Verbindungen wird ohne Datenverlust durchgeführt.4 Dazu wird ebenfalls ein 3-Way-Handshaking durchgeführt. B.5.2 UDP Der von UDP angebotene verbindungslose Dienst weist nur unwesentlich mehr Funktionen auf als der (für den Anwendungsprogrammierer normalerweise nicht zugängliche) Dienst von IP. Im wesentlichen wird zusätzlich die Adressierung von Anwendungsprozessen mit Port-Nummern und eine optionale Prüfsumme auf Benutzerdaten ermöglicht. Die maximale Länge von UDP-Datengrammen ist entsprechend der maximalen Länge von IP-Datengrammen etwas kleiner als 65535 Oktette. Die Zuverlässigkeit des UDP-Dienstes entspricht ebenfalls derjenigen von IP. B.6 Netzverwaltung und Systemkonfiguration Die nachstehend beschriebenen Protokolle dienen im weitesten Sinne der Verwaltung eines TCP/IP-Netzes. Dabei kann auf das Internet Control Message Protocol (ICMP) und auf das Domain Name System (DNS) nicht verzichtet werden, während die Verwendung des Simple Network Management Protocol (SNMP) optional ist. Es gilt jedoch zu beachten, dass viele der auf dem Markt erhältlichen Komponenten (Router, Bridges, etc.) über SNMP beobacht- und steuerbar sind, so dass SNMP aus praktischen Gründen oft ebenfalls eingesetzt werden muss. B.6.1 ICMP Das ICMP ergänzt eigentlich fehlende Funktionalität von IP: Wenn beispielsweise ein IP-Datengramm aus irgendeinem Grunde nicht ausgeliefert werden kann, wird eine Fehlerrückmeldung an den Absender über ICMP übermittelt. Dabei verwendet ICMP wiederum den IP-Dienst, d.h. ICMP-Meldungen werden als Nutzinformation in IPDatengrammen übermittelt. ICMP-Meldungen sind jeweils an den Absender-Host adressiert; dieser muss die Korrelation mit eine bestimmten Anwendungsprozess durchführen. ICMP unterstützt die folgenden Funktionen durch eine kleine Anzahl von Meldungsformaten: 4. Dies im Unterschied zum OSI-Transportprotokoll, bei welchem in bestimmten Fällen beim Verbindungsabbruch Datenverluste entstehen. 8 Prof. B. Plattner, 2.1.99 Echo-Anforderung und Antwort zum Feststellen der Präsenz eines Hosts bzw. der Konnektivität (ping-Befehl in UNIX). Fehlerrückmeldung bei nicht auslieferbaren IP-Datengrammen. Stellt einen Mechanismus für die Flusssteuerung (Host-Host) und den Überlastschutz (Router-Host) bereit. Dieser kann auf verschiedene, nicht generell festgelegte Arten genutzt werden. Übermitteln von Routinghinweisen (Hinweis auf einen “besseren” Router) von einem Router an einen Host. Übermittlung von Zeitinformation (Synchronnisation von lokalen Clocks) und Schätzung von Verzögerungszeiten. Feststellen von Subnetzmasken. B.6.2 DNS Das Domain Name System dient primär der Abbildung von Host-Namen auf IPAdressen und umgekehrt. Darüber hinaus hat es eine Bedeutung bei der Organisation der elektronischen Post, indem über das DNS der für eine bestimmte RFC 822 E-mail Adresse zuständige Host (mail exchanger) gefunden werden kann. Der Adressraum der IP-Adressen ist zwar hierarchisch aufgebaut, weist jedoch eine begrenzte Zahl von Hierarchiestufen auf (erste Ebene: Klassen A, B, und C; zweite Ebene: Netze; dritte( optionale) Ebene: Subnetze; vierte Ebene: HostId). Damit kann die Autorität der Vergabe von Adressen nicht sehr breit gestreut werden. Zudem kann den Adressen keine für den Menschen gut verständliche und memorisierbare Aussagekraft über deren “Besitzer” mitgegeben werden. Adressen sind darüber hinaus an die Topologie des Netzes gebunden und ändern sich beispielsweise, wenn der Anschlusspunkt eines Host geändert wird (z.B. von einem lokalen Netz in ein benachbartes Netz transferiert wird). Es werden daher ein Konzept für die logische Benennung von Objekten in einem Netz und ein Mechanismus für die automatische Abbildung zwischen Namen und Adressen benötigt. Der Internet-Namensraum ist ebenfalls hierarchich aufgebaut (s. Abbildung 1); ein Objekt im Namensraum wird durch die Konkatenation der Knotennamen im Namensbaum in der Reihenfolge von den Blättern zur Wurzel benannt, wobei die einzelnen Komponenten durch Punkte voneinander getrennt werden. Jeder Teilbaum beschreibt einen Bereich (domain); die Domains direkt unterhalb der Wurzel sind sog. top-level Domains, die ihnen untergeordneten werden Subdomains genannt. Jeder Eintrag hat einen Typ; so kann ein Blatt des Baums, welches ein einzelnes Objekt repräsentiert, beispielsweise einen Host oder einen Mail Exchanger beschreiben. Ein Beispiel für den Namen einer Maschine ist “sun.wh.gov”, wenn wir annehmen, dass der Typ des Eintrags gleich “A” ist (für Host Address, d.h. eine IP-Adresse eines Hosts ist darin gespeichert). Weitere Typen sind in Tabelle 2-1 aufgeführt. 9 Prof. B. Plattner, 2.1.99 Domain ch edu mit com udel sun gov dec cs wh ch sbg ethz tik sun Bild 1 Der Internet-Namensraum im DNS (hypothetisch) 7DEHOOH 7\SHQYRQ(LQWUlJHQLP'16 A IP-Adresse eines Hosts MINFO Information über eine Mailbox MX Mail Exchanger NS PTR Verweis auf einen Domainnamen HINFO Name der CPU und des Betriebsystems Name Server (des DNS) etc. Das Domain Name System kann gleichzeitig für mehrere Protokollarchitekturen (nicht nur TCP/IP) gebraucht werden, da ein Eintrag auch einer von mehreren Klassen, die dessen Zugehörigkeit zu einem von mehreren Protokollen angibt, angehören kann. Die weitaus häufigste Nutzung des DNS ist die Abbildung von Domain-Namen auf IP-Adressen (z.B. für die Eröffnung einer TCP-Verbindung) und die Suche nach dem Namen eines Mail Exchangers, der für die Auslieferung von elektronischer Post an eine gegebene Mailbox zuständig ist. Eine weitere unterstützte Funktionen ist das Finden des Domain-Namens zu einer gegebenen IP-Adresse. Die Implementation des DNS basiert auf verteilt und fehlertolerant betriebenen Nameservern und arbeitet effizient, indem die meisten Abfragen durch ein geschicktes Caching von Information lokal ausgeführt werden können. Dabei kann ein DNS-Client in Kauf nehmen, dass die aus dem Cache gelesene Information möglicherweise veraltet ist (muss dies aber nicht, d.h. er kann eine garantiert korrekte Antwort verlangen). Die Abfrage des DNS kann sowohl verbindungsorientiert über TCP als auch verbindungslos mit UDP erfolgen. Die im DNS gespeicherte Information kann vom Normalbenutzer nicht verändert werden; die Pflege der Daten obliegt den Betreibern von Nameservern, die jeweils für einen oder mehrere Domains zuständig sind. Daraus folgt auch, dass das DNS als allgemeines Benutzerverzeichnis nicht geeignet ist. Mit der Registrierung eines Domains auf der zweiten Hierarchieebene (z.B. subd.ch) ist zwingend der Nachweis verbunden, dass der Betreiber dieses Domains einen 10 Prof. B. Plattner, 2.1.99 Nameserver nach den Qualitätsanforderungen des Internet anbietet und an Ebene 1 angeschlossen ist. B.7 Die neue Generation von IP-Protokollen Der ursprüngliche Design von TCP/IP hat sich unzweifelhaft sehr gut bewährt, ermöglichte er doch ein Wachstum der damit realisierten Netze von einigen zehn zu einigen Millionen angeschlossenen Rechnern. Der Boom des Internet in den frühen neunziger Jahren zeigte jedoch, dass der Adressraum der IP-Adressen (32 Bit 32 Adressen, entsprechend 2 Host-Adressen), zu klein ist. Dies bedeutet nicht, dass ein Grossteil der zur Verfügung stehenden Adressen wirklich belegt ist; der Engpass betrifft vielmehr die verfügbaren Netznummern, insbesondere Netze der Adressklasse B, die für mittlere und grössere Organisationen wichtig sind. Es ergab sich somit mittelfristig der Bedarf, die Adressierungskapazität der Internet-Protokolle zu vergrössern. Die IETF erkannte das Problem und startete 1992 einen Prozess, in welchem die Anforderungen an die neue Protokollgeneration definiert uns aus einer Anzahl von Kandidaten ein geeignetes Protokoll ausgewählt wurde. Das neue IP-Protokoll erhielt die Versionsnummer 6 und die Bezeichnung IPv6; die ganze Familie von neuen Protokollen, bestehend aus IPv6 und neuen Versionen von ICMP, TCP und vielen anderen Protokollen wird unter dem Begriff IP Next Generation (IPng) zusammengefasst. Neben der Vergrösserung des Adressraums wurden bei der Entwicklung von IPng weitere notwendige Verbesserungen an der Funktionalität der Protokolle vorgenommen: Einführung von Sicherheits-Dienstelementen (Verschlüsselung, Authentizität und Integrität von Nachrichten). Unterstützung von Multicasting, d.h. das Senden an mehrere Empfänger in einer Operation, im Basisprotokoll. Unterstützung von multimedialen Anwendungen mit Echtzeiteigenschaften durch Reservierung von Ressourcen. Unterstützung von mobilen Benutzern. Verhinderung von Überlastsituationen. Wir können an dieser Stelle nicht im Detail auf die - zur Zeit noch nicht abgeschlossenen - Arbeiten an IPng eingehen. Wir fassen jedoch die grundlegenden Eigenschaften des neuen IP-Protkolls (IPv6) nachfolgend zusammen. IPv6 verwendet nach wie vor den Ansatz eines Datengramm-Netzes, in welchem Pakete als voneinander weitgehend unabhängige Datengramme übertragen werden. Das Paketformat wurde jedoch stark vereinfacht, indem im Basisprotokoll nur die minimal notwendigen Funktionen untergebracht wurden. Abbildung 1 illustriert das neue Paketformat. 11 Prof. B. Plattner, 2.1.99 Version Priority Payload Length Flow Label (20 bits) Next Header Hop Limit Source Address (128 bits) Destination Address (128 bits) Bild 1 Das Format von IPv6-Datengrammen Die Abbildung zeigt diejenigen Felder, die in jedem IPv6-Datengramm jeweils im gleichen Format enthalten sind. Feldname (engl.) Feldname (deutsch) Version Versionskennung Dieses Feld identifiziert das Datengramm als ein IPv6Datengramm (es hat den Wert 6). Damit ist es grundsätzlich möglich, IPv6-Datengramme und solche der bisherigen Version 4 über die gleiche Leitung zu übertragen und voneinander zu unterscheiden. Priority Priorität Gestattet die Festlegung einer Priorität für ein Paket. (Gestattet Entscheid über relativen Zeitpunkt der Weiterleitung eines Pakets oder dessen Entfernung, wenn Ressourcen knapp sind). Flow Label Flusskennung Kann verwendet werden, um Pakete, die zu ein- und derselben Kommunikationsbeziehung gehören, zu markieren Payload Length Länge der Nutzlast Bedeutung/Verwendung Next Header Angabe über den Typ des in der Payload enthaltenen nächsten Headers Hop Limit Maximale Anzahl Hops, die das Paket zurücklegen kann, bevor es entfernt wird Source Address Absenderadresse Destination Address Empfängeradresse • Das Format des Headers wurde - zugunsten einer schnellen Verarbeitung in Routern - stark vereinfacht. 12 Prof. B. Plattner, 2.1.99 • Anstelle von Optionen werden für die verschiedenen Anwendungsfälle spezielle Headers verwendet, die über die “next header”-Felder miteinander verknüpft sind. Damit wird die grosse Mehrheit der Pakete das oben abgebildete Standardformat haben und kann so schnell weitergeleitet werden. • Die Felder Priority und Flow Label sind vor allem für die Multimedia-Kommunikation vorgesehen. • Die Länge der Nutzlast ist auf 64kByte beschränkt. Allerdings wurde (vor allem für Supercomputer-Anwendungen) ein sog. Jumbo Payload Header definiert, der sehr grosse Datengramme zulässt. • Der bisherige Parameter “Time to Live” wurde explizit mit einer maximalen Zahl von Hops ersetzt, da dieses Feld in der Praxis immer so verwendet wurde. Hop Limit dient nach wie vor dazu, zu lange im Netz verbleibende Pakete zu entfernen. Mit der Einführung eines neuen Internet-Protokolls sind vielfältige Anpassungen in anderen Protokollen notwendig. Betroffen sind u.a. die Transportprotokolle TCP und UDP (wegen der Art, wie Prüfsummen berechnet werden), das Internet Control Message Protocol, welches zusätzlich die Funktion der Verwaltung von Multicast-Gruppen (bisher Internet Group Management Protocol, IGMP), sowie das Domain Name System. Viele Anwendungen müssen mindestens neu übersetzt werden, da die meisten interne Datenstrukturen für die Speicherung von IP-Adressen haben. B.8 Literatur [1] McQuillan; Walden, D.C.: The ARPA Network Design Decisions, Computer Networks and ISDN Systems, Vol. 1, 1977, 243-289. [2] Cerf, V. and Kahn, R. (1974): A Protocol for Packet Switching Network Interconnection, IEEE Transactions on Communications, vol. COM-22, pp. 637-648, May 1974. [3] Cerf, V. (1993) How the Internet Came to Be, in “The On-line User's Encyclopedia” by Bernard Aboba, Addison-Wesley, Nov. 1993, ISBN 0-201-62214-9. [4] RFC 1310: “Procedures for Internet Standards”. [5] Comer, D.E.: Internetworking with TCP/IP, Vol. I, fourth edition, Prentice Hall, 1995. [6] A.V. Aho, J.E. Hopcroft, J.D. Ullmann, “Data Structures and Algorithms”, Addison-Wesley, 1985. [7] E.W. Dijkstra, “A note on two problems in connexion with graphs”, Numerische Mathematik 1 (1959), pp. 269-271. 13