IP - Das Internet-Protokoll
Michael Daub
Inhaltsverzeichnis
1. Ein neues Netz entsteht
2. Der Aufbau des Internet
2.1 Die IP-Adresse
3. Das Protokoll
3.1 IP im OSI-Modell
3.2 Der IP Header
4. Routing
4.1 Lokale Auslieferung
4.1.1 ARP - Address Resolution Protocol
4.2 Transport über Gateways
5. Was die Zukunft bringt: IPv6
Abkürzungsverzeichnis
Literatur
Im Jahre 1969 beauftragte das amerikanische Verteidigungsministerium
mehrere Universitäten und Forschungsinstitute mit der Entwicklung
einer neuartigen Netzwerkarchitektur. Die Zielsetzung galt zum einen
der Zusammenschaltung einzelner lokaler inkompatibler Netzwerke
unterschiedlicher Standards über grosse Entfernungen, und zum anderen
sollte das neue Netz eine grosse Ausfallsicherheit aufweisen, das
heisst im Falle eines Defektes sollte nicht das ganze Netz
zusammenbrechen, und wenn möglich sollten defekte Komponenten
transparent für den Benutzer durch andere Komponenten automatisch
ersetzt werden. Als Ergebnis endstanden die Protokolle um die TCP/IP -
Familie welche seit 1983 der Standard für die Netze des amerikanischen
Verteidigungsministeriums sind.
Mit der Zeit erhielten auch andere wissenschaftliche Institutionen
Zugriff auf das Internet, welches anfangs rein militärische Zwecke
erfüllte. Im Laufe der neunziger Jahre öffnete sich das Internet auch
kommerziellen Anbietern und Privatpersonen, um 1995/1996 fassten die
ersten kommerziellen Internet-Provider in Deutschland Fuss, anfangs
noch zu hohen Preisen, doch seit Ende der neunziger Jahre ist ein
privater Internetzugang für einen Grossteil der Bevölkerung bezahlbar
geworden.
Das Internet-Protokoll ist ein verbindungsloses Protokoll, das heisst
es besteht keine direkte logische Verbindung zwischen Sender und
Empfänger. Der Sender schickt Pakete los, welche so lange von Computer
zu Computer weitergereicht werden, bis sie den Empfänger schliesslich
erreichen oder als unzustellbar verworfen werden.
Auf globaler Ebene betrachtet setzt sich das Internet aus
untereinander verbundenen Knotenpunkten zusammen (siehe Abb. 2.1),
welche ein weites, unübersichtliches Netz aufspannen. Die Knotenpunkte
können hierbei als Städte oder ganze Länder interpretiert werden, die
durch Datenleitungen miteinander verbunden sind.
Abb. 2.1: Das Internet im globalen Massstab
Sollte hier unerwartet eine Verbindung ausfallen, zum Beispiel die
zwischen Punkt A und B (hier rot angedeutet) so können diese beiden
Punkte immer noch auf einem Umweg über C miteinander kommunizieren
(angedeutet durch die blaue Linie). Genauso kann Punkt D mit Punkt B
über Punkt E kommunizieren (grüne Linie), auch wenn die Kommunikation
aus Kostengründen standardmässig über Punkt A geleitet werden
würde. Hierzu müssen die einzelnen Knotenpunkte miteinander
kommunizieren und ihre Routing-Tabelle dynamisch anpassen. Das
Routing ist dafür verantwortlich, dass Pakete in die für sie
sinnvollste Richtung weitergeleitet werden, damit sie ihrem
Zielrechner immer näher kommen. Man kann die Verbindungsleitungen als
Strassen interpretieren und die Router, die die Schnittstelle der
Knotenpunkte nach aussen darstellen, als Kreuzungen. Dann kann man die
Routing-Tabelle als Wegweiser deuten, die jedem Paket zeigt in welche
Richtung es weitergeleitet werden muss. Da diese Routing-Tabellen
dynamisch angepasst werden können, bieten sich hier vielfältige
Möglichkeiten zur Umgehung defekter Strukturen an, woraus die hohe
Fehlertoleranz des Internet resultiert.
Wenn man nun in die kleinsten Strukturen des Internet vordringt (siehe
Abb. 2.2) erkennt man die bereits in Abschnitt 1 beschriebenen lokalen
Netzwerke, welche in der Abbildung durch die zwei ovalen Markierungen
gekennzeichnet sind. Sie sind durch Router (grün gekennzeichnet), die
ebenfalls Teil des Netzes sind, aber mehrere Netzwerkschnittstellen
besitzen, mit anderen Netzen oder Routern verbunden. Auf diese Weise
können mehrere kleine Netzwerke zu einem grossen Netzwerk
zusammengefasst werden, hier durch den grossen orangefarbene Rahmen
gekennzeichnet. Hierbei bilden die kleineren Netze Unternetze,
sogenannte Subnetze innerhalb des grossen Netzwerks.
Abb. 2.2: Das Internet auf lokaler Ebene
Um in einem Netzwerk eindeutig identifizierbar zu sein benötigt ein
Teilnehmer zwangsläufig eine eindeutige Kennung. Diese Aufgabe
übernimmt im Internet die IP-Adresse.
Die IP-Adresse ist ein 32-Bit-Wort welches sich in zwei Bereiche
spaltet, nämlich den Netzanteil, der durch die höherwertigen Bits
repräsentiert wird, und den Hostanteil. Obwohl die IP-Adresse meist
als Folge von 4 Oktetten (Bytes) geschrieben wird, sind diese Grenzen
nicht für die Grösse des Netz-/Hostindex bindend, das heisst es wäre
beispielsweise auch ein Netz mit 20 Bit Netzanteil und 12 Bit
Hostanteil möglich. Der Netzanteil definiert dabei das Netwerk, in dem
sich ein Rechner befindet, und der Hostanteil indiziert den Rechner
innerhalb dieses Netzwerkes. So kann ein Netzwerk mit 24 Bit
Netzanteil und 8 Bit Hostanteil maximal 254 Rechner aufnehmen. Der
Hostindex 0 ist reserviert und steht für das gesamte Netzwerk, ebenso
ist ein Hostindex, der nur aus Einsen besteht (hier 11111111 binär)
als Multicast-Adresse reserviert, was soviel heisst wie dass
bei dieser Adresse alle Rechner des Netzwerks angesprochen werden.
Abb. 2.3: Die IP-Adresse
Wenn wir uns nochmals Abb. 2.2 betrachten, stellen wir fest, dass es
verschiedene Ebenen von Netzen gibt, dies lässt weitreichende
Interpretationen für den Netz- und Hostanteil der IP-Adresse zu. In
der Praxis wird allerdings meistens die kleinste Netzstruktur, in der
sich ein Rechner befindet, als Heimatnetz interpretiert. In unserem
Beispiel wäre 129.13 der Netzanteil des grossen Netzes (129.13.0.0)
und 129.13.64 der Netzanteil des Subnetzes (129.13.64.0).
Um nun die Netzadresse aus einer gegebenen IP-Adresse zu extrahieren
wurde die sogenannte Netzmaske eingeführt. Sie ist ebenfalls
ein 32-Bit-Wert, wobei die höherwertigen Bits, welche bei der
IP-Adresse das Netz indizieren, aus Einsen bestehen und die Bits des
Hostanteils aus Nullen. Somit werden durch eine AND-Verknüpfung mit
der IP-Adresse alle Host-Bits auf Null gesetzt und man erhält dadurch
die eigene Netzwerkadresse. Dieser Schritt ist besonders für das
Routing von Bedeutung, welches in Kapitel 4 behandelt wird.
Während in der Theorie die Grösse der Netzwerkadressen unerheblich
ist, wurden in der Praxis bestimmte Konventionen getroffen um die
Vergabe von IP-Adressen etwas zu erleichtern. So wurden die
IP-Adressen in verschiedene Klassen aufgeteilt, mit jeweils 8, 16 und
24 Bit Netzanteil. Im Hostanteil dieser Netze können sich dann wieder
Subnetze befinden, wobei die Verantwortung für deren Konfiguration und
Wartung nun allein beim Netzbetreiber liegt und nicht mehr von einer
globalen Institution geregelt werden muss.
Abb. 2.4: Klasseneinteilung der IP-Adressen
Abschliessend seien noch einige speziellen IP-Adressen erwähnt:
- 127.*.*.* : Das sogenannte loopback device, welches zu
Testzwecken entwickelt wurde und im Prinzip eine Schleife auf den
eigenen Rechner darstellt.
- 127.0.0.0 : Localnet; man kann den eigenen Computer als
als Netzwerk betrachten, an dem nur ein Host hängt, nämlich er selbst.
- 127.0.0.1 : Localhost; der erste (und einzige) Rechner im
Localnet, das heisst der eigene Rechner. Erzielt den gleichen Effekt
wie die eigene IP des genutzten Rechners.
- alle Bits des Hostanteils auf 1 : Multicast, alle Rechner des
Netzwerkes erhalten das gesendete Paket.
- alle Bits des Netzanteils auf 0 : Eigenes Netzwerk, wird
interpretiert wie wenn der Netzanteil auf das eigene Netz zeigen
würde.
Dieser Abschnitt wird sich mit den Datagrammen und der Einbindung von
IP in andere Programmstrukturen beschäftigen.
Abb. 3.1: IP im Schichtenmodell
Das ISO-OSI-Modell spaltet die Vorgänge bei der Datenübertragung in
verschiedene Komponenten, um die Kommunikation zwischen verschiedenen
Standards zu erleichtern. Jede Schicht hat eine fest definierte
Aufgabe, und die Schichten sind übereinander gestapelt (protocol
stack). Auf der 1. Ebene befindet sich die physikalische Schicht,
repräsentiert durch die Netzwerk-Hardware, die die Verbindung zu den
physikalischen Signalen, die auf die Leitungen bzw. das
Übertragungsmedium gegeben werden, darstellt. An zweiter Stelle steht
die sogenannte Datensicherungsschicht welche sich aus der
Logical Link Control (LLC), welche die Schnittstelle zur
nächsthöheren ISO-Schicht darstellt, und der darunter liegenden
Media Access Control (MAC) zusammensetzt. Die Aufgabe dieser
Schicht ist die Ansteuerung der Netzwerk-Hardware. Sie wird durch ein
Protokoll implementiert, dessen Aufgabe es ist, die direkte
Übertragung innerhalb eines physikalischen Netzes zwischen zwei
benachbarten Computern zu regeln. Auf Ebene 3 wird schliesslich das
Internet-Protokoll eingebunden, dessen Aufgabe es ist, ein Datenpaket
vom sendenden Rechner über mehrere Zwischenschritte zum Zielrechner zu
transportieren. Auf Ebene 4 setzen dann höhere Protokolle auf, wie
beispielsweise TCP oder UDP [1]. Für die Übertragung zum
Zielrechner sind die Ebenen 1 bis 3 des OSI-Modells zuständig, der
Zielrechner erhält die unveränderten Pakete der Schicht 4.
Ein Protokoll besteht aus zwei wichtigen Elementen: Zum einen die
Nutzdaten, das sind die Daten, die transportiert werden sollen, und
protokollspezifische Steuerdaten, die zur Erfüllung der Aufgabe des
entsprechenden Protokolls wichtig sind. Darunter fällt unter anderem
auch die Empfängeradresse. Die Steuerdaten selbst werden meist am
Anfang des Datenpaketes als sogenannter Header gesendet und
danach die Nutzdaten angehängt (siehe Abb. 3.1). Im folgenden
Abschnitt wollen wir uns mit dem Header des Internet Protokolls
beschäftigen und daran dessen Fähigkeiten beurteilen.
Der IP Header
- Die wichtigsten Felder des IP Headers sind wohl die Absender-
und Empfängeradresse. Hier stehen die IP-Adressen des Quell- und
des Zielrechners.
- Version gibt die Version des verwendeten Internet
Protokolls an. Die aktuell verwendete Version ist 4 (IPv4), jedoch hat
momentan bereits eine Umstellung auf IPv6 in einigen Teilen des Netzes
begonnen.
- Die Internet Header Length (IHL) gibt die Länge des
IP-Headers in 32-Bit-Worten an. Der IP Header unterstützt zusätzliche
Optionen welche an den Standardteil des Headers angehängt
werden können. Mittels des IHL-Eintrags lässt sich dann feststellen,
wie viel Bytes noch für Optionen reserviert worden sind, bevor die
eigentlichen Nutzdaten im IP-Paket beginnen.
- Im Type of Service - Feld kann man den Typ der
transportierten Daten angeben bzw. deren Prioritäten festlegen wie
beispielsweise hohe Zuverlässigkeit, Geschwindigkeit, oder maximaler
Durchsatz. Leider wird dieses Feld nur von wenigen Routern wirklich
unterstützt, weshalb man durch entsprechende Eintragungen keinen
besonderen Performance-Gewinn erwarten kann.
- Gesamtlänge gibt die Länge des IP-Paketes (inklusive
Header) in Bytes an.
- Da das Internet-Protokoll Pakete mit einer maximalen Grösse von 64
KB unterstützt, ist es manchmal notwendig, diese Pakete zu zerstückeln
um sie auf Netzwerken zu übertragen, die nur geringere Paketgrössen
zulassen. So kann z.B Ethernet mit maximalen Paketgrössen von 1501
Bytes arbeiten. Durch das Feld Kennung erhält jedes IP-Paket
einen eindeutigen Bezeichner, durch welchen die Fragmente später
wieder dem richtigen Paket zugeordnet werden können. Schliesslich gibt
es im Internet-Protokoll keine Gewährleistung, dass beim Empfänger
alle Pakete oder Fragmente in der richtigen Reihenfolge
ankommen. Mittels des Fragment-Offset werden die einzelnen
Fragmente durchnummeriert, damit sie später in richtiger Reihenfolge
wieder zusammengesetzt werden können. Das Flag More Fragments
(MF) weist hierbei darauf hin, dass noch mehrere Fragmente nach
ihm erwartet werden um das komplette IP-Paket wiederherzustellen. Mit
dem Don't Fragment (DF) Flag kann man veranlassen, dass das
Paket nicht fragmentiert wird. Allerdings ist dann keine effiziente
Auslieferung mehr gewährleistet, eventuell kann das Paket auch gar
nicht ausgeliefert werden.
- Da Datenpakete keine fest gewählte Route verfolgen, kann es
passieren, dass ein Paket seinen Empfänger einmal nicht finden
kann. Dieses Paket würde dann ewig von einem Router zum anderen
übergeben werden. Um derartige 'Geisterpakete' zu vermeiden hat man
dem IP-Paket ein 'Verfallsdatum' aufgedrückt welches sich im Feld
Time to Live befindet. Ursprünglich sollte dieses Feld die Zahl
der verbleibenden Sekunden für das Paket repräsentieren, da dies
jedoch nicht effizient realisierbar ist, ist man dazu übergegangen in
diesem Feld die maximale Anzahl der hops zu übergeben, das
heisst die maximale Anzahl der Zwischenschritte, bei denen ein Paket
durch einen Router weitergeleitet werden darf. Ist dieser Wert
abgelaufen bevor das Paket seinen Zielrechner erreicht hat, wird es
verworfen.
- Um den Typ der Nutzdaten etwas zu spezifizieren beziehungsweise
die nächst höhere Weiterverarbeitungsstufe auswählen zu können
existiert ein Feld, welches einen Index auf das für die Nutzdaten
verwendete Protokoll (z.B. TCP, UDP) enthält.
- Schliesslich lässt sich mit einer Prüfsumme die Integrität
des Headers feststellen.
Die eigentliche Aufgabe des Internet-Protokolls ist das Routing, die
Bestimmung eines sinnvollen Weges durch ein Netz von Datenleitungen um
effizient Pakete ausliefern zu können. Das Routing wird von
sogenannten Routern übernommen, Rechner, deren einzige Aufgabe
es ist die Kommunikationsschnittstelle zwischen mehreren
physikalischen Netzwerken herzustellen. Über diese Rechner werden
Datenpakete weitergereicht, bis sie schliesslich den Zielrechner
erreichen. Nun stellt sich natürlich für den Router die Frage, an wen
er einzelne Datenpakete weitersenden soll. In der Praxis wird dies
durch eine Routing-Tabelle geregelt, welche man als Wegweiser
an Kreuzungen des Datenverkehrsnetzes interpretieren kann. Diese
Tabelle ist nach folgendem Schema aufgebaut:
[IP/Netz] [Netzmaske] [Gateway] [Schnittstelle]
Durch die IP- oder Netz-Adresse wird mittels der Netzmaske ein Netz
beschrieben. Sollte die Netzmaske 255.255.255.255 verwendet werden, so
handelt es sich um einen einzelnen Rechner mit einer einzelnen
IP-Adresse. In der Praxis läuft beim Routing folgendes ab:
- Datenpaket wird empfangen
- Vergleiche mit erstem Eintrag der Routing-Tabelle
- Verknüpfe Empfängeradresse des Paketes mit der Netzmaske des
Tabelleneintrags
- Vergleiche das Ergebnis mit der IP-/Netz-Adresse der Tabelle
- Falls Übereinstimmung: Sende das Paket auf der in der Tabelle
angegebene Schnittstelle über einen evtl. angegebenen Gateway weiter
- Falls keine Übereinstimmung: Vergleiche mit nächstem Eintrag der
Tabelle
Der letzte Eintrag in der Routing-Tabelle ist der sogenannte
default - Eintrag mit der IP-/Netz-Adresse 0.0.0.0 und der
Netzmaske 0.0.0.0, wodurch durch diesen Eintrag alle noch übrig
gebliebenen Pakete geroutet werden. Somit ist für jedes Paket sein
nächster Schritt definiert.
Sollte ein Paket an einen Rechner versandt werden, der sich im
gleichen physikalischen Netz wie der sendende Rechner befindet, macht
es natürlich wenig Sinn, das Paket über Umwege zu einem Router zu
schicken. Jeder Rechner kann mittels der Netzmaske erkennen, ob ein
Paket im Heimatnetz direkt ausgeliefert werden kann. Da die IP-Adresse
nur eine logische Kennung ist und nicht auf Hardwareebene wirkt,
sondern erst ab dem OSI Level 3, muss nun eine Verbindung zwischen der
IP-Adresse und der physikalischen Übertragungsebene hergestellt
werden. Dazu ist es nötig das Übertragungs- und Adresssystem eines
physikalischen Netzwerkes zu betrachten. Jede Netzwerkkarte besitzt
eine eindeutige aus 6 Bytes bestehende Kennung, die sogenannte
MAC-Adresse. Diese Adresse ist direkt auf der Hardware einer
Netzwerkkarte abgespeichert und jede Adresse existiert weltweit nur
einmal. Diese Adresse wird als Empfänger-Adresse auf der Ebene der
LLC-Schicht verwendet. Somit muss jeder Rechner und Router
entsprechend der IP-Adresse eine MAC-Adresse bestimmen, an welche das
entsprechende Paket gesandt wird.
Um die Verbindung zwischen IP-Adresse und MAC-Adresse herzustellen
wurde das Adress Resolution Protocol (ARP) entwickelt, welches neben
IP existiert und nicht eines der höheren Protokolle darstellt. Jeder
Rechner legt dabei einen ARP-Cache an, in welchem er
verifizierte Paare von IP- und MAC-Adressen ablegt. Um die MAC-Adresse
einer unbekannten IP-Adresse zu erfahren schickt der Rechner einen
sogenannten ARP request per Broadcast auf das Netz, das heisst,
dieses Paket wird von allen mit dem Netzwerk verbundenen Rechnern
empfangen. Hat einer unter ihnen die gesuchte IP, so schickt er eine
Antwort, in welcher er seine MAC-Adresse mitteilt.
Wenn man den Netzwerkverkehr betrachtet, könnte eine
ARP-Kommunikation, die Datenpakete in Worte gefasst, in etwa so
aussehen (129.13.64.254 sucht 129.13.64.5):
arp who-has 129.13.64.5 tell 129.13.64.254
arp reply 129.13.64.5 is-at 00-E0-4C-C5-17-0D
Erkennt der Rechner, dass ein Ziel nicht innerhalb des eigenen Netzes
liegt, so sendet er es an den für sein Netz zuständigen
Gateway, welcher die Schnittstelle nach aussen
darstellt. Dieser hat dann in seiner Funktion als Router die Aufgabe
das Paket weiterzuleiten.
Diese indirekte Auslieferung findet schrittweise statt. Das Paket wird
von einem Rechner zum nächsten weitergereicht, und genau diese
einzelnen Schritte lassen sich als direkte Auslieferung gemäss
Abschnitt 4.1 interpretieren, wobei jeweils der folgende Router
temporärer Zielrechner ist. Eine indirekte Auslieferung wird sozusagen
in mehrere direkte Auslieferungen verpackt.
Inzwischen ist das Internet so sehr gewachsen, dass IPv4 an seine
Grenzen stösst, besonders die IP-Adressen gehen langsam zur
Neige. Deshalb wurde IPv6 entwickelt, welches der alten Version
gegenüber einige grosse Vorteile besitzt.
Die IP-Adresse wurde von 32 Bit auf 128 Bit erweitert. Dieser
Adressraum sollte dir nächsten Jahrzehnte ausreichen... dies ist
umgerechnet auf die Oberfläche der Erde 667 Billiarden Adressen pro
Quadratmillimeter oder 6,5 * 10^28 Adressen pro Mensch [2]. Zur
Wahrung der Kompatibilität mit IPv4-Teilen des Netzes wurde extra ein
kleiner Bereich des neuen Adressraumes für die alten 32-Bit-Adressen
reserviert, damit die Umstellung eines Systems auf IPv6 ohne grösseren
Aufwand verläuft und keine plötzliche Reorganisation des gesamten
Internet nötig ist (welche auch realistisch nicht durchführbar wäre).
Neben der neuen IP-Adresse wurde der neue Header des Protokolls noch
einfacher gestaltet, er enthält nur noch 7 anstatt 13 Felder. Einzelne
weniger wichtige Felder können nachträglich im Optionsblock eingefügt
werden. Die Beachtung des Datentyps soll verbessert worden sein, das
heisst, das was man in IPv4 mit dem Feld Type of Service
erreichen wollte, funktioniert nun endlich. IPv6 soll verbesserte
Sicherheit liefern und Roaming ermöglichen, das heisst, man
sollte sich an verschiedenen Zugangspunkten mit der gleichen
IP-Adresse ins Netz einklinken, dies ermöglicht eine feste IP-Adresse
unabhängig vom aktuellen Standort, was vor allem für Mobile Computing
interessant sein dürfte.
Schliesslich ist IPv6 ein sehr flexibles Protokoll, das lange Zeit
neben dem alten IPv4 existieren kann und auch für die Zukunft
Möglichkeiten zur Erweiterung und Verbesserung bietet.
- ARP - Address Resolution Protocol
- IP - Internet Protocol
- IPv4 - Internet Protocol Version 4
- IPv6 - Internet Protocol Version 6
- ISO - International Standardization Organization
- LLC - Logical Link Control
- MAC - Media Access Control
- OSI - Open System Interconnection
- TCP - Transfer Control Protocol
- UDP - User Datagram Protocol
|
Letzte Änderung: 2001-02-16 16:02:56
|