Internet-Schicht
Das Internet ist eine Sammlung von Teilnetzen, die miteinander
verbunden sind. Es gibt keine echte Struktur des Netzes, sondern
mehrere größere Backbones, die quasi das Rückgrat
(wie der Name Backbone ja schon sagt) des Internet bilden. Die
Backbones werden aus Leitungen mit sehr hoher Bandbreite und
schnellen Routern gebildet. An die Backbones sind wiederum größere
regionale Netze angeschlossen, die LANs von Universitäten,
Behörden, Unternehmen und Service-Providern verbinden.

"Das Internet" (Quelle: [Ta96]).
Internet Protokoll
Das Internet Protokoll (Internet Protocol - IP) ist der
Leim, der dies alles zusammenhält. IP stellt die Basisdienste
für die Übermittlung von Daten in TCP/IP-Netzen bereit und
ist im RFC 791 spezifiziert. Hauptaufgaben des Internet Protokolls
sind die Adressierung von Hosts und das Fragmentieren von Paketen.
Diese Pakete werden von IP nach bestem Bemühen ("best
effort") von der Quelle zum Ziel befördert, unabhängig
davon, ob sich die Hosts im gleichen Netz befinden oder andere Netze
dazwischen liegen. Garantiert ist die Zustellung allerdings nicht.
Das Internet Protokoll enthält keine Funktionen für die
Ende-zu-Ende-Sicherung oder für die Flußkontrolle.
Die Funktionen von IP umfassen:
- Die Definition von Datengrammen, welche die Basiseinheiten für
die Übermittlung von Daten im Internet bilden.
- Definition des Adressierungsschemas.
- Übermittlung der Daten von der Transportebene zur
Netzwerkschicht.
- Routing von Datengrammen durch das Netz.
- Fragmentierung und Zusammensetzen von Datengrammen.
IP ist ein verbindungsloses Protokoll, d.h. zur
Datenübertragung wird keine Ende-zu-Ende-Verbindung der
Kommunikationspartner etabliert. Ferner ist IP ein unzuverlässiges
Protokoll, da es über keine Mechanismen zur Fehlererkennung und
-behebung verfügt. Unzuverlässig bedeutet aber keinesfalls,
daß man sich auf das IP Protokoll nicht verlassen kann.
Unzuverlässig bedeutet in diesem Zusammenhang lediglich, daß
IP die Zustellung der Daten nicht garantieren kann. Sind die Daten
aber beim Zielhost angelangt, sind diese Daten auch korrekt.
IP-Datengramm
Die TCP/IP-Protokolle wurden entwickelt, um Daten über ein
paketvermittelndes Netz (wie dem ARPANET) zu übertragen. Ein
Paket ist ein Datenblock zusammen mit den Informationen, die
notwendig sind, um sie dem Empfänger zuzustellen (ein Paket ist
also nichts anderes als ein Paket im herkömmliche Sinn bei der
Post - das Paket enthält die Daten, auf dem Paket ist die
Adresse des Empfängers notiert). Das Datengramm (datagram)
ist das Paketformat, das vom Internet Protokoll definiert ist. Ein
IP-Datengramm besteht aus einem Header und den zu übertragenden
Daten. Der Header hat einen festen 20 Byte großen Teil, gefolgt
von einem optionalen Teil variabler Länge. Der Header umfaßt
alle Informationen, die notwendig sind, um das Datengramm dem
Empfänger zuzustellen. Ein Datengramm kann theoretisch maximal
64 KByte groß sein, in der Praxis liegt die Größe
ungefähr bei 1500 Byte (das hängt mit der maximalen
Rahmengröße des Ethernet-Protokolls zusammen).

Der IP-Header.
Die Felder des in der Abbildung dargestellten Protokollkopfes
haben die folgende Bedeutung:
- Version:
- Das Versions-Feld enthält die Versionsnummer des IP-Protokolls.
Durch die Einbindung der Versionsnummer besteht die Möglichkeit
über eine längere Zeit mit verschiedenen Versionen des IP
Protokolls zu arbeiten. Einige Hosts können mit der alten und
andere mit der neuen Version arbeiten. Die derzeitige Versionsnummer
ist 4, aber die Version 6 des IP Protokolls befindet sich bereits
in der Erprobung (siehe [HLW97],
[Hinden], [Ho96],
[Kus94], [Nierle],
[Ta96], [WiN]).
- Length:
- Das Feld Length (Internet Header Length - IHL) enthält
die Länge des Protokollkopfs, da diese nicht konstant ist. Die
Länge wird in 32-Bit-Worten angegeben. Der kleinste zulässige
Wert ist 5 - das entspricht also 20 Byte; in diesem Fall sind im Header
keine Optionen gesetzt. Die Länge des Headers kann sich durch
Anfügen von Optionen aber bis auf 60 Byte erhöhen (der Maximalwert
für das 4-Bit-Feld ist 15).
- Type of Servive:
- Über das Feld Type of Service kann IP angewiesen werden
Nachrichten nach bestimmten Kriterien zu behandeln. Als Dienste sind
hier verschiedene Kombinationen aus Zuverlässigkeit und Geschwindigkeit
möglich. In der Praxis wird dieses Feld aber ignoriert, hat also
den Wert 0. Das Feld selbst hat den folgenden Aufbau:

Precedence (Bits 0-2) gibt die Priorität von 0 (normal)
bis 7 (Steuerungspaket) an. Die drei Flags (D,T,R) ermöglichen
es dem Host anzugeben, worauf er bei der Datenübertragung am
meisten Wert legt: Verzögerung (Delay - D), Durchsatz (Throughput
- T), Zuverlässigkeit (Reliability - R). Die beiden anderen Bit-Felder
sind reserviert.
- Total Length:
- Enthält die gesamte Paketlänge, d.h. Header und
Daten. Da es sich hierbei um ein 16-Bit-Feld handelt ist die Maximallänge
eines Datengramms auf 65.535 Byte begrenzt. In der Spezifikation von
IP (RFC 791) ist festgelegt, daß jeder Host in der Lage sein
muß, Pakete bis zu einer Länge von 576 Bytes zu verarbeiten.
In der Regel können von den Host aber Pakete größerer
Länge verarbeitet werden.
- Identification:
- Über das Identifikationsfeld kann der Zielhost feststellen,
zu welchem Datengramm ein neu angekommenes Fragment gehört. Alle
Fragmente eines Datengramms enthalten die gleiche Identifikationsnummer,
die vom Absender vergeben wird.
- Flags:
- Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits
namens DF - Don't Fragment und MF - More Fragments.
Das erste Bit des Flags-Feldes ist ungenutzt bzw. reserviert. Die
beiden Bits DF und MF steuern die Behandlung eines Pakets im Falle
einer Fragmentierung. Mit dem DF-Bit wird signalisiert, daß
das Datengramm nicht fragmentiert werden darf. Auch dann nicht, wenn
das Paket dann evtl. nicht mehr weiter transportiert werden kann und
verworfen werden muß. Alle Hosts müssen, wie schon gesagt
Fragemente bzw. Datengramme mit einer Größe von 576 Bytes
oder weniger verarbeiten können. Mit dem MF-Bit wird angezeigt,
ob einem IP-Paket weitere Teilpakete nachfolgen. Diese Bit ist bei
allen Fragmenten außer dem letzten gesetzt.
- Fragment Offset:
- Der Fragmentabstand bezeichnet, an welcher Stelle relativ
zum Beginn des gesamten Datengramms ein Fragment gehört. Mit
Hilfe dieser Angabe kann der Zielhost das Originalpaket wieder aus
den Fragmenten zusammensetzen. Da dieses Feld nur 13 Bit groß
ist, können maximal 8192 Fragmente pro Datengramm erstellt werden.
Alle Fragmente, außer dem letzten, müssen ein Vielfaches
von 8 Byte sein. Dies ist die elementare Fragmenteinheit.
- Time to Live:
- Das Feld Time to Live ist ein Zähler, mit dem die Lebensdauer
von IP-Paketen begrenzt wird. Im RFC 791 ist für dieses Feld
als Einheit Sekunden spezifiziert. Zulässig ist eine maximale
Lebensdauer von 255 Sekunden (8 Bit). Der Zähler muß von
jedem Netzknoten, der durchlaufen wird um mindestens 1 verringert
werden. Bei einer längeren Zwischenspeicherung in einem Router
muß der Inhalt sogar mehrmals verringert werden. Enthält
das Feld den Wert 0, muß das Paket verworfen werden: damit wird
verhindert, daß ein Paket endlos in einem Netz umherwandert.
Der Absender wird in einem solchen Fall durch eine Warnmeldung in
Form einer ICMP-Nachricht (siehe weiter unten) informiert.
- Protocol:
- Enthält die Nummer des Transportprotokolls, an das das Paket
weitergeleitet werden muß. Die Numerierung von Protokollen ist
im gesamten Internet einheitlich. Bisher wurden die Protokollnummern
im RFC 1700 definiert. Diese Aufgabe ist nun von der Internet Assigned
Numbers Authority (IANA) [http://www.iana.org]
übernommen worden. Bei UNIX-Systemen sind die Protokollnummern
in der Datei /etc/protocols abgelegt.
- Header Checksum:
- Dieses Feld enthält die Prüfsumme der Felder im IP-Header.
Die Nutzdaten des IP-Datengramms werden aus Effiziengründen nicht
mit geprüft. Diese Prüfung findet beim Empfänger innerhalb
des Transportprotokolls statt. Die Prüfsumme muß von jedem
Netzknoten, der durchlaufen wird, neu berechnet werden, da der IP-Header
durch das Feld Time-to-Live sich bei jeder Teilstrecke verändert.
Aus diesem Grund ist auch eine sehr effiziente Bildung der Prüfsumme
wichtig. Als Prüfsumme wird das 1er-Komplement der Summe aller
16-Bit-Halbwörter der zu überprüfenden Daten verwendet.
Zum Zweck dieses Algorithmus wird angenommen, daß die Prüfsumme
zu Beginn der Berechnung Null ist.
- Source Address, Destination Address:
- In diese Felder werden die 32-Bit langen Internet-Adressen zur eingetragen.
Die Internet-Adressen werden im nächsten Abschnitt näher
betrachtet (Adressierung auf der Internet-Schicht:
IP-Adressen).
- Options und Padding:
-
- Das Feld Options wurde im Protokollkopf aufgenommen, um die
Möglichkeit zu bieten das IP-Protokoll um weitere Informationen
zu ergänzen, die im ursprünglichen Design nicht berücksichtigt
wurden. Das Optionsfeld hat eine variable Länge. Jede Option
beginnt mit einem Code von einem Byte, über den die Option identifiziert
wird. Manchen Optionen folgt ein weiteres Optionsfeld von 1 Byte und
dann ein oder mehrere Datenbytes für die Option. Das Feld Options
wird über das Padding auf ein Vielfaches von 4 Byte aufgefüllt.
Derzeit sind die folgenden Optionen bekannt:
- End of Option List
- Kennzeichnet das Ende der Optionsliste.
- No Option
- Kann zum Auffüllen von Bits zwischen Optionen verwendet werden.
- Security
- Bezeichnet, wie geheim ein Datengramm ist. In der Praxis wird
diese Option jedoch fast immer ignoriert.
- Loose Source-Routing, Strict Source-Routing
- Diese Option enthält eine Liste von Internet-Adressen, die
das Datagramm durchlaufen soll. Auf diese Weise kann dem Datenpaket
vorgeschrieben werden eine bestimmte Route durch das Internet zu
nehmen. Beim Source-Routing wird zwischen Strict Source and Record
Route und Loose Source and Record Route unterschieden.
Im ersten Fall wird verlangt, daß das Paket diese Route genau
einhalten muß. Desweiteren wird die genommene Route aufgezeichnet.
Die zweite Variante schreibt vor, daß die angegebenen Router
nicht umgangen werden dürfen. Auf dem Weg können aber
auch andere Router besucht werden.
- Record Route
- Die Knoten, die dieses Datengramm durchläuft, werden angewiesen
ihre IP-Adresse an das Optionsfeld anzuhängen. Damit läßt
sich ermitteln, welche Route ein Datengramm genommen hat. Wie anfangs
schon gesagt, ist die Größe für das Optionsfeld
auf 40 Byte beschränkt. Deshalb kommt es heute auch oftmals
zu Problemen mit dieser Option, da weit mehr Router durchlaufen
werden, als dies zu Beginn des ARPANET der Fall war.
- Time Stamp
- Diese Option ist mit der Option Record Route vergleichbar. Zusätzlich
zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs
durch den Knoten vermerkt. Auch diese Option dient hauptsächlich
zur Fehlerbehandlung, wobei zusätzlich z.B. Verzögerungen
auf den Netzstrecken erfaßt werden können.
- Weitere Details zu den Optionen sind in RFC 791 zu finden.
Adressierung auf der Internet-Schicht
Zur Adressierung eines Kommunikationspartners in Form eines
Applikationsprogramms müssen beim Durchlaufen der vier
TCP/IP-Schichten auch vier verschiedene Adressen angegeben werden.
- Eine Netzwerkadresse (z.B. eine Ethernet-Adresse)
- Eine Internet-Adresse
- Eine Transportprotokoll-Adresse
Eine Portnummer
Zwei dieser Adressen finden sich als Felder im IP-Header: die
Internet-Adresse und die Transportprotokoll-Adresse.
Protokollnummern
IP verwendet Protokollnummern, um empfangene Daten an das richtige
Transportprotokoll weiterzuleiten. Die Protokollnummer ist ein einzelnes
Byte im IP-Header. Die Protokollnummern sind im gesamten Internet einheitlich.
Bisher wurden die Protokollnummern im RFC 1700 definiert. Diese Aufgabe
ist nun von der Internet Assigned Numbers Authority (IANA) [http://www.iana.org]
übernommen worden.
Auf UNIX-Systemen sind die Protokollnummern in der Datei
/etc/protocols abgelegt. Diese Datei ist eine einfache
Tabelle, die einen Protokollnamen und die damit verbundene
Protokollnummer enthält. Nachfolgend ist der Inhalt der Datei
/etc/protocols einer aktuellen LINUX-Maschine abgebildet:
heiko@phoenix:~> more /etc/protocols
#
# protocols This file describes the various protocols that are
# available from the TCP/IP subsystem. It should be
# consulted instead of using the numbers in the ARPA
# include files, or, worse, just guessing them.
#
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP # WhatsThis?
raw 255 RAW # RAW IP interface
# End.
Empfängt IP ein Datengramm, in dessen
Header als Protokollnummer 6 eingetragen ist, so werden diese Daten
an das Transmission Control Protocol weitergeleitet; ist die Nummer
17, werden die Daten an das User Datagram Protocol weitergeleitet
etc.
IP-Adressen
Jeder Host und Router im Internet hat eine 32-Bit lange IP-Adresse.
Eine IP-Adresse ist eindeutig: kein Knoten im Internet hat die gleiche
IP-Adresse wie ein anderer. Maschinen, die an mehrere Netze angeschlossen
sind, haben in jedem Netz eine eigene IP-Adresse. Die Netzwerkadressen
wurden bisher vom Network Information Center (NIC) [http://www.internic.net]
vergeben, um Adresskonflikte zu vermeiden. Seit einiger Zeit hat diese
Aufgabe die Internet Assigned Numbers Authority (IANA) [http://www.iana.org]
bzw. ihre Vertreter in den verschiedenen Gebieten - Asia Pacific
Network Information Center (APNIC), American Registry for Internet
Numbers (ARIN), Réseaux IP Européens (RIPE) - übernommen.
Die Adressen werden nicht einzeln zugeordnet, sondern nach Netzklassen
vergeben. Beantragt man IP-Adressen für ein Netz, so erhält
man nicht für jeden Rechner eine Adresse zugeteilt, sondern einen
Bereich von Adressen, der selbst zu verwalten ist.

IP-Adreßformate.
Wie die obere Abbildung zeigt, sind IP-Adressen in verschiedene
Klassen, mit unterschiedlich langer Netzwerk- und Hostadresse,
eingeteilt. Die Netzwerkadresse definiert das Netzwerk, in dem
sich ein Host befindet: alle Hosts eines Netzes haben die gleiche
Netzwerkadresse. Die Hostadresse identifiziert einen bestimmten
Rechner innerhalb eines Netzes.
Ist ein Host an mehrere Netze angeschlossen, so hat er für jedes
Netz eine eigene IP-Adresse.
"Eine IP-Adresse identifiziert keinen bestimmten Computer [Host],
sondern eine Verbindung zwischen einem Computer [Host] und einem
Netz. Einem Computer [Host] mit mehreren Netzanschlüssen
(z.B. ein Router) muß für jeden Anschluß eine
IP-Adresse zugewiesen werden." ([Co98])
IP-Adressen sind 32-Bit große Zahlen, die normalerweise
nicht als Binärzahl, sondern in gepunkteten Dezimalzahlen
geschrieben werden. In diesem Format wird die 32-Bit große Zahl
in 4 Byte getrennt, die mit Punkten voneinander getrennt sind. Die
Adresse 01111111111111111111111111111111 wird so z.B. als
127.255.255.255 geschrieben. Die niedrigste IP-Adresse ist 0.0.0.0.,
die höchste 255.255.255.255.
Wie zuvor gesagt, sind IP-Adressen in Klassen unterteilt. Der Wert
des ersten Bytes gibt die Adressklasse an:
Adreßklasse |
Erstes Byte |
Bytes für die Netzadresse |
Bytes für die Hostadresse |
Adreßformat* |
Anzahl Hosts |
Klasse A |
1-126 |
1 |
3 |
N.H.H.H |
224 (~16 Mio.) |
Klasse B |
128-191 |
2 |
2 |
N.N.H.H |
216 (~64000) |
Klasse C |
192-223 |
3 |
1 |
N.N.N.H |
254 |
*N steht für einen Teil der Netzadresse,
H für einen Teil der Hostadresse.
|
- Klasse A:
- Das erste Byte hat einen Wert kleiner als 128, d.h. das erste
Bit der Adresse ist 0. Das erste Byte ist Netzwerknummer, die
letzten drei Bytes identifizieren einen Host im Netz. Es gibt
demzufolge also 126 Klasse A Netze, die bis zu 16 Millionen Host in
einem Netz.
- Klasse B:
- Ein Wert von 128 bis 191 für das erste Byte (das erste
Bit ist gleich 1, Bit 2 gleich 0) identifiziert eine Klasse B
Adresse. Die ersten beiden Bytes identifizieren das Netzwerk, die
letzen beiden Bytes einen Host. Das ergibt 16382 Klasse B Netze mit
bis zu 64000 Hosts in einem Netz.
- Klasse C:
- Klasse C Netze werden über Werte von 192 bis 223 für
das erste Byte (die ersten beiden Bits sind gleich 1, Bit 3 gleich
0) identifiziert. Es gibt 2 Millionen Klasse C Netze, d.h. die
ersten drei Bytes werden für die Netzwerkadresse verwendet. Ein
Klasse C Netz kann bis zu 254 Host beinhalten.
- Klasse D:
- Klasse D Adressen, sogenannte Multicast-Adressen, werden
dazu verwendet ein Datengramm an mehrere Hostadressen gleichzeitig
zu versenden. Das erste Byte einer Multicast-Adresse hat den Wertebereich
von 224 bis 239, d.h. die ersten drei Bit sind gesetzt und Bit 4 ist
gleich 0. Sendet ein Prozeß eine Nachricht an eine Adresse der
Klasse D, wird die Nachricht an alle Mitglieder der adressierten Gruppe
versendet. Die Übermittlung der Nachricht erfolgt, wie bei IP
üblich, nach bestem Bemühen, d.h. ohne Garantie, daß
die Daten auch tatsächlich alle Mitglieder einer Gruppe erreichen.
Für das Multicasting wird ein spezielles Protokoll
namens Internet Group Management Protocol (IGMP)
verwendet. IGMP entspricht grob ICMP,
mit dem Unterschied, daß es nur zwei
Arten von Paketen kennt: Anfragen und Antworten. Anfragen werden
dazu verwendet, zu ermitteln welche Hosts Mitglieder einer Gruppe
sind. Antworten informieren darüber, zu welchen Gruppen ein
Host gehört. Jedes IGMP-Paket hat ein festes Format und
wird zur Übertragung in IP-Pakete eingekapselt.

Der IGMP-Header.
- Version
- In RFC1112 ist die aktuelle Version 1 des IGMP Protokolls
spezifiziert. Version 0, die in RFC998 beschrieben wird, ist
obsolet.
- Type
- Wie zuvor gesagt, kennt IGMP zwei Nachrichtentypen: Anfragen
und Antorten:
1 = Host Membership Query (Anfrage)
2 = Host Membership Report (Antwort)
- Unused
- Dieses Feld wird derzeit nicht benutzt.
- Checksum
- Der Algorithmus zur Berechnung der Checksumme entspricht dem
des IP-Protokolls.
- Group Address
- Bei einer Anfrage zur Gruppenzugehörigkeit wird das
Gruppenadressenfeld mit Nullen gefüllt. Ein Host, der eine
Anfrage erhält, ignoriert dieses Feld. Bei einer IGMP-Antwort
enthält das Gruppenadressenfeld die Adresse der Gruppe, zu der
der sendende Host gehört.
- Eine genaue Beschreibung des Internet Group Management
Protocol ist in RFC1112 zu finden (RFC1054 und RFC 998 beschreiben
ältere Versionen von IGMP).
- Der weitere Bereich der IP-Adressen von 240 bis 254 im ersten
Byte ist für zukünftige Nutzungen reserviert. In der
Literatur wird dieser Bereich oft auch als Klasse E bezeichnet
(vgl. [Co98]).
Im Internet müssen die Netzkennungen eindeutig sein. Aus diesem
Grund werden die (Netz)Adressen, wie weiter oben schon gesagt, von einer
zentralen Organisation vergeben. Dabei ist sichergestellt, daß die
Adressen eindeutig sind und auch im Internet sichtbar sind.
Dies ist aber nicht immer notwendig. Netze, die keinen Kontakt zum globalen
Internet haben, benötigen keine Adresse, die auch im Internet sichtbar
ist. Es ist auch nicht notwendig, daß sichergestellt ist, das diese
Adressen in keinem anderen, privaten Netz eingesetzt werden.
Aus diesem Grund wurden Adreßbereiche festgelegt, die nur für
private Netze bestimmt sind. Diese Bereiche sind in RFC 1918
(Address Allocation for Private Internets) festgelegt (RFC 1597,
auf das sich oft auch neuere Literatur bezieht, ist durch RFC 1918 ersetzt).
Diese IP-Nummern dürfen im Internet nicht weitergeleitet werden.
Dadurch ist es möglich, diese Adressen in beliebig vielen, nicht-
öffentlichen Netzen, einzusetzen.
Die folgenden Adressbereiche sind für die Nutzung in privaten Netzen
reserviert:
- Klasse A: 10.0.0.0
- Für ein privates Klasse A-Netz ist der Adressbereich
von 10.0.0.0 bis 10.255.255.254 reserviert.
- Klasse B: 172.16.0.0 bis 172.31.0.0
- Für die private Nutzung sind 16 Klasse B-Netze reserviert.
Jedes dieser Netze kann aus bis zu 65.000 Hosts bestehen (also
z.B. ein Netz mit den Adressen von 172.17.0.1 bis 172.17.255.254).
- Klasse C: 192.168.0.0 bis 192.168.255.0
- 256 Klasse C-Netzte stehen zur privaten Nutzung zur Verfügung.
Jedes dieser Netze kann jeweils 254 Hosts enthalten (z.B. ein
Netz mit den Adressen 192.168.0.1 bis 192.168.0.254).
Jeder kann aus diesen Bereichen den Adreßbereich für sein eigenes
privates Netz auswählen. Die Zuteilung dieser Adressen bedarf nicht die
Koordination mit der IANA oder einer anderen Organisation, die für die
Zuordnung von IP-Adressen verantwortlich ist.
Auch die folgenden Netzadressen sind reserviert und haben die
Bedeutung:
- Adressen mit der Netznummer 0 beziehen sich auf das aktuelle
Netz. Mit einer solchen Adresse können sich Hosts auf ihr
eigenes Netz beziehen, ohne die Netzadresse zu kennen (allerdings
muß bekannt sein, um welche Netzklasse es sich handelt, damit
die passende Anzahl Null-Bytes gesetzt wird).
- 127 steht für das Loopback Device eines Hosts.
Pakete, die an eine Adresse der Form 127.x.y.z gesendet werden,
werden nicht auf einer Leitung ausgegeben, sondern lokal
verarbeitet. Dieses Merkmal wird häufig zur Fehlerbehandlung
benutzt.
Neben einigen Netzadressen sind auch bestimmte Hostadressen für
spezielle Zwecke reserviert. Bei allen Netzwerkklassen sind die Werte
0 und 255 bei den Hostadressen reserviert. Eine IP-Adresse, bei der
alle Hostbits auf Null gesetzt sind, identifiziert das Netz selbst.
Die Adresse 80.0.0.0 bezieht sich so z.B. auf das Klasse A Netz 80,
die Adresse 128.66.0.0 bezieht sich auf das Klasse B Netz 128.66.
Eine IP-Adresse, bei der alle Host-Bytes den Wert 255 haben, ist eine
Broadcast-Adresse. Eine Broadcast-Adresse wird benutzt, um
alle Hosts in einem Netzwerk zu adressieren.
Fragmentierung
Damit Datengramme über jede Art von Netzwerk verschickt
werden können, muß das Internet Protokoll dazu in der Lage
sein, die Größe der Datengramme dem jeweiligen Netz
anzupassen. Jedes Netzwerk besitzt eine sogenannte maximale
Paketgröße (Maximum Transfer Unit - MTU), die
bezeichnet, daß nur Pakete bis zu dieser Größe über
das Netz verschickt werden können. So dürfen z.B. Pakete,
die über ein X.25-Netz verschickt werden sollen nicht größer
als 128 Byte sein. Ein Ethernet-Paket darf die Größe von
1500 Byte nicht überschreiten. Falls die MTU eines
Übertragungsmediums kleiner ist als die Größe eines
versendeten Pakets, so muß dieses Paket in kleinere Pakete
aufgeteilt werden.
Es genügt allerdings nicht, daß die Protokolle der
Transportschicht nun von sich aus einfach kleinere Pakete versenden.
Ein Paket kann auf dem Weg vom Quell- zum Zielhost mehrere
unterschiedliche Netzwerke mit unterschiedlichen MTUs durchlaufen.
Aus diesem Grund muß ein flexibleres Verfahren angewendet
werden, daß bereits auf der Internet-Schicht kleiner Pakete
erzeugen kann. Dieses Verfahren wird Fragmentierung genannt.
Unter Fragmentierung wird verstanden, daß das IP-Protokoll
eines jeden Netzwerkknotens (sei es ein Router, ein Host o.ä.)
in der Lage ist (sein sollte), empfangene Pakete gegebenenfalls zu
zerteilen, um sie weiter über ein Teilnetz bis zum Zielhost zu
übertragen. Jedes empfangende IP muß dazu in der Lage
sein, diese Fragmente wieder zum ursprünglichen Paket
zusammenzusetzen.

Fragmentierung eines IP-Pakets.
Jedes Fragment eines zerteilten Pakets erhält einen eigenen,
vollständigen IP-Header. Über das
Identifikationsfeld
im Header können alle Fragmente eines Pakets wiedererkannt
werden. Die einzelnen Fragmente eines Pakets können durchaus
unterschiedliche Wege auf dem Weg zum Zielhost nehmen. Die Lage der
Daten eines Fragments innerhalb der Gesamtnachricht wird mit Hilfe
des Fragment Offset-Feldes ermittelt.
Internet Control Message Protocol
Das Internet Control Message Protocol (ICMP) ist
Bestandteil jeder IP-Implementierung und hat die Aufgabe Fehler- und
Diagnoseinformationen für IP zu transportieren. ICMP ist im RFC
792 spezifiziert. Oft wird ICMP auch für Testzwecke verwendet,
etwa um zu ermitteln, ob ein Host derzeit empfangsbereit ist.
Durch seine Vielseitigkeit bietet ICMP aber auch leider die
Möglichkeit versteckte Nachrichten zu übermitteln. Ein
Stichwort ist hier das sogenannte 'ICMP-Tunneling'. Beim
ICMP-Tunneling wird das Datenfeld eines ICMP-Paketes genutzt, um
Informationen zwischen Rechnern auszutauschen. ICMP-Tunneling ist
aber keine Technik, die es eventuellen Datenspionen ermöglicht,
in einen Rechner oder ein Netz einzubrechen. Dennoch stellt das
Tunneling eine Bedrohung für das Sicherheitskonzept eines Netzes
dar. In der c't 11/1997 [Sch97a] ist ein ausführlicher Bericht
über das ICMP-Tunneling zu finden.
ICMP hat sehr unterschiedliche Informationen zu transportieren.
Deshalb ist nur der Grundaufbau des ICMP-Headers immer gleich, die
Bedeutung der einzelnen Felder im Protokollkopf wechselt jedoch.
Jeder ICMP-Nachrichtentyp wird in einem IP-Datengramm eingekapselt.

Der ICMP-Header (allgemeiner Aufbau).
Die derzeit wichtigsten ICMP-Nachrichtentypen sind:
- Destination Unreachable (Ziel nicht erreichbar):
- Diese Nachricht wird verwendet, wenn:
- Source Quench (Quelle löschen):
- Wird ausgesendet, wenn ein Host zu viele Pakete verschickt,
die aus Kapazitätsmangel nicht mehr verarbeitet werden können.
Der sendende Host muß dann die Rate zum Aussenden von
Nachrichten verringern.
- Parameter Problem:
- Verständigt den Absender eines Datengramms darüber,
daß das Paket aufgrund einer fehlerhaften Angabe im IP-Header
verworfen werden mußte.
- Redirect:
- Wird ausgesendet, wenn ein Router feststellt, daß ein
Paket falsch weitergeleitet wurde. Der sendende Host wird damit
aufgefordert, die angegebene Route zu ändern.
- Time Exceeded (Zeit verstrichen):
- Diese Nachricht wird an den Absender eines Datengramms
gesendet, dessen Lebensdauer den Wert 0 erreicht hat. Diese
Nachricht ist ein Zeichen dafür, daß Pakete in einem
Zyklus wandern, daß Netz überlastet ist oder die
Lebensdauer für das Paket zu gering eingestellt wurde.
- Echo Reply, Echo Request:
- Mit diesen Nachrichten kann festgestellt werden, ob ein
bestimmtes Ziel erreichbar ist. Ein Echo Request wird an einen Host
gesendet und hat einen Echo Reply zur Folge (falls der Host erreicht
wird).
- Timestamp Request, Timestamp Reply:
- Diese beiden Nachrichten sind ähnlich den zuvor
beschriebenen Nachrichten, außer das die Ankunftszeit der
Nachricht und die Sendezeit der Antwort mit erfaßt werden. Mit
diesen Nachrichtentypen kann die Netzleistung gemessen werden.
IP verwendet ICMP zum versenden von Fehler- und Diagnosemeldungen,
während ICMP zur Übertragung seiner Nachrichten IP benutzt.
Das bedeutet, wenn eine ICMP-Nachricht verschickt werden muß,
wird ein IP-Datengramm erzeugt und die ICMP-Meldung in den
Datenbereich des IP-Datengramms eingekapselt (siehe Abbildung).

ICMP-Nachrichten-Einkapselung.
Das Datengramm wird dann wie üblich versendet. Eine ICMP-Nachricht
wird immer als Antwort auf ein Datengramm verschickt. Entweder ist
ein Datengramm auf ein Problem gestoßen, oder das Datengramm
enthält eine ICMP-Anfrage, auf die eine Antwort versendet
versendet werden muß. In beiden Fällen sendet ein Host
oder Router eine ICMP-Nachricht an die Quelle des Datengramms
zurück.
|