TCP/IP-Kurzübersicht

Werbung
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
Herunterladen