TCP/IP

Werbung
Quelle: http://www.netzmafia.de/skripten/netze/netz8.html
Grundlagen Computernetze
Prof. Jürgen Plate
TCP/IP
Die Protokolle der TCP/IP-Familie wurden in den 70-er Jahren für den Datenaustausch in
heterogenen Rechnernetzen (d. h. Rechner verschiedener Hersteller mit unterschiedlichen
Betriebssystemen) entwickelt. TCP steht für 'Transmission Control Protocol' (Schicht 4) und
IP für 'Internet Protocol' (Schicht 3). Die Protokollspezifikationen sind in sogenannten RFCDokumenten (RFC - Request for Comment) festgeschrieben und veröffentlicht. Aufgrund
ihrer Durchsetzung stellen sie Quasi-Standards dar.
Die Schichten 5 - 7 des OSI-Standards werden hier in einer Anwendungsschicht
zusammengefaßt, da die Anwendungsprogramme alle direkt mit der Transportschicht
kommunizieren.
In Schicht 4 befindet sich außer TCP, welches gesicherten Datentransport
(verbindungsorientiert, mit Flußkontrolle (d. h. Empfangsbestätigung, etc.) durch
Windowing ermöglicht, auch UDP (User Datagram Protocol), in welchem verbindungsloser
und ungesicherter Transport festgelegt ist. Beide Protokolle erlauben durch die Einführung
von sogenannten Ports den Zugriff mehrerer Anwendungsprogramme gleichzeitig auf einund dieselbe Maschine.
In Schicht 3 ist das verbindungslose Internet-Protokoll (IP) angesiedelt. Datenpakete werden
auf den Weg geschickt, ohne daß auf eine Empfangsbestätigung gewartet werden muß. IPPakete dürfen unter bestimmten Bedingungen (TTL=0, siehe unten) sogar vernichtet werden.
In Schicht 3 werden damit auch die IP-Adressen festgelegt. Hier findet auch das Routing, das
heißt die Wegsteuerung eines Paketes von einem Netz ins andere statt. Ebenfalls in diese
Ebene integriert sind die ARP-Protokolle (ARP - Address Resolution Protocol), die zur
Auflösung (= Umwandlung) einer logischen IP-Adresse in eine physikalische (z. B. Ethernet) Adresse dienen und dazu sogenannte Broadcasts (Datenpakete, durch die alle
angeschloßenen Stationen angesprochen werden) verwenden. ICMP, ein Protokoll, welches
den Austausch von Kontroll- und Fehlerpaketen im Netz ermöglicht, ist ebenfalls in dieser
Schicht realisiert.
Die Schichten 1 und 2 sind gegenüber Schicht 3 protokolltransparent. Sie können durch
standardisierte Protokolle (z. B. Ethernet (CSMA/CD), FDDI, SLIP (Serial Line IP), PPP
(Point-to-Point Protocol)) oder andere Übertragungsverfahren realisiert werden.
Zur TCP/IP-Familie gehören mehrere Dienstprogramme der höheren OSI-Schichten (5 - 7), z.
B.:




Telnet (RFC 854)
Ein virtuelles Terminal-Protokoll, um vom eigenen Rechensystem einen interaktiven
Zugang zu einem anderen System zu realisieren.
FTP (RFC 959)
Dieses (File-Transfer-) Protokoll ermöglicht, die Dateidienste eines Fremdsystems
interaktiv zu benutzen sowie die Dateien zwischen den Systemen hin und her zu
kopieren.
NFS (RFC 1094)
Das Network File System ermöglicht den Zugriff auf Dateien an einem entfernten
System so, als wären sie auf dem eigenen. Man nennt dies auch einen transparenten
Dateizugriff. NFS basiert auf den zur TCP/IP-Familie gehörenden UDP- (UserDatagramm-) Protokollen (ebenfalls Schicht 4), RFC 768. Im Unterschied zu TCP
baut UDP keine gesicherten virtuellen Verbindungen zwischen kommunizierenden
Hosts auf. Aufgrund dieser Eigenschaft ist es für den Einsatz in lokalen Netzen
vorgesehen.
NNTP (RFC 977)
Das Network News Transfer Protocol spezifiziert Verteilung, Abfrage,


Wiederauffinden und das Absetzen von News-Artikeln innerhalb eines Teils oder der
gesamten Internet-Gemeinschaft. Die Artikel werden in regional zentralen Datenbasen
gehalten. Einem Benutzer ist es möglich, aus dem gesamten Angebot nur einzelne
Themen zu abonnieren.
SMTP (RFC 821/822)
Das Simple-Mail-Transfer-Protokoll (RFC 821) ist ein auf der IP-Adressierung sowie
auf der durch den RFC 822 festgelegten Namensstruktur basierendes Mail-Protokoll.
DNS (RFC 920)
Der Domain Name Service unterstützt die Zuordnung von Netz- und Host-Adressen
zu Rechnernamen. Dieser Service ist z. B. erforderlich für die Anwendung von SMTP
sowie in zunehmendem Maße auch für Telnet und FTP. Aus Sicherheitsgründen
wendet sich der fremde Host an den DNS, um zu prüfen, ob der IP-Adresse des ihn
rufenden Rechners auch ein (Domain-)Name zugeordnet werden kann. Falls nicht,
wird der Verbindungsaufbau abgelehnt.
Die TCP/IP-Protokolle
Der große Vorteil der TCP/IP-Protokollfamilie ist die einfache Realisierung von
Netzwerkverbunden. Einzelne Lokale Netze werden über Router oder Gateways verbunden.
Einzelne Hosts können daher über mehrere Teilnetze hinweg miteinander kommunizieren.
IP als Protokoll der Ebene 3 ist die unterste Ebene, die darunter liegenden Netzebenen können
sehr unterschiedlich sein:



LANs (Ethernet, Token-Ring, usw.)
WANs (X.25, usw.)
Punkt-zu-Punkt-Verbindungen (SLIP, PPP)
Internet-Protokolle
OSI-Schicht
7
Anwendung
6
Darstellung
5
4
Sitzung
Internet Protokoll Suite
File
Transfer
Electronic
Mail
File
Transfer
Protocol
(FTP)
RFC 959
Simple Mail
Transfer
Protocol
(SMTP)
RFC 821
Netzwerk
2
Sicherung
Terminal
Emulation
Usenet
News
Domain
Name
Service
World
Wide
Web
Art der
Kommunikation
Telnet
Protocol
(Telnet)
RFC 854
Usenet
News
Transfer
Protocol
(NNTP)
RFC
977
Domain
Name
Service
(DNS)
RFC
1034
World
Wide
Web
(WWW)
RFC
Applikation
User
Datagram
Host to Host
Protocol
Kommunikation
(UDP)
RFC 768
Transmission Control Protocol (TCP)
RFC 793
Transport
3
DOD Schicht
Address
Resolution
Protocol
(ARP)
RFC 826
Ethernet
Internet Protocol (IP)
RFC 791
Token
Ring
DQDB
FDDI
Internet
Control
Messsage
Protocol
RFC 792
Internet
ATM
lokales
Netzwerk
1
Physikalische
Übertragung
Twisted
Pair
Lichtwellenleiter
Coaxkabel
Funk
Laser
Netzzugriff
Es ist offensichtlich, daß die Gateways neben dem Routing weitere nichttriviale Funktionen
haben, wenn sie zwischen den unterschiedlichsten Teilnetzen vermitteln (z. B.
unterschiedliche Protokolle auf Ebene 2, unterschiedliche Datenpaketgröße, usw.).
Aus diesem Grund existieren in einem Internet drei unabhängige Namens- bzw.
Adressierungsebenen:



Physikalische Adressen (z. B. Ethernet-Adresse)
Internet-Adressen (Internet-Nummer, IP-Adresse)
Domain-Namen
Die Ethernet-Adresse wurde bereits behandelt, auf die anderen beiden Ebenen wird in den
folgenden Abschnitten eingegangen. Die Umsetzung der höchsten Ebene (Domain-Namen) in
IP-Adressen erfolgt durch das oben erwähnte DNS, worauf die Dienstprogramme der
Schichten 5-7 zurückgreifen.
ARP
Die Umsetzung einer IP-Adresse in eine Hardware-Adresse erfolgt durch Tabellen und auf
Hardware-Ebene (z. B. Ethernet) automatisch über ARP (Adress Resolution Protocol). Dazu
ein Beispiel:
Die Station A will Daten an eine Station B mit der Internetadresse I(B) senden, deren
physikalische Adresse P(B) sie noch nicht kennt. Sie sendet einem ARP-Request an alle
Stationen im Netz, der die eigene physikalische Adresse und die IP-Adresse von B enthält.
Alle Stationen erhalten und überprüfen den ARP-Request und die angesprochene Station B
antwortet, indem sie einen ARP-Reply mit ihrer eigenen physikalischen Adresse an die
Station A sendet. Letztere speichert die Zuordnung in einer Tabelle (Address Resolution
Cache).
Auch für die Umkehrfunktion gibt es eine standardisierte Vorgehensweise, den RARP
(Reverse ARP). Hier sendet die Station A unter Angabe ihrer physikalischen Adresse P(A)
einen RARP-Request. Wenn im Netz nur eine Station als RARP-Server eingerichtet ist (eine
Station, die alle Zuordnungen von P(x) <--> I(x) "kennt"), antwortet diese mit einem RARPReply an die anfragende Station, der I(A) enthält. Diese Funktion ist z. B. für sogenannte
"Diskless Workstations" wichtig, die ihre gesamte Software von einem Server laden.
IP - Internet Protocol
Auf der Netzwerkschicht aufbauend liegt die Internet-Schicht, die die erste
Abstraktionsschicht vom Transportmechanismus darstellt. Auf dieser Schicht 3 stellt das
Internet-Protokoll (IP) den grundlegenden Netzdienst zur Verfügung, den Versand von
Datenpaketen, sogenannten Datagrammen, über verschiedene Netze hinweg. Die
Netzwerkschicht hat keine Information darüber, von welcher Art die Daten sind, die sie
befördert. Nehmen wir als Beispiel das Ethernet: Von der Ethernet-Karte werden die vom
Netz kommenden Daten an die Treibersoftware für die Karte weitergereicht. Diese
interpretiert einen Teil dieser Daten als IP-Header und den Rest als Datenteil eines IPPaketes. Auf diese Weise ist der IP-Header innerhalb eines Ethernet-Paketes eingekapselt.
Aber auch das IP-Paket selbst enthält wieder ein Datenpaket für eine höhere Protokollebene
(TCP), dessen Header auf der IP-Ebene als Bestandteil der Daten erscheint. Man kann sich
das so vorstellen, wie die russischen Puppen, die ineinandergeschachtelt sind. Die kleinste
Puppe ganz innen repräsentiert die Nutzdaten, alle außen herum geschachtelten Puppen sind
'Protokoll-Verpackung'.
IP ist ein verbindungsloses Protokoll. Es ist also nicht notwendig, eine IP-Verbindung zu
einem Rechner zu 'öffnen', bevor man Daten zu diesem Rechner senden kann, sondern es
genügt, das IP-Paket einfach abzusenden und darauf zu vertrauen, daß es schon ankommen
wird. Bei einem verbindungsorientierten Protokoll wird beim Öffnen einer Verbindung
getestet, ob der Zielrechner überhaupt erreichbar ist. Ein verbindungsloses Protokoll macht
das nicht und kann demnach auch nicht garantieren, daß ein Datenpaket überhaupt beim
Empfänger ankommt. IP garantiert auch nicht, daß von einem einmal abgeschickten
Datenpaket nur eine Kopie beim Empfänger ankommt oder daß in einer bestimmten
Reihenfolge abgeschickte Datenpakete auch wieder in dieser Reihenfolge empfangen werden.
Normalerweise laufen die IP-Pakete über mehrere Zwischenstationen, bis sie am Zielrechner
ankommen. Bricht irgendwann während der Übertragung ein Übertragungsweg zusammen, so
wird ein neuer Weg zum Ziel gesucht und benutzt. Da der neue Weg zeitlich länger oder
kürzer sein kann als der alte, kann man keine allgemeingültigen Aussagen darüber machen, in
welcher Reihenfolge IP-Pakete beim Empfänger eintreffen. Es kann auch sein, daß bei dieser
Umschalterei IP-Pakete verlorengehen oder sich verdoppeln. Das Beheben der so
entstehenden Probleme überläßt das IP-Protokoll anderen, höherliegenden Schichten.
Das Internet-Protokoll ist somit ein verbindungsloser Dienst mit einem 'Unreliable Datagram
Service', d. h. es wird auf der IP-Ebene weder die Richtigkeit der der Daten noch die
Einhaltung von Sequenz, Vollständigkeit und Eindeutigkeit der Datagramme überprüft. Ein
zuverlässiger verbindungsorientierter Dienst wird in der darüberliegenden TCP-Ebene
realisiert.
Ein IP-Datagramm besteht aus einem Header und einem nachfolgenden Datenblock, der
seinerseits dann z. B. in einem Ethernet-Frame "verpackt" wird. Die maximale Datenlänge
wird auf die maximale Rahmenlänge des physikalischen Netzes abgestimmt. Da nicht
ausgeschlossen werden kann, daß ein Datagramm auf seinem Weg ein Teilnetz passieren
muß, dessen Rahmenlänge niedriger ist, müssen zum Weitertransport mehrere (Teil)Datagramme erzeugt werden. Dazu wird der Header im Wesentlichen repliziert und die
Daten in kleinere Blöcke unterteilt. Jedes Teil-Datagramm hat also wieder einen Header.
Diesen Vorgang nennt man Fragmentierung. Es handelt sich um eine rein netztechnische
Maßnahme, von der Quell- und Zielknoten nichts wissen müssen. Es gibt natürlich auch eine
umgekehrte Funktion, "Reassembly", die kleine Datagramme wieder zu einem größeren
packt. Geht auf dem Übertragungsweg nur ein Fragment verloren, muß das gesamte
Datagramm wiederholt werden. Es gilt die Empfehlung, daß Datagramme bis zu einer Länge
von 576 Bytes unfragmentiert übertragen werden sollten.
Format des IP-Headers
Version
Kennzeichnet die IP-Protokollversion
IHL (Internet Header Length)
Die Angabe der Länge des IP-Headers erfolgt in 32-Bit-Worten (normalerweise 5). Da
die Optionen nicht unbedingt auf Wortlänge enden, wird der Header gegebenenfalls
aufgefüllt.
Type of Service
Alle Bits haben nur "empfehlenden" Charakter. 'Precedence' bietet die Möglichkeit,
Steuerinformationen vorrangig zu befördern.
Total Length
Gesamtlänge des Datagramms in Bytes (max. 64 KByte).
Identification
Dieses und die beiden folgenden Felder steuern die Reassembly. Eindeutige Kennung
eines Datagramms. Anhand dieses Feldes und der 'Source Address' ist die
Zusammengehörigkeit von Fragmenten zu detektieren.
Flags
Die beiden niederwertigen Bits haben folgende Bedeutung:


Don't fragment: Für Hosts, die keine Fragmentierung unterstützen
More fragments: Zum Erkennen, ob alle Fragmente eines Datagramms
empfangen wurden
Fragment Offset
Die Daten-Bytes eines Datagramms werden numeriert und auf die Fragmente verteilt.
Das erst Fragment hat Offset 0, für alle weiteren erhöht sich der Wert um die Länge
des Datenfeldes eines Fragments. Anhand dieses Wertes kann der Empfänger
feststellen, ob Fragmente fehlen. Beispiel siehe unten.
Time-to-live (TTL)
Jedes Datagramm hat eine vorgegebene maximale Lebensdauer, die hier angegeben
wird. Auch bei Routing-Fehlern (z. B. Schleifen) wird das Datagramm irgendwann
aus dem Netz entfernt. Da Zeitmessung im Netz problematisch ist, und keine Startzeit
im Header vermerkt ist, decrementiert jeder Gateway dieses Feld --> de-facto ein 'Hop
Count'.
Protocol
Da sich unterschiedliche Protokolle auf IP stützen, muß das übergeordnete Protokoll
(ULP, Upper Layer Protocol) angegeben werden. Wichtige ULPs sind





1: ICMP Internet Control Message P.
3: GGP Gateway-to-Gateway P.
6: TCP Transmission Control P.
8: EGP Exterior Gateway P.
17: UDP User Datagram P.
Header Checksum
16-Bit-Längsparität über den IP-Header (nicht die Daten)
Source Address
Internet-Adresse der Quellstation
Destinantion Address
Internet-Adresse der Zielstation
Options
Optionales Feld für weitere Informationen (deshalb gibt es auch die Header-Länge).
Viele Codes sind für zukünftige Erweiterungen vorgesehen. Die Optionen dienen vor
allem der Netzsteuerung, der Fehlersuche und für Messungen. Die wichtigsten sind:




Record Route: Weg des Datagramms mitprotokollieren
Loose Source Routing: Die sendende Station schreibt einige Zwischenstationen
vor (aber nicht alle)
Strict Source Routing: Die sendende Station schreibt alle Zwischenstationen
vor.
Timestamp Option: Statt seiner IP-Adresse (wie bei Record Route) trägt jeder
Gateway den Bearbeitungszeitpunkt ein (Universal Time).
Padding
Füllbits
Die Hauptaufgabe von IP ist es also, die Unterschiede zwischen den verschiedenen,
darunterliegenden Netzwerkschichten zu verbergen und eine einheitliche Sicht auf die
verschiedensten Netztechniken zu präsentieren. So gibt es IP nicht nur in Netzen, sondern
auch als SLIP (Serial Line IP) oder PPP (Point to Point Protocol) für Modem- oder ISDNVerbindungen. Zur Vereinheitlichung gehören auch die Einführung eines einheitlichen
Adressierungsschemas und eines Fragmentierungsmechanismus, der es ermöglicht, große
Datenpakete durch Netze mit kleiner maximaler Paketgröße zu senden: Normalerweise
existiert bei allen Netzwerken eine maximale Größe für ein Datenpaket. Im IP-Jargon nennt
man diese Grenze die 'Maximum Transmisson Unit' (MTU). Natürlich ist diese Obergrenze je
nach verwendeter Hardware bzw. Übertragungstechnik unterschiedlich. Die Internet-Schicht
teilt IP-Pakete, die größer als die MTU des verwendeten Netzwerks sind, in kleinere Stücke,
sogenannte Fragmente, auf. Der Zielrechner setzt diese Fragmente dann wieder zu
vollständigen IP-Paketen zusammen, bevor er sie an die darüberliegenden Schichten
weitergibt. Der Fragement Offset gibt an, an welcher Stelle in Bezug auf den IP-DatagrammAnfang das Paket in das Datagramm einzuordnen ist. Aufgrund des Offset werden die Pakete
in die richtige Reihenfolge gebracht. Dazu ein Beispiel:
Es soll ein TCP-Paket mit einer Länge von 250 Byte über IP versandt werden. Es wird
angenommen, daß ein IP-Header eine Länge von 20 Byte hat und eine maximale Länge von
128 Byte pro Paket nicht überschritten werden darf Der Identifikator des Datagramms beträgt
43 und der Fragmentabstand wird in 8-Byte-Schritten gezählt. Das Datenfragment muß also
durch 8 dividierbar sein.
Da alle Fragmente demselben Datagramm angehören, wird der Identifikator für alle
Fragmente beibehalten. Im ersten Fragment ist das Fragment Offset natürlich noch Null, das
MF-Bit jedoch auf 1 gesetzt, um zu zeigen, daß noch Fragmente folgen. Im IP-Header des
zweiten Fragments beträgt das Fragment Offset 13 (104/8 = 13) und zeigt die Position des
Fragments im Datagramm an. Das MF-Bit ist noch immer 1, da noch ein Datenpaket folgt.
Der Header des dritten Fragments enthält dann ein MF-Bit mit dem Wert 0, denn es handelt
sich um das letzte Datenpaket zum Datagramm 43. Das Fragment Offset ist auf 26 gesetzt, da
vorher schon 208 Daten-Bytes (8 * 26 = 208) übertragen wurden.
Sobald das erste Fragment (gleich welches) im Empfänger ankommt, wird ein Timer gesetzt.
Sind innerhalb der dort gesetzten Zeit nicht alle Pakete zu einem Datagramm eingetroffen,
wird angenommen, daß Fragmente verlorengingen. Der Empfänger verwirft dann alle
Datenpakete mit diesem Identifikator.
Was geschieht aber, wenn der Kommunikationspartner nicht erreichbar ist? Wie schon
erwähnt, durchläuft ein Datagramm mehrere Stationen. Diese Stationen sind in der Regel
Router oder Rechner, die gleichzeitig als Router arbeiten. Ohne Gegenmaßnahme würde das
Datenpaket für alle Zeiten durch das Netze der Netze irren. Dazu gibt es im IP-Header neben
anderer Verwaltungsinfo auch ein Feld mit dem Namen TTL (Time To Live). Der Wert von
TTL kann zwischen 0 und 255 liegen. Jeder Router, der das Datagramm transportiert,
vermindert den Wert dieses Feldes um 1. Ist der Wert von TTL bei Null angelangt, wird das
Datagramm vernichtet.
Die Adressen, die im Internet verwendet werden, bestehen aus einer 32 Bit langen Zahl.
Damit sich die Zahl leichter darstellen läßt, unterteilt man sie in 4 Bytes (zu je 8 Bit). Diese
Bytes werden dezimal notiert und durch Punkte getrennt (a.b.c.d). Zum Beispiel:
141.84.101.2
129.187.10.25
Bei dieser Adresse werden zwei Teile unterscheiden, die Netzwerkadresse und die
Rechneradresse, wobei unterschiedlich viele Bytes für beide Adressen verwendet werden:
Die Bereiche für die Netzwerkadresse ergeben sich durch die Zuordnung der ersten Bits der
ersten Zahl (a), die eine Erkennung der Netz-Klassen möglich machen.
Netzklassen
Klasse A - Netz
Klasse B - Netz
Klasse C - Netz
Netz-ID
8 Bit = 1 Byte
16 Bit = 2 Byte
24 Bit = 3 Byte
Host-ID
24 Bit = 3 Byte
16 Bit = 2 Byte
8 Bit = 1 Byte
Netzmaske
255.0.0.0
255.255.0.0
255.255.255.0
Adressklassen- 0
ID
(= Feste Bits im
1. Byte, 1.
Quad)
10
110
Wertebereich
(theoretisch)
0.0.0.0 bis
127.255.255.255
128.0.0.0 bis
191.255.255.255
192.0.0.0 bis
223.255.255.255
Anzahl der
Netze
128 (= 27)
16384 (= 26*256
= 64*256)
2097152 (=
25*256*256
= 32*256*256)
Anzahl der
Rechner
im Netz
16777216 (=
2563)
65536 (= 2562)
256 (= 2561)
Besondere Adreßklassen
Klasse D
Klasse E
Adressklassen-ID
4 Bit = "1110"
5 Bit = "11110"
keine Netz-ID,
sondern:
28 Bit-Identifikator
27 Bit-Identifikator
Wertebereich
224.0.0.0 bis
240.0.0.0 bis
Anwendungen
239.255.255.255
247.255.255.255
für Multicast-Gruppen
reservierte Adressen für
Zukünftiges
Grundsätzlich gilt:



Alle Rechner mit der gleichen Netzwerkadresse gehören zu einem Netz und sind
untereinander erreichbar.
Zur Koppelung von Netzen unterschiedlicher Adresse wird eine spezielle Hardwareoder Softwarekomponente, ein sogenannter Router, benötigt.
Je nach Zahl der zu koppelnden Rechner wird die Netzwerkklasse gewählt.
In einem Netz der Klasse C können z. B. 254 verschiedene Rechner gekoppelt werden
(Rechneradresse 1 bis 254). Die Hostadresse 0 wird für die Identifikation des Netzes benötigt
und die Adresse 255 für Broadcast-(Rundruf-)Meldungen.
Die Netzwerkadresse 127.0.0.1 bezeichnet jeweils den lokalen Rechner (loopback address).
Sie dient der Konsistenz der Netzwerksoftware (jeder Rechner ist über seine Adresse
ansprechbar) und dem Test.
Damit man nun lokale Netze ohne Internetanbindung mit TCP/IP betreiben kann, ohne IPNummern beantragen zu müssen und um auch einzelne Rechnerverbindungen testen zu
können, gibt es einen ausgesuchten Nummernkreis, der von keinen Router nach außen
gegeben wird. Diese "privaten" Adressen sind im RFC 1597 festgelegt. Es gibt ein Class-ANetz, 16 Class-B-Netze und 255 Class-C-Netze:



Class-A-Netz: 10.0.0.0 - 10.255.255.255
Class-B-Netze: 172.16.0.0 - 172.31.255.255
Class-C-Netze: 192.168.0.0 - 192.168.255.255
Zusätzlich hat die IANA auch das folgende Class-B-Netz für private Netze reserviert, das
schon von Apple- und Microsoft-Clients verwendet wird, sofern kein DHCP-Server zur
Verfügung steht. Das Verfahren heißt APIPA (Automatic Private IP Addressing):

169.254.0.0 - 169.254.255.255
Der für IP reservierte Adressraum reicht nicht mehr aus, um alle Endgeräte anzusteuern.
Mögliche Abhilfen:



Dynamische Vergabe von IP-Adressen: Dieses Verfahren wird beim Dial-In beim
Provider verwendet. Es eignet sich auch im lokalen Netz, wenn davon auszugehen ist,
daß immer nur ein Teil der Rechner in Betrieb ist. Der Benutzer bekommt für die
Dauer einer Verbindung eine IP-Adresse zugeteilt. Das bekannteste Verfahren heißt
DHCP (dynamic host configuration protocol).
Weiterentwicklung des IP-Protokolls: Mit IP Version 6 wird ein auf 128 Bit
erweiterter Adressraum geschaffen. Damit stehen genügend Adressen zur Vefügung.
Network Address Translation (NAT): Über ein Gateway wird im Internet eine andere
IP-Adresse verwendet als im lokalen Netz (private Adressräume). Die Umsetzung
erlaubt sogar, ein komplettes privates Netz (siehe oben) mit einer einzigen externen
IP-Adresse zu betreiben.
Network Address Translation (NAT) und IP-Masquerading
Die begrenzte Verfügbarkeit von IP-Adressen hat dazu geführt, daß man sich Gedanken über
verschiedene Möglichkeiten machen mußte, wie man mit den existierenden Adressen ein
größeres Umfeld abdecken kann. Eine Möglichkeit, um private Netze (und dazu gehört
letztendlich auch ein privater Anschluß mit mehr als einem PC) unter Verwendung möglichst
weniger Adressen an das Internet anzukoppeln stellen NAT, PAT und IP Masquerading.
Alle Verfahren bilden private Adressen gemäß RFC 1918 oder einen proprietären (nicht
registrierten) Adreßraum eines Netzes auf öffentliche registrierte IP-Adressen ab.

NAT (Network Address Translation)
Beim NAT (Network Address Translation) werden die Adressen eines privaten Netzes
über Tabellen öffentlich registrierten IP-Adressen zugeordnet. Der Vorteil besteht
darin, daß Rechner, die in einem privaten Netz miteinander kommunizieren, keine
öffentlichen IP-Adressen benötigen. IP-Adressen interner Rechner, die eine
Kommunikation mit Zielen im Internet aufbauen, erhalten in dem Router, der
zwischen dem Internet Service Provider (ISP) und dem privaten Netzwerk steht, einen
Tabelleneintrag. Durch diese Eins-zu-Eins-Zuordnung sind diese Rechner nicht nur in
der Lage, eine Verbindung zu Zielen im Internet aufzubauen, sondern sie sind auch
aus dem Internet erreichbar. Die interne Struktur des Firmennetzwerkes bleibt jedoch
nach außen verborgen.

IP Masquerading
IP Masquerading, das manchmal auch als PAT (Port and Address Translation)
bezeichnet wird, bildet alle Adressen eines privaten Netzwerkes auf eine einzelne
öffentliche IP-Adresse ab. Dies geschieht dadurch, daß bei einer existierenden
Verbindung zusätzlich zu den Adressen auch die Portnummern ausgetauscht werden.
Auf diese Weise benötigt ein gesamtes privates Netz nur eine einzige registrierte
öffentliche IP-Adresse. Der Nachteil dieser Lösung besteht darin, daß die Rechner im
privaten Netzwerk nicht aus dem Internet angewählt werden können. Diese Methode
eignet sich daher hervorragend, um zwei und mehr Rechner eines privaten
Anschlusses per DFÜ-Netzwerk oder ISDN-Router an das Internet zu koppeln.
IP Masquerading rückt mit dieser Funktionalität sehr nahe an Proxy- und FirewallLösungen heran, wobei ein Proxy explizit für ein Protokoll (z. B. HTTP) existieren
und aufgerufen werden muß.
Subnetze
Nachdem nun klar ist, was ein Netz der Klasse A oder B ist, soll auf die Bildung von
Subnetzen hingewiesen werden. Diese dienen dazu, ein bestehendes Netz in weitere, kleinere
Netze zu unterteilen.







Subnetze sind Strukturierungsmöglichkeit für Netze, ohne daß man zusätzliche
Klasse-A-, Klasse-B- oder Klasse-C-IP-Adressen braucht.
Die Standardprozedur, um ein Netz in Unternetze (Subnetze) zu teilen, nennt man
"Subnetting".
Die Hostadresse des A-, B- oder C-Netzes teilt sich in die Bereiche Subnetzadresse
(Subnet-ID, Teilnetz-ID) und Hostadresse (verbleibende, verkürzte Host-ID). Ein Teil
des Hostadressbereiches wird also genutzt, um die Subnetze zu unterscheiden.
Die Netzadresse und den Subnetzanteil des Hostadressraumes bezeichnet man als
"erweiterte Netzadresse" (extended network prefix).
Die interne Subnetz-Struktur von A-, B- oder C-Netzen ist nach außen hin unsichtbar.
Damit Router in der Lage sind, Datagramme in das richtige Netz zuzustellen, müssen
sie bei der IP-Adresse den Netz- und Hostanteil unterscheiden können.
Dies geschieht traditionell durch die Netzmaske bzw. Subnetzmaske (subnet mask).
Die Subnetzmaske dient dem Rechner dazu, die Zuordnung von Netzwerk-Teil und Host-Teil
vorzunehmen. Sie hat denselben Aufbau wie eine IP-Adresse (32 Bit bzw. 4 Byte). Per
Definition sind alle Bit des "Netzwerk-Teils" auf 1 zu setzen, alle Bit des "Host-Teils" auf 0.
Für die o.a. Adreßklassen hat die Subnetzmaske demnach folgendes Aussehen:
Adreß-
Subnetzmaske (binär)
Subnetzmaske
Klasse
(dezimal)
Class A
11111111.00000000.00000000.00000000 255.0.0.0
Class B
11111111.11111111.00000000.00000000 255.255.0.0
Class C
11111111.11111111.11111111.00000000 255.255.255.0
Diese Subnetzmaske (auch "Default Subnetzmaske" genannt) kann manuell überschrieben
werden.
Eine Subnet-Maske für ein Netz der Klasse C lautet daher 255.255.255.0. Das bedeutet, daß
die ersten drei Bytes die Netzadresse angeben und das vierte Byte die Rechner adressiert. Eine
Subnetz-Maske mit dem Wert 255.255.0.0 würde folglich ein Netz der Klasse B angeben und
für ein C-Netz steht die Maske 255.255.255.0.
Aufteilung in Subnetze
Netzwerkanteil in
Bit
Hostanteil Subnetz- Hostanzahl
in Bit
anzahl
**)
*)
Subnetzmaske
8
24
1
16777216
255.0.0.0
9
23
2
128*65536
255.128.0.0
10
22
4
64*65536
255.192.0.0
11
21
8
32*65536
255.224.0.0
12
20
16
16*65536
255.240.0.0
13
19
32
8*65536
255.248.0.0
14
18
64
4*65536
255.252.0.0
15
17
128
2*65536
255.254.0.0
16
16
1
65536
255.255.0.0
B
17
15
2
128*256
255.255.128.0
18
14
4
64*256
255.255.192.0
19
13
8
32*256
255.255.224.0
20
12
16
16*256
255.255.240.0
21
11
32
8*256
255.255.248.0
22
10
64
4*256
255.255.252.0
23
9
128
2*256
255.255.254.0
Klasse A
Klasse
24
8
1
256
255.255.255.0
Klasse C
25
7
2
128
255.255.255.128
26
6
4
64
255.255.255.192
27
5
8
32
255.255.255.224
28
4
16
16
255.255.255.240
29
3
32
8
255.255.255.248
30
2
64
4
255.255.255.252
Anmerkungen:
*) Die erste und letzte bei der Unterteilung entstehenden Adressen dürfen nicht
verwendet werden (Verwechslung mit Netz- und Broadcast-Adresse des
übergeordneten Netzes). Die Anzahl der Subnetze verringert sich somit jeweils um
zwei:
Ist der Netzwerkanteil der IP-Adresse n Bits, dann erhält man (2n) - 2 Subnetze.
**) Die Rechneranzahl verringert sich ebenfalls um zwei wegen Subnetz-Adresse (alle
Rechnerbits auf 0) und Broadcast-Adresse (alle Rechnerbits auf 1):
Ist der Hostanteil der IP-Adresse m Bits, dann erhält man (2m) - 2 Hosts pro Subnetz.
Besitzt breispielsweise ein Unternehmen ein Netz der Klasse C, möchte man dieses vielleicht
in zwei Segmente unterteilen, die voneinander getrennt sind. Der Broadcastverkehr des ersten
Segments kann so das andere nicht beeinträchtigen. In diesem Fall kommt die Subnetz-Maske
zum Einsatz, welche die Rechneradressen in zwei Bereiche gliedert. Sollen die Rechner in
vier gleich große Subnetze mit je 64 Knoten eingeteilt werden, lautet die Subnetz-Maske
255.255.255.192. Es gilt die folgende Formel für das Maskier-Byte:
Bytewert = 256 - (Anzahl der Knoten in einem Segment)
Als das Subnetting erstmals standardisiert wurde, war es verboten die Subnetze zu nutzen, in
denen alle Subnetzbits den Wert 0 oder 1 hatten (siehe Anmerkungen oben). Damit ergeben
sich im Beispiel nur zwei Subnetze mit je 62 Hosts. Inzwischen beherrschen fast alle Systeme
korrektes Subnetting ("classless" routing).
Beispiel: Aufteilung in 4 Subnetze
Ein Netz der Klasse C soll in vier gleich große Subnetze geteilt werden. Die Netzadresse
beträgt 192.168.98.0. Der Administrator wählt daher zur Unterteilung die Subnetz-Maske
255.255.255.192. Die vier Rechner mit den IP-Adressen 192.168.98.3, 192.168.98.73.
192.168.98.156 und 192.168.98.197 befinden sich daher in vier Subnetzen zwischen denen
geroutet werden muß. Broadcasts in Subnetz 1 werden somit nicht in die anderen Subnetze
übertragen. Es ist nun zum Beispiel für das Unternehmen möglich, die Rechner des Vertriebs
in Subnetz 1, die des Einkaufs in Subnetz 2, jene der Entwicklung in Subnetz 3 und ein Netz
aus Demorechnern in Subnetz 4 zu organisieren. Damit ist gesichert, daß Störungen in
einzelnen Subnetzen auch lokal auf diese beschränkt bleiben. Sie schlagen nicht auf die
Datenstruktur des ganzen Unternehmens durch.
Allgemein ergibt sich für ein C-Netz folgende Aufstellung:
Subnetze eines C-Netzes
In Klammern die reduzierte Anzahl der Subnetze (Anzahl - 2). Die rot unterlegten
Möglichkeiten sind dann in der Praxis nicht einsetzbar.
Subnetzbits Hostbits
mögliche
Subnetze
Hostadressen
Subnetzmaske
1
7
2 (0)
126 (0)
255.255.255.128
2
6
4 (2)
62
255.255.255.192
3
5
8 (6)
30
255.255.255.224
4
4
16 (14)
14
255.255.255.240
5
3
32 (30)
6
255.255.255.248
6
2
64 (62)
2
255.255.255.252
7
1
128
0
255.255.255.254
Beispiel: Aufteilung in 8 (6) Subnetze
Von den acht variabel verwendbaren Bits nutzt er also die drei höchstwertigen Bits für das
Subnetz und die fünf letzten Bits für die Hostadresse. Die erste Adresse jedes Subnetz ist die
Adresse in der alle Hostbits den Wert 0 haben.
Subnetzbits
Hostbits
Dezimale Wertigkeit des Bit
128 64 32 16 8 4 2 1
erstes Subnetz
0
0
0
0
dezimal
0 0 0 0 0
zweites Subnetz
0
0
1
0
0 0 0 0 32
drittes Subnetz
0
1
0
0
0 0 0 0 64
viertes Subnetz
0
1
1
0
0 0 0 0 96
fünftes Subnetz
1
0
0
0
0 0 0 0 128
sechstes Subnetz
1
0
1
0
0 0 0 0 160
siebtes Subnetz
1
1
0
0
0 0 0 0 192
achtes Subnetz
1
1
1
0
0 0 0 0 224
Damit sind die acht zur Verfügung stehenden Subnetze bekannt:
192.168.0.0/27
192.168.0.32/27
192.168.0.64/27
192.168.0.96/27
192.168.0.128/27
192.168.0.160/27
192.168.0.192/27
192.168.0.224/27
Anmerkung:
Die Zahl hinter dem Schrägstrich (oben ist das die 27) gibt an, wieviele Bits der 32 Bit
langen IP-Adresse als Netzanteil verwendet werden.
Diese Subnetze können jetzt einzelnen Netzen zugeordnet werden. Die folgende Tabelle zeigt
die Netz- und Broadcastadressen von jedem einzelnen Subnetz und die Rechneradressen.
Subnetz
IP-Adressen (letztes Oktett)
Netz
Hosts
Broadcast
erstes Subnetz
0
1-30
31
zweites Subnetz
32
33-62
63
drittes Subnetz
64
65-94
95
viertes Subnetz
96
97-126
127
fünftes Subnetz
128
129-158
159
sechstes Subnetz
160
161-190
191
siebtes Subnetz
192
193-222
223
achtes Subnetz
224
225-254
255
Als kleine Hilfe gibt es hier noch einen kleinen Subnetz-Rechner als Javascript-Programm.
Eingegeben wird eine IP-Adresse (genauer die Netz-Adresse) in CIDR-Form (z.B.
10.1.2.0/24). Nach dem Klick auf "Berechnen" erscheinen im unteren Feld die Werte der
Netzadresse, der Subnet-Maske und der Bereich der zugehörigen IP-Adressen, wobei die erste
Adresse des angebenen Bereichs die Netzadresse darstellt und die letzte Adresse des Bereichs
die Broadcast-Adresse ist.
CIDR:
192.168.1.0/24
IP-Bereich:
ICMP - Internet Control Message Protocol
ICMP erlaubt den Austauch von Fehlermeldungen und Kontrollnachrichten auf IP-Ebene.
ICMP benutzt das IP wie ein ULP, ist aber integraler Bestandteil der IP-Implementierung. Es
macht IP nicht zu einem 'Reliable Service', ist aber die einzige Möglichkeit Hosts und
Gateways über den Zustand des Netzes zu informieren (z. B. wenn ein Host temporär nicht
erreichbar ist --> Timeout).
Die ICMP-Nachricht ist im Datenteil des IP-Datagramms untergebracht, sie enthält ggf. den
IP-Header und die ersten 64 Bytes des die Nachricht auslösenden Datagramms (z. B. bei
Timeout).
Die fünf Felder der ICMP-Message haben folgende Bedeutung:
Type
Identifiziert die ICMP-Nachricht











0 Echo reply
3 Destination unreachable
4 Source quench
5 Redirect (Change a Route)
8 Echo request
11 Time exceeded for a datagram
12 Parameter Problem on a datagram
13 Timestamp request
14 Timestamp reply
15 Information request
16 Information reply


17 Address mask request
18 Address mask reply
Code
Detailinformation zum Nachrichten-Typ
Checksum
Prüfsumme der ICMP-Nachricht (Datenteil des IP-Datagramms)
Identifier und Sequence-Nummer
dienen der Zuordnung eintreffender Antworten zu den jeweiligen Anfragen, da eine
Station mehrere Anfragen aussenden kann oder auf eine Anfrage mehrere Antworten
eintreffen können.
Wenden wir uns nun den einzelnen Nachrichtentypen zu:
Echo request/reply
Überprüfen der Erreichbarkeit eines Zielknotens. Es können Testdaten mitgeschickt
werden, die dann unverändert zurückgeschickt werden (--> Ping-Kommando unter
UNIX).
Destination unreachable
Im Codefeld wird die Ursache näher beschrieben: 0 Network unreachable 1 Host
unreachable 2 Protocol unreachable 3 Port unreachable 4 Fragmentation needed 5
Source route failed
Source quench
Wenn mehr Datagramme kommen als eine Station verarbeiten kann, sendet sie diese
Nachricht an die sendende Station.
Redirect
wird vom ersten Gateway an Hosts im gleichen Teilnetz gesendet, wenn es eine
bessere Route-Verbindung über einen anderen Gateway gibt. In der Nachricht wird die
IP-Adresse des anderen Gateways angegeben.
Time exceeded
Für diese Nachricht an den Quellknoten gibt es zwei Ursachen:


Time-to-live exceeded (Code 0): Wenn ein Gateway ein Datagramm eliminiert,
dessen TTL-Zähler abgelaufen ist.
Fragment reassembly time exceeded (Code 1): Wenn ein Timer abläuft, bevor
alle Fragmente des Datagramms eingetroffen sind.
Parameter problem on a Datagramm
Probleme bei der Interpretation des IP-Headers. Es wird ein Verweis auf die
Fehlerstelle und der fragliche IP-Header zurückgeschickt.
Timestamp request/reply
Erlaubt Zeitmessungen und -synchronisation im Netz. Drei Zeiten werden gesendet (in
ms seit Mitternacht, Universal Time):



Originate T.: Sendezeitpunkt des Requests (vom Absender)
Receive T.: Ankunftszeit (beim Empfänger)
Transmit T.: Sendezeitpunkt des Reply (vom Empfänger)
Information request/reply
Mit dieser Nachricht kann ein Host die Netid seines Netzes erfragen, indem er seine
Netid auf Null setzt.
Address mask request/reply
Bei Subnetting (siehe unten) kann ein Host die Subnet-Mask erfragen.
Für den User nutzbar ist ICMP vor allem für die Kommandos ping und traceroute (bei
Windows "tracert"). Diese Kommandos senden ICMP-Echo-Requests aus und warten auf den
ICMP-Echo-Reply. So kann man die Erreichbarkeit eines Knotens feststellen. Will man alle
Knoten im lokalen Netz erkennen genügt ein ping auf die Broadcast-Adresse, z. B.:
ping 192.168.33.255
Zum Anzeigen der Arp-Tabelle gibt es unter Windows wie unter Linux das arp-Kommando,
mit arp -a erhält man eine Liste der aktuell gespeicherten MAC-Adressen und deren
Zuordnung zu IP-Adressen.
Führt man das obige ping-Kommando und das arp-Kommando nacheinander aus, erhält man
eine liste der IP- umd MAC-Adressen der aktiven lokalen Knoten, z.B.:
ping -b -c1 192.168.33.255
arp -a
UDP - User Datagram Protocol
UDP ist ein einfaches Schicht-4-Protokoll, das einen nicht zuverlässigen, verbindungslosen
Transportdienst ohne Flußkontrolle zur Verfügung stellt. UDP ermöglicht zwischen zwei
Stationen mehrere unabhängige Kommunikationsbeziehungen (Multiplex-Verbindung): Die
Identifikation der beiden Prozesse einer Kommuninkationsbeziehung geschieht (wie auch bei
TCP, siehe unten) durch Port-Nummern (kurz "Ports"), die allgemein bekannten
Anwendungen fest zugeordnet sind. Es lassen sich aber auch Ports dynamisch vergeben oder
bei einer Anwendung durch verschiedene Ports deren Verhalten steuern. Die
Transporteinheiten werden 'UDP-Datagramme' oder 'User Datagramme' genannt. Sie haben
folgenden Aufbau:
Source Port
Identifiziert den sendenden Prozeß (falls nicht benötigt, wird der Wert auf Null
gesetzt).
Destination Port
Identifiziert den Prozeß des Zielknotens.
Length
Länge des UDP-Datagramms in Bytes (mindestens 8 = Headerlänge)
UDP-Checksum
Optionale Angabe (falls nicht verwendet auf Null gesetzt) einer Prüfsumme. Zu deren
Ermittlung wird dem UDP-Datagramm ein Pseudoheader von 12 Byte vorangestellt
(aber nicht mit übertragen), der u. a. IP-Source-Address, IP-Destination-Address und
Protokoll-Nummer (UDP = 17) enthält.
TCP - Transmission Control Protocol
Welches übergeordnete Protokoll der Transportschicht das Datenpaket erhält, steht im
'Protokoll'-Feld eines jeden IP-Paketes. Jedes Protokoll der Transportschicht bekommt eine
eindeutige Identifikationsnummer zugewiesen, anhand der die IP-Schicht entscheiden kann,
wie weiter mit dem Paket zu verfahren ist. Eines der wichtigsten Protokolle der
Transportschicht ist TCP.
Die Aufgabe von TCP ist es, die oben geschilderten Defizite von IP zu verbergen. Für den
TCP-Benutzer soll es nicht mehr sichtbar sein, daß die darunterliegenden Protokollschichten
Datenpakete versenden, sondern es soll der Benutzer mit einem Byte-Strom wie bei einer
normalen Datei (oder einem Terminal) arbeiten können. TCP garantiert vor allen Dingen den
korrekten Transport der Daten - jedes Paket kommt nur einmal, fehlerfrei und in der richtigen
Reihenfolge an. Zusätzlich können bei TCP mehrere Programme die Verbindung zwischen
zwei Rechnern quasi-gleichzeitig nutzen. TCP teilt die Verbindung in viele virtuelle Kanäle
("Ports") auf, die zeitmultiplex mit Daten versorgt werden. Nur so ist es möglich, daß
beispielsweise mehrere Benutzer eines Rechners zur selben Zeit das Netz in Anspruch
nehmen können oder daß man mit einer einzigen Wählverbindung zum Provider gleichzeitig
E-Mail empfangen und Dateien per FTP übertragen kann.
Dieses Protokoll implementiert also einen verbindungsorientierten, sicheren Transportdienst
als Schicht-4-Protokoll. Die Sicherheit wird durch positive Rückmeldungen
(acknowledgements) und Wiederholung fehlerhafter Blöcke erreicht. Fast alle
Standardanwendungen vieler Betriebssysteme nutzen TCP und das darunterliegende IP als
Transportprotokoll, weshalb man die gesamte Protokollfamilie allgemein unter 'TCP/IP'
zusammenfaßt. TCP läßt sich in lokalen und weltweiten Netzen einsetzen, da IP und die
darunterliegenden Schichten mit den unterschiedlichsten Netzwerk- und
Übertragungssystemen arbeiten können (Ethernet, Funk, serielle Leitungen, ...). Zur
Realisierung der Flußkontrolle wird ein Fenstermechanismus (sliding windows) verwendet
(variable Fenstergröße). TCP-Verbindungen sind vollduplex. Wie bei allen
verbindungsorientierten Diensten muß zunächst eine virtuelle Verbindung aufgebaut und bei
Beendigung der Kommunikation wieder abgebaut werden. "Verbindungsaufbau" bedeutet
hier eine Vereinbarung beider Stationen über die Modalitäten der Übertragung (z. B.
Fenstergröße, Akzeptieren eines bestimmten Dienstes, usw.). Ausgangs- und Endpunkte einer
virtuellen Verbindung werden wie bei UDP durch Ports identifiziert. Allgemein verfügbare
Dienste werden über 'well known' Ports (--> feste zugeordnete Portnummer) erreichbar.
Andere Portnummern werden beim Verbindungsaufbau vereinbart.
Damit die ständige Bestätigung jedes Datensegments den Transport nicht über Gebühr
hemmt, werden zwei Tricks verwendet. Zum einen kann die Empfangsbetätigung einem
Segment in Gegenrichtung mitgegeben werden - das spart ein separates Quittungssegment.
Zweitens muß nicht jedes Byte sofort bestätigt werden, sondern es gibt ein sogenanntes
'Fenster'. Die Fenstergröße gibt an, wieviele Bytes gesendet werden dürfen, bis die
Übertragung quittiert werden muß. Erfolgt keine Quittung, werden die Daten nochmals
gesendet. Die empfangene Quittung enthält die Nummer des Bytess, das als nächstes vom
Empfänger erwartet wird - womit auch alle vorhergehenden Bytes quittiert sind. Die
Fenstergröße kann dynamisch mit der Quittung des Empfängers geändert werden. Werden die
Ressourcen knapp, wird die Fenstergröße verringert. Beim Extremfall Null wird die
Übertragung unterbrochen, bis der Empfänger erneut quittiert. Neben einem verläßlichen
Datentransport ist so auch die Flußkontrolle gewährleistet.
Das Prinzip des Fenstermechanismus ist eigentlich ganz einfach. Wenn man das Bild
betrachtet, ergibt sich folgende Sachverhalt:




Die Fenster größe im Beispiel beträgt drei Bytes.
Byte 1 wurde von der Datenquelle gesendet und vom Empfänger quittiert.
Die Quelle hat die Bytes 2, 3 und 4 gesendet, sie wurden aber vom Empfänger noch
nicht quittiert (Quittung eventuell noch unterwegs).
Byte 5 wurde von der Quelle noch nicht gesendet. Er geht erst dann auf die Reise,
wenn die Quittung für Byte 2 (oder höher) eingetroffen ist.
Das TCP-Paket wird oft auch als 'Segment' bezeichnet. Jedem TCP-Block ist ein Header
vorangestellt, der aber wesentlich umfangreicher als die bisherigen ist:
Source Port
Identifiziert den sendenden Prozeß.
Destination Port
Identifiziert den Prozeß des Zielknotens.
Sequence Number
TCP betrachtet die zu übertragenden Daten als numerierten Bytestrom, wobei die
Nummer des ersten Bytes beim Verbindungsaufbau festgelegt wird. Dieser Bytestrom
wird bei der Übertragung in Blöcke (TCP-Segmente) aufgeteilt. Die 'Sequence
Number' ist die Nummer des ersten Datenbytes im jeweiligen Segment (--> richtige
Reihenfolge über verschiedene Verbindungen eintreffender Segmente
wiederherstellbar).
Acknowledgement Number
Hiermit werden Daten von der Empfängerstation bestätigt, wobei gleichzeitig Daten in
Gegenrichtung gesendet werden. Die Bestätigung wird also den Daten "aufgesattelt"
(Piggyback). Die Nummer bezieht sich auf eine Sequence-Nummer der empfangenen
Daten; alle Daten bis zu dieser Nummer (ausschließlich) sind damit bestätigt -->
Nummer des nächsten erwarteten Bytes. Die Gültigkeit der Nummer wird durch das
ACK-Feld (--> Code) bestätigt.
Data Offset
Da der Segment-Header ähnlich dem IP-Header Optionen enthalten kann, wird hier
die Länge des Headers in 32-Bit-Worten angegeben.
Res.
Reserviert für spätere Nutzung
Code
Angabe der Funktion des Segments:






URG Urgent-Pointer (siehe unten)
ACK Quittungs-Segment (Acknowledgement-Nummer gültig)
PSH Auf Senderseite sofortiges Senden der Daten (bevor Sendepuffer gefüllt
ist) und auf Empfangsseite sofortige Weitergabe an die Applikation (bevor
Empfangspuffer gefüllt ist) z. B. für interaktive Programme.
RST Reset, Verbindung abbauen
SYN Das 'Sequence Number'-Feld enthält die initiale Byte-Nummer (ISN) -->
Numerierung beginnt mit ISN + 1. In der Bestätigung übergibt die Zielstation
ihre ISN (Verbindungsaufbau).
FIN Verbindung abbauen (Sender hat alle Daten gesendet), sobald der
Empfänger alles korrekt empfangen hat und selbst keine Daten mehr
loswerden will.
Window
Spezifiziert die Fenstergröße, die der Empfänger bereit ist anzunehmen - kann
dynamisch geändert werden.
Checksum
16-Bit Längsparität über Header und Daten.
Urgent Pointer
Markierung eines Teils des Datenteils als dringend. Dieser wird unabhängig von der
Reihenfolge im Datenstrom sofort an das Anwenderprogramm weitergegeben (URGCode muß gesetzt sein). Der Wert des Urgent-Pointers markiert das letzte
abzuliefernde Byte; es hat die Nummer <Sequence Number> + <Urgent Pointer>.
Options
Dieses Feld dient dem Informationsaustausch zwischen beiden Stationen auf der TCPEbene, z. B. die Segmentgröße (die Ihrerseits von der Größe des IP-Datagramms
abhängen sollte, um den Durchsatz im Netz optimal zu gestalten).
Ablauf einer TCP-Session
Im Gegensatz zu IP ist TCP verbindungsorientiert. Das muß so sein, denn TCPVerbindungen sollen ja für den Benutzer prinzipiell wie Dateien zu handhaben sein. Das
bedeutet, eine TCP-Verbindung wird wie eine Datei geöffnet und geschlossen, und man kann
ihre Position innerhalb des Datenstroms bestimmen, genau wie man bei einer Datei die
Position der Lese- oder Schreibposition angeben kann. TCP sendet die Daten auch in
größeren Einheiten, um den Verwaltungsaufwand durch Header- und Kontrollinformationen
klein zu halten. Im Gegensatz zu den IP-Paketen bezeichnet man die Einheiten der
Transportschicht als "Segmente". Jedes gesendete TCP-Segment hat eine eindeutige
Folgenummer, welche die Position seines ersten Bytes im Byte-Strom der Verbindung angibt.
Anhand dieser Nummer kann die Reihenfolge der Segmente korrigiert und doppelt
angekommene Segmente können aussortiert werden. Da die Länge des Segments aus dem IPHeader bekannt ist, können auch Lücken im Datenstrom entdeckt werden, und der Empfänger
kann verlorengegangene Segmente neu anfordern.
Beim Öffnen einer TCP-Verbindung tauschen beide Kommunikationspartner
Kontrollinformationen aus, die sicherstellen, daß der jeweilige Partner existiert und Daten
annehmen kann. Dazu schickt die Station A ein Segment mit der Aufforderung, die
Folgenummern zu synchronisieren.
Das einleitende Paket mit gesetztem SYN-Bit ("Synchronise-" oder "Open"-Request) gibt die
Anfangs-"Sequence Number" des Client bekannt. Diese Anfangs-"Sequence Number wird
zufällig bestimmt. Bei allen nachfolgenden Paketen ist das ACK-Bit ("Acknowledge",
"Quittung") gesetzt. Der Server antwortet mit ACK, SYN und der Client bestätigt mit ACK.
Das sieht dann so aus:
Die Station B weiß jetzt, daß der Sender eine Verbindung öffnen möchte und an welcher
Position im Datenstrom der Sender anfangen wird zu zählen. Sie bestätigt den Empfang der
Nachricht und legt ihrerseits eine Folgenummer für Übertragungen in Gegenrichtung fest.
Station A bestätigt nun den Empfang der Folgenummer von B und beginnt dann mit der
Übertragung von Daten.
Diese Art des Austausches von Kontrollinformationen, bei der jede Seite die Aktionen der
Gegenseite bestätigen muß, ehe sie wirksam werden können, heißt "Dreiwege-Handshake".
Auch beim Abbau einer Verbindung wird auf diese Weise sichergestellt, daß beide Seiten alle
Daten korrekt und vollständig empfangen haben. Im zeitlichen Zusammenhang stellt sich eine
TCP/IP-Verbindung folgendermaßen dar:
Das folgende Beispiel zeigt die Arbeitsweise des TCP/IP - Protokolls. Es wird eine Nachricht
von einem Rechner im grünen Netz zu einem Rechner im orangen Netz gesendet.
Die Nachricht wird in mehrere Pakete
aufgeteilt und auf der besten Route auf die
Reise geschickt. Das verbindungslose IPProtokoll sorgt zusammen mit den Routern
für den Weg.
Da eine Strecke überlastet ist, werden die
Pakete 3, 4 und 5 auf einer anderen Strecke
weiter transportiert. Dieser Transport erfolgt
zufälligerweise schneller als jener der Pakete 1
und 2.
Die Pakete wandern ihrem
Bestimmungsnetz entgegen. Das erste Paket
ist bereits angekommen. Paket 3 kommt vor
Paket 2 am Ziel an.
Die Pakete 1, 2 und 3 sind - in falscher
Reihenfolge - am Zielrechner angekommen.
Auf der Strecke, auf der Pakete 4 und 5
transportiert werden, tritt eine Störung auf.
Paket 4 ist bei der Störung verloren
gegangen. Paket 5 wird auf einer anderen
Route zum Zielnetz geschickt (wären die
Routen statisch am Router eingetragen,
ginge auch Paket 5 verloren).
Alle überlebenden Pakete sind am Zielrechner
angekommen. Das TCP-Protokoll setzt die
Pakete wieder in der richtigen Reihenfolge
zusammen und fordert das fehlende Paket 4
nochmals beim Sender an. Für den Empfänger
ergibt sich ein kontinuierlicher Datenstrom.
TCP-Zustandsübergangsdiagramm
Den gesamte Lebenszyklus einer TCP-Verbindung beschreibt die folgende Grafik in einer
relativ groben Darstellung.
Erklärung der Zustände:








LISTEN: Warten auf ein Connection Request.
SYN-SENT: Warten auf ein passendes Connection Request, nachdem ein SYN
gesendet wurde.
SYN-RECEIVED: Warten auf Bestätigung des Connection Request
Acknowledgement, nachdem beide Teilnehmer ein Connection Request empfangen
und gesendet haben.
ESTABLISHED: Offene Verbindung.
FIN-WAIT-1: Warten auf ein Connection Termination Request des
Kommunikationspartners oder auf eine Bestätigung des Connection Termination, das
vorher gesendet wurde.
FIN-WAIT-2: Warten auf ein Connection Termination Request des
Kommunikationspartners.
CLOSE-WAIT: Warten auf ein Connection Termination Request (CLOSE) der
darüberliegenden Schicht.
CLOSING: Warten auf ein Connection Termination Request des
Kommunikationspartners. LAST-ACK: Warten auf die Bestätigung des Connection
Termination Request, das zuvor an den Kommunikationspartner gesendet wurde.
Die Hauptmerkmale von TCP

verbindungsorientierter Dienst






vollduplexfähig
hohe Zuverlässigkeit
Sicherung der Datenübertragung durch Prüfsumme und Quittierung mit
Zeitüberwachung
Sliding Window Verfahren
Möglichkeit von Vorrangdaten
Adressierung der Ende-zu-Ende-Verbindung durch Portnummern in Verbindung mit
IP-Adressen
Normalerweise stützen sich Programme auf Anwendungseben auf mehrere der Protokolle
(ICMP, UDP, TCP).
Ports für jeden Dienst
Server-Prozesse lauschen bei UDP und TCP auf bestimmten Portnummern. Per Übereinkunft
werden dazu Ports niedriger Nummern verwendet. Für die Standarddienste sind diese
Portnummern in den RFCs festgeschrieben. Ein Port im "listen"-Modus ist gewissermaßen
eine halboffene Verbindung. Nur Quell-IP und Quellport sind bekannt. Der Serverprozeß
kann vom Betriebssystem dupliziert werden, so daß weitere Anfragen auf diesem Port
behandelt werden können.





Die Portnummern werden auf dem Host-System konfiguriert und haben zwei
Funktionen:
o Allgemein verfügbare Dienste werden über 'well known' Ports (--> feste, per
RFC zugeordnete Portnummer) erreichbar. Sie stehen also für ein Protokoll,
das über die Nummer direkt angesprochen wird
o oder sie werden beim Verbindungsaufbau vereinbart und einem ServerProgramm zugewiesen
Die Portangabe ist nötig, wenn mehrere Serverprogramme auf dem adressierten
Rechner laufen.
Die Portnummer steht im TCP-Header und ist 16 Bit groß. Theoretisch können also
bis zu 65535 TCP-Verbindungen auf einem Rechner mit einer einzigen IP-Adresse
aufgebaut werden.
Portnummern werden oft auch bei der Konfiguration von Internet-Clients als
Parameter gefordert.
Die Client-Prozesse verwenden normalerweise freie Portnummern, die vom lokalen
Betriebssystem zugewiesen werden (Portnummer > 1024).
Die "well known" Portnummern (0 bis 1023), die weltweit eindeutig adressiert werden
müssen, werden durch die IANA (Internet Assigned Numbers Authority) vergeben. Einige
Beispiele für TCP-Ports (UDP verwendet eine andere Zuordnung):
Portnummer
Protokoll
20
FTP (Daten)
21
FTP (Befehle)
22
Secure Shell
23
Telnet
25
SMTP
53
DNS-Server
70
Gopher
79
Finger
80
HTTP (Proxy-Server)
110
POP3
119
NNTP
143
IMAP
194
IRC
210
WAIS
256 - 1023
UNIX-spezifische Services
540
UUCP
1024 - 49151
Registered Ports
49152 - 65535 Dynamic / Private Ports
Eine vollständige Portliste erhält man bei http://www.isi.edu/in-notes/iana/assignments/portnumbers.
IP-Adresse und Portnummer definieren einen Kommunikationsendpunkt, der in der TCP/IPWelt "Socket" genannt wird. Die Grenze zwischen der Anwendungsschicht und der
Transportschicht ist in den meisten Implementierungen zugleich die Grenze zwischen dem
Betriebssystem und den Anwendungsprogrammen. Im OSI-Modell ist diese Grenze in etwa
die Grenze zwischen den Schichten 4 und 5. Daher ordnet man IP meist ungefähr in die Ebene
3 und TCP ungefähr in Ebene 4 des OSI-Modells ein. Da TCP/IP jedoch älter und einfacher
als das OSI-Modell ist, kann diese Einordnung nicht genau passen.
Port-Scans
Beim Scanning wird versucht, offene Ports eines Rechners zu ermitteln. Das ist meist auch
der erste Schritt eines Angreifers, der in einem Rechner eindringen will. Deshalb dient ein
Portscan auch dazu, die Sicherheit des eigenen Systems zu überprüfen. Bei den ScanningMethoden wurden Verfahren entwickelt, bei denen versucht wird, den Scanvorgang auf dem
gescannten Rechern unentdeckt zu lassen.






TCP-Connect-Scan
Bei dieser Methode wird versucht, eine Verbindung zu einem Port auf dem
Zielrechner aufzubauen. Der Scanner läßt einen vollständigen Dreiwege-Handshake
zu, bevor er die Verbindung wieder unterbricht. Diese Art der Scans ist allerdings sehr
leicht zu entdecken und kann auch leicht mit Hilfe von Firewalls abgeblockt werden.
TCP-SYN-Scan
Diese Methode wird oft als "Half-Open-Scan" bezeichnet. Der Scanner sendet ein
SYN-Packet an den Zielrechner, wie bei einem ganz normalen Verbindungsaufbau.
Wenn der Zielrechner mit einem RST antwortet, weiß der Scanner, daß dieser Port
geschlossen ist. Antwortet der Zielrechner jedoch mit einem SYN/ACK, handelt es
sich um einem offenen Port. In diesem Falle wird die Verbindung vom Scanner sofort
mit einem RST beendet. Diese Art des Scannens ist nicht ganz so leicht auf dem
Zielrechner zu entdecken wie der Connect Scan.
Stealth FIN-Scan
Stealth Scans sollen vom Zielrechner nicht entdeckt werden. Allerdings gibt es
Programme, die genau solche Scans entdecken. Beim "Stealth FIN Scan" wird nur ein
Packet mit einem FIN-Flag, ohne begleitendes ACK-Flag gesendet. Diese Art von
Paket ist unzulässig. Wenn der Port offen ist, wird das Paket des Scanners vom
Zielrechner ignoriert. Wenn der Port geschlossen ist, antwortet der Zielrechner mit
einem RST-Paket.
Stealth Xmastree-Scan
Bei diesem Scan sind die FIN-, URG-, und PUSH-Flags alle gemeinsam gesetzt. Auch
dieses Paket ist unzulässig. Wenn der Port offen ist, wird das Paket des Scanners vom
Zielrechner ignoriert. Wenn der Port geschlossen ist, antwortet der Zielrechner mit
einem RST-Paket.
Stealth Null-Scan
Bei diesem Scan sind alle Flags auf Null gesetzt. Alles Weitere wie oben.
ACK-Scan
Dieser Scan wird verwendet, um Firewalls zu testen ob sie mit "stateful inspection"
arbeiten (z.B. Firewall 1) oder ob es sich nur um einfache Packetfilter handelt, die
eingehende SYN Packete verwerfen. Der ACK-Scan sendet ein Packet mit gesetztem
ACK-Flag und zufälliger Sequenznummer an die Ports. Wenn das Paket von der
Firewall durchgelassen wird, sendet der Server ein RST, da das Paket nicht
zuzuordnen ist. In diesem Fall wird der Port als "ungefiltert" klassifiziert. Wenn die
Firewall den Status einer Verbindung überwacht, wird das Paket ohne eine Antwort
vom Zielrechner abgewiesen oder es wird dem Scanner mit einer ICMP Destination
unreachable Nachricht geantwortet.
IP Next Generation
Das rasche (exponentielle Wachstum) des Internet zwingt dazu, das Internet Protokoll in der
Version 4 (IPv4) durch ein Nachfolgeprotokoll (IPv6 Internet Protocol Version 6) zu ersetzen.
Vinton Cerf (der 'Vater' des Internet) bezeichnet in einem Interview mit der Zeitschrift c't das
Internet "(...) als die wichtigste Infrastruktur für alle Arten von Kommunikation.". Auf die
Frage, wie man sich die neuen Kommunikationsdienste des Internet vorstellen könne,
antwortete Cerf:
"Am spannendsten finde ich es, die ganzen Haushaltsgeräte ans Netz anzuschließen. Ich
denke dabei nicht nur daran, daß der Kühlschrank sich in Zukunft mit der Heizung
austauscht, ob es in der Küche zu warm ist. Stromgesellschaften könnten beispielsweise
Geräte wie Geschirrspülmaschinen kontrollieren und ihnen Strom genau dann zur Verfügung
stellen, wenn gerade keine Spitzennachfrage herrscht. Derartige Anwendungen hängen
allerdings davon ab, daß sie zu einem erschwinglichen Preis angeboten werden. Das ist nicht
unbedingt ferne Zukunftsmusik; die Programmierer müßten eigentlich nur damit anfangen,
endlich Software für intelligente Netzwerkanwendungen zu schreiben. Und natürlich muß die
Sicherheit derartiger Systeme garantiert sein. Schließlich möchte ich nicht, daß die
Nachbarkinder mein Haus programmieren!"
Auf die Internet Protokolle kommen in der nächsten Zeit also völlig neue Anforderungen zu.
Classless InterDomain Routing - CIDR
Der Verknappung der Internet-Adressen durch die ständig steigende Benutzerzahl wird
zunächst versucht, mit dem Classless Inter-Domain Routing (CIDR) entgegen zu wirken.
Durch die Vergabe von Internet-Adressen in Klassen (A,B,C,...) wird eine große Anzahl von
Adressen verschwendet. Hierbei stellt sich vor allem die Klasse B als Problem dar. Viele
Firmen nehmen ein Netz der Klasse B für sich in Anspruch, da ein Klasse A Netz mit bis zu
16 Mio. Hosts selbst für eine sehr große Firma überdimensioniert scheint, ein Netz der Klasse
C mit 254 Hosts aber zu klein.
Ein größerer Host-Bereich für Netze der Klasse C (z. B. 10 Bit, 1022 Hosts pro Netz) hätte
das Problem der knapper werdenden IP-Adressen vermutlich gemildert. Ein anderes Problem
wäre dadurch allerdings entstanden: die Einträge der Routing-Tabellen hätten sich um ein
Vielfaches vermehrt.
Ein anderes Konzept ist das Classless Inter-Domain Routing (RFC 1519): die verbleibenden
Netze der Klasse C werden in Blöcken variabler Größe zugewiesen. Werden beispielsweise
2000 Adressen benötigt, so können einfach acht aufeinanderfolgende Netze der Klasse C
vergeben werden. Zusätzlich werden die verbliebenen Klasse-C-Adressen restriktiver und
strukturierter vergeben (RFC 1519). Die Welt ist dabei in vier Zonen aufgeteilt, von denen
jede einen Teil des verbliebenen Klasse C Adreßraums erhält:
194.0.0.0 - 195.255.255.255 Europa
198.0.0.0 - 199.255.255.255 Nordamerika
200.0.0.0 - 201.255.255.255 Mittel- und Südamerika
202.0.0.0 - 203.255.255.255 Asien und pazifischer Raum
204.0.0.0 - 223.255.255.255 Reserviert für zukünftige Nutzung
Jede der Zonen erhält dadurch in etwa 32 Millionen Adressen zugewiesen. Vorteil bei diesem
Vorgehen ist, daß die Adressen einer Region im Prinzip zu einem Eintrag in den RoutingTabellen komprimiert worden sind und jeder Router, der eine Adresse außerhalb seiner
Region zugesandt bekommt diese getrost ignorieren darf.
Internet Protokoll Version 6 - IPv6 (IP Next Generation, IPnG)
Der vorrangige Grund für eine Änderung des IP-Protokolls ist auf den begrenzten Adreßraum
und das Anwachsen der Routing-Tabellen zurückzuführen. CIDR schafft hier zwar wieder
etwas Luft, dennoch ist klar absehbar, daß auch diese Maßnahme nicht ausreicht, um die
Verknappung der Adressen für eine längere Zeit in den Griff zu bekommen. Weitere Gründe
für eine Änderung des IP-Protokolls sind die neuen Anforderungen an das Internet, denen
IPv4 nicht gewachsen ist. Streaming-Verfahren wie Real-Audio oder Video-on-Demand
erfordern das Festlegen eines Mindestdurchsatzes, der nicht unterschritten werden darf. Bei
IPv4 kann so ein "Quality of Service" jedoch nicht definiert - und damit auch nicht
sichergestellt - werden. Die IETF (Internet Engineering Task Force) begann deshalb 1990 mit
der Arbeit an einer neuen Version von IP. Die wesentlichen Ziele des Projekts sind:









Unterstützung von Milliarden von Hosts, auch bei ineffizienter Nutzung des
Adreßraums
Reduzierung des Umfangs der Routing-Tabellen
Vereinfachung des Protokolls, damit die Router Pakete schneller abwickeln können
Höhere Sicherheit (Authentifikation und Datenschutz) als das heutige IP
Mehr Gewicht auf Dienstarten, insbesondere für Echtzeitanwendungen
Unterstützung von Multicasting durch die Möglichkeit, den Umfang zu definieren
Möglichkeit für Hosts, ohne Adreßänderung auf Reise zu gehen (Laptop)
Möglichkeit für das Protokoll, sich zukünftig weiterzuentwickeln
Unterstützung der alten und neuen Protokolle in Koexistenz für Jahre
Im Dezember 1993 forderte die IETF mit RFC 1550 die Internet-Gemeinde dazu auf,
Vorschläge für ein neues Internet Protokoll zu machen. Auf die Anfrage wurde eine Vielzahl
von Vorschlägen eingereicht. Diese reichten von nur geringfügigen Änderungen am
bestehenden IPv4 bis zur vollständigen Ablösung durch ein neues Protokoll. Aus diesen
Vorschlägen wurde von der IETF das Simple Internet Protocol Plus (SIPP) als Grundlage für
die neue IP-Version ausgewählt.
Als die Entwickler mit den Arbeiten an der neuen Version des Internet Protokolls begannen,
wurde ein Name für das Projekt bzw. das neue Protokoll benötigt. Angeregt durch die
Fernsehserie "Star Trek - Next Generation", wurde als Arbeitsname IP - Next Generation
(IPnG) gewählt. Schließlich bekam das neue IP eine offizielle Versionsnummer zugewiesen:
IP Version 6 oder kurz IPv6. Die Protokollnummer 5 (IPv5) wurde bereits für ein
experimentelles Protokoll verwendet.
Die Merkmale von IPv6
Viele der Merkmale von IPv4 bleiben in IPv6 erhalten. Trotzdem ist IPv6 im allgemeinen
nicht mit IPv4 kompatibel, wohl aber zu den darüberliegenden Internet-Protokollen,
insbesondere den Protokollen der Transportschicht (TCP, UDP). Die wesentlichen Merkmale
von IPv6 sind:


Adreßgröße: Statt bisher 32 Bit stehen nun 128 Bit für die Adressen bereit.
Theoretisch lassen sich damit 2128 = 3.4*1038 Adressen vergeben.
Header-Format: Der IPv6-Header wurde vollständig geändert. Der Header enthält
nur sieben statt bisher 13 Felder. Diese Änderung ermöglicht die schneller
Verarbeitung der Pakete im Router. Im Gegensatz zu IPv4 gibt es bei IPv6 nicht mehr
nur einen Header, sondern mehrere Header. Ein Datengramm besteht aus einem BasisHeader, sowie einem oder mehreren Zusatz-Headern, gefolgt von den Nutzdaten.




Erweiterte Unterstützung von Optionen und Erweiterungen: Die Erweiterung der
Optionen ist notwendig geworden, da einige der bei IPv4 notwendige Felder nun
optional sind. Darüber hinaus unterscheidet sich auch die Art, wie die Optionen
dargestellt werden. Für Router wird es damit einfacher, Optionen, die nicht für sie
bestimmt sind, zu überspringen.
Dienstarten: IPv6 legt mehr Gewicht auf die Unterstützung von Dienstarten. Damit
kommt IPv6 den Forderungen nach einer verbesserten Unterstützung der Übertragung
von Video- und Audiodaten entgegen, z. B. durch eine Option zur
Echtzeitübertragung.
Sicherheit: IPv6 beinhaltet nun im Protokoll selbst Mechanismen zur sicheren
Datenübertragung. Wichtige neue Merkmale von IPv6 sind hier Authentifikation,
Datenintegrität und Datenverlässlichkeit.
Erweiterbarkeit: IPv6 ist ein erweiterbares Protokoll. Bei der Spezifikation des
Protokolls wurde nicht versucht, alle möglichen Einsatzfelder für das Protokoll in die
Spezifikation zu integrieren. Über Erweiterungs-Header kann das Protokoll erweitert
werden.
Aufbau des IPv6-Basis-Headers
Im IPv6 wird im Vergleich zum IPv4 auf eine Checksumme verzichtet, um den Routern die
aufwendige Überprüfung - und damit Rechenzeit - zu ersparen. Ein Übertragungsfehler muss
deshalb in den höheren Schichten erkannt werden. Der Paketkopf ist durch die Verschlankung
nur doppelt so groß, wie ein IPv4-Header.
Version:
Mit dem Feld Version können Router überprüfen, um welche Version des Protokolls
es sich handelt. Für ein IPv6-Datengramm ist dieses Feld immer 6 und für ein IPv4-
Datengramm dementsprechend immer 4. Mit diesem Feld ist es möglich für eine lange
Zeit die unterschiedlichen Protokollversionen IPv4 und IPv6 nebeneinander zu
verwenden. Über die Prüfung des Feldes Version können die Daten an das jeweils
richtige "Verarbeitungsprogramm" weitergeleitet werden.
Priority:
Durch das Feld Priority (oder Traffic Class) kann angegeben werden, ob ein Paket
bevorzugt behandelt werden muß. Dies ist für die Anpassung des Protokolls an die
neuen Real Time Anwendungen nötig geworden. Damit können zum Beispiel
Videodaten den E-Maildaten vorgezogen werden. Bei einem Router unter Last besteht
damit die Möglichkeit der Flusskontrolle. Pakete mit kleinerer Priorität werden
verworfen und müssen wiederholt werden.Mit den vier Bit lassen sich 16 Prioritäten
angeben, wovon 1 bis 7 für "Non Real Time"- und 8 bis 15 für "Real Time"Anwendungen reserviert sind. Die Zahl Null gibt an, dass die Priorität des Verkehrs
nicht charakterisiert ist.
Flow Label
Mit Hilfe des Feldes Flow Label können Eigenschaften des Datenflusses zwischen
Sender und Empfänger definiert werden. Das Flow Label selbst ist nur eine
Zufallszahl. Die Eigenschaften müssen durch spezielle Protokolle oder durch den
Hop-by-Hop-Header in den Routern eingestellt werden. Eine Anwendung ist zum
Beispiel, daß die Pakete eines Flusses immer den gleichen Weg im Netz nehmen.
Durch Speichern der Informationen für das jeweilige Flow-Label, muß der Router
bestimmte Berechnungen nur für das erste Paket ausführen, und kann danach für alle
Folgepakete die Resultate verwenden. Erst die Einführung des Flow Labels ermöglicht
die Einführung von Quality-of-Service-Parametern im IP-Verkehr.
Payload Length
Das Feld Payload Length (Nutzdatenlänge) gibt an, wie viele Bytes dem IPv6-BasisHeader folgen, der IPv6-Basis-Header ist ausgeschlossen. Die Erweiterungs-Header
werden bei der Berechnung der Nutzdatenlänge mit einbezogen. Das entsprechende
Feld wird in der Protokollversion 4 mit Total Length bezeichnet. Allerdings bezieht
IPv4 den 20 Byte großen Header auch in die Berechnung ein, wodurch die
Bezeichnung "total length" gerechtfertigt ist.
Next Header
Das Feld Next Header gibt an, welcher Erweiterungs-Header dem IPv6-Basis-Header
folgt. Jeder folgende Erweiterungs-Header beinhaltet ebenfalls ein Feld Next Header,
das auf den nachfolgenden Header verweist. Beim letzten IPv6-Header, gibt das Feld
an, welches Transportprotokoll (z.B. TCP oder UDP) folgt.
Hop Limit
Im Feld Hop Limit wird festgelegt, wie lange ein Paket überleben darf. Der Wert des
Feldes wird von jedem Router vermindert. Ein Datengramm wird verworfen, wenn das
Feld den Wert Null hat. IPv4 verwendete hierzu das Feld Time to Live. Die
Bezeichnung bringt mehr Klarheit, da schon in IPv4 die Anzahl Hops gezählt und
nicht die Zeit gemessen wurde.
Source Address, Destination Address
Die beiden Felder für Quell- und Zieladresse dienen zur Identifizierung des Senders
und Empfängers eines IP-Datengramms. Bei IPv6 sind die Adressen vier mal so groß
wie IPv4: 128 Bit statt 32 Bit.
Das Feld Length (Internet Header Length - IHL) von IPv4 ist nicht mehr vorhanden, da der
IPv6-Basis-Header eine feste Länge von 40 Byte hat. Das Feld Protocol wird durch das Feld
Next Header ersetzt. Alle Felder die bisher zur Fragmentierung eines IP-Datengramms
benötigt wurden (Identification, Flags, Fragment Offset), sind im IPv6-Basis-Header nicht
mehr vorhanden, da die Fragmentierung in IPv6 gegenüber IPv4 anders gehandhabt wird.
Alle IPv6-kompatiblen Hosts und Router müssen Pakete mit einer Größe von 1280 Byte
unterstützen. Empfängt ein Router ein zu großes Paket, so führt er keine Fragmentierung mehr
durch, sondern sendet eine Nachricht an den Absender des Pakets zurück, in der er den
sendenden Host anweist, alle weiteren Pakete zu diesem Ziel aufzuteilen. Es wird also vom
Hosts erwartet, daß er von vornherein eine passende Paketgröße wählt. Die Steuerung der
Fragmentierung erfolgt bei IPv6 über den Fragment Header. Das Feld Checksum ist nicht
mehr vorhanden.
Erweiterungs-Header im IPv6
Bei IPv6 muß nicht mehr der ganze optionale Teil des Headers von allen Routern verarbeitet
werden, womit wiederum Rechenzeit eingespart werden kann. Diese optionalen Header
werden miteinander verkettet. Jeder optionale Header beinhaltet die Identifikation des
folgenden Header. Es besteht auch die Möglichkeit selber Optionen zu definieren.
Derzeit sind sechs Erweiterungs-Header definiert. Alle Erweiterungs-Header sind optional.
Werden mehrere Erweiterungs-Header verwendet, so ist es erforderlich, sie in einer festen
Reihenfolge anzugeben.
Header
Beschreibung
IPv6-Basis-Header
Zwingend erforderlicher IPv6-Basis-Header
Optionen für
Teilstrecken
(Hop-by-Hop
Options Header)
Dies ist der einzige optionale Header, der von jedem
Router bearbeitet werden muß. Bis jetzt ist nur die
"Jumbo Payload Option" definiert, in der die Länge
eines Paketes angegeben werden kann, das länger als
64 KByte ist.
Optionen für Ziele
(Destination
Options Header)
Zusätzliche Informationen für das Ziel
Routing
(Routing Header)
Definition einer vollständigen oder teilweisen Route.
Er wird für das Source-Routing in IPv6 verwendet.
Fragmentierung
(Fragment Header)
In IPv6 wird, wie oben beschrieben, die
Fragmentierung nur noch End to End gemacht. Die
Fragmentierinformationen werden in diesem
optionalen Header abgelegt.
Authentifikation
(Authentication
Header)
Er dient der digitalen Signatur von Paketen, um die
Quelle eindeutig feststellen zu können.
Verschlüsselte
Sicherheitsdaten
(Encapsulating
Security Payload
Header)
Informationen über den verschlüsselten Inhalt.
Optionen für Ziele
Zusätzliche Informationen für das Ziel (für
(Destination
Options Header)
Optionen, die nur vom endgültigen Ziel des Paketes
verarbeitet werden müssen).
Header der höheren Header der höheren Protokollschichten (TCP, UDP,
Schichten
...)
(Upper Layer
Header)
IPv6-Adressen
Die IPv6-Adressen sind zwar von 32 Bit auf 128 Bit angewachsen, trotzdem sind die
grundsätzlichen Konzepte gleich geblieben. Die Adresse wird normalerweise Sedezimal
(Hexadezimal, Basis 16) notiert und hat die allgemeine Form
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Sie ist damit recht länglich. Um die Schreibweise zu vereinfachen, wurden einige Regeln
eingeführt:










Führende Nullen
Die führenden Nullen können mit Nullen oder Doppelpunkten zusammengefasst
werden.
1234:0000:0000:0000:0000:0000:0000:1234
-->
1234:0:0:0:0:0:0:1234
-->
1234::1234
IPv4 kompatible Adressen haben die Form:
0:0:0:0:0:0:C206:AFFE
oder
::C206:AFFE
Um die Lesbarkeit zu erhöhen kann man auch eine gemischt Form verwenden:
::194.6.161.126




IPv4 gemappte IPv6 Adressen haben die Form:
::FFFF:C206:A17E
Die Loopback Adresse ist neu (anstelle 127.0.0.1):
::1
In IPv4 wurden die Adressen anfänglich in die bekannten Klassen eingeteilt. Ein weiteres
Problem bei den IPv4 Adressen ist, daß die Router keine Hierarchie in den Adressen erkennen
können. Auch IPv6 ist in der allgemeinen Form unstrukturiert, es kann aber durch definierte
Präfixe strukturiert werden. Die allgemein strukturiert Adresse sieht danach wie folgt aus:
Die Strukturierung erlaubt die Einteilung der Adresse in Adresstypen. Jeder Präfix
identifiziert somit einen Adresstyp. Die bereits definierten Adresstypen und die zugehörigen
Präfixe sind:
Adresstyp
Reserviert für IPv4 und Loopback
Präfix (binär)
0000 0000
NSAP-Adressen
0000 001
IPX-Adressen
0000 010
Anbieterbasierte Unicast-Adresse
010
Reserviert für geografische Unicast-Adresse
100
Zusammenfassbare globale Adressen
001
Standortlokale Adresse
Multicast-Adresse
1111 1110 11
1111 1111
Wie man in der Tabelle erkennen kann, werden die Adressen grob in die Typen Unicast,
Multicast und Anycast eingeteilt, deren Eigenschaften nachfolgend kurz erklärt werden sollen.

Unicast
Als Unicast-Adressen bezeichnet man die Adressen, die für Punkt-zu-PunktVerbindungen verwendet werden. Sie werden in verschiedene Gruppen eingeteilt:
o Geographisch basierte Unicast-Adresse
Für diese Adressen wurde erst der Adressbereich und der Präfix reserviert. Die
Idee ist, dass ein hierarchisches Routing aufgrund der geographischen Lage ähnlich wie beim Telefon - möglich sein soll.
o Anbieterbasierte Unicast-Adressen
Dieser Adresstyp erlaubt ein hierarchisches Routing aufgrund der Adressräume
der Anbieter. Diese Adressen werden von einem Register über ein großes
Gebiet verwaltet. Diese Register geben die Adressen an die Anbieter weiter,
welche ihrerseits Adressen weitergeben können. Somit ergibt sich eine AdressStruktur, die wie folgt aussieht:
Die Einführung von nationalen Registern ergibt eine Aufteilung der Anbieterund Subscriber-ID in National-Register-, Anbieter- und Subscriber-ID.

Linklokale und standortlokale Adressen
Diese Adressen werden für die TCP/IP-Dienste innerhalb eines Unternehmens
genutzt. Die Linklokalen Adressen werden nicht in das Internet geroutet und haben
den folgenden Aufbau:
Im Gegensatz dazu stehen die standortlokalen Adressen, die nur innerhalb eines
Subnetzes gültig sind und deshalb von keinem Router behandelt werden.

Multicast-Adressen
In IPv4 wird das Rundsenden eines Paketes an mehrere Stationen durch das IGMP
(Internet Group Management Protokoll) realisiert. In IPv6 ist das Prinzip
übernommen, aber ein eigener Adresstyp definiert worden. IGMP entfällt somit
gänzlich. Das Paket für Multicast-Meldungen sieht wie folgt aus:
Das Flag gibt an, ob die Gruppen ID temporär, oder von der IANA zugewiesen ist.
Der Scope gibt den Gültigkeitsbereich der Multicast Adresse an. Dieser reicht vom
nodelokalen bis zum globalen Bereich.

Anycast Adressen
Diese Adressen sind neu definiert worden. es können mehrere Rechner zu einer
Gruppe zusammengefasst werden und sie sind dann unter einer einzigen Adresse
erreichbar. Damit ist beispielsweise eine Lastverteilung möglich: der Rechner, der am
wenigsten belastet ist, behandelt das Paket. Die Adresse hat die folgende Struktur:
Sicherheit
Der Bedarf an digitalen Unterschriften oder elektronischen Zahlungsmöglichkeiten steigt
ständig. Deshalb stand bei der Spezifikation von IPv6 die Sicherheit von Anfang an im
Mittelpunkt. Für die Sicherheitsfunktionen von IPv6 ist eine spezielle Arbeitsgruppe "IPSec"
zuständig.
In IPv6 wurden Sicherheitsmechanismen für die Authentisierung und Verschlüsselung auf IP
Ebene spezifiziert. Die Verschlüsselungsfunktionen definieren Verfahren, die das Mitlesen
durch Unbefugte verhindern. Es gibt zwei unterschiedliche Ansätze. Bei der ersten Variante
werden alle Nutzdaten (Payload) verschlüsselt. Der Header bleibt normal lesbar. Bei der
anderen Variante ist es möglich, den Header ebenfalls zu verschlüsseln. Das codierte Paket
wird in ein anderes IPv6-Packet verpackt und zu einem fixen Ziel befördert ("IP-Tunnel").
Am Ziel wird das Paket wieder entschlüsselt und über das sichere interne Netz übertragen.
Authentisierungsmechanismen liefern den Beweis auf Unverfälschtheit der Nachricht und
identifiziert den Absender (Digitale Unterschrift). Hier werden verschiedene kryptographische
Verfahren eingesetzt. Die Verfahren für die Verschlüsselung und die Authentisierung können
auch getrennt angewandt werden. Verwaltung und Verteilung der Schlüssel wird nicht von
IPv6 gelöst. Das Standardverfahren für den IPv6-Authentisierungsmechanismus ist MD5 mit
128 Bit langen Schlüsseln. IPv6 schreibt keinen Verschlüsselungsmechanismus vor, jedes
System im Internet muß jedoch den DES mit CBD (Cipher Block Chaining) unterstützen.
Domain Name System (DNS)
Es hat sich ziemlich früh herausgestellt, daß menschliche Benutzer die numerischen IPAdressen nicht benutzen wollen, sondern aussagekräftige und vor allem merkbare Namen
bevorzugen. Außerdem ist es ein großer Nachteil der IP- Adressen, daß aus ihnen keinerlei
geographische Information zu entnehmen ist. Man sieht einer Zieladresse nicht an, ob sie in
Australien oder im Nebenzimmer lokalisiert ist, außer man kennt zufällig die gewählten
Zahlen. Es wurde daher das Domain Name System entwickelt, das den Aufbau von
Rechnernamen regelt. Es ordnet jedem (weltweit eindeutigen) Namen eine IP-Adresse zu.
Dabei gibt es einige Varianten. Eine Maschine mit einer IP-Adresse kann mehrere Funktionen
haben und daher auch mehrere Namen, die auf diese Funktionen hinweisen. Genauso kann
eine Maschine (z. B. ein Router) viele IP-Adressen haben aber nur einen Namen.
Beim "Domain-Name-System" (oder kurz: DNS) handelt es sich um einen Dienst, der zu
einem Rechnernamen die zugehörige IP-Nummer liefert und umgekehrt. Das ist in etwa mit
der Funktionsweise einer Telefonauskunft vergleichbar: Der Kunde ruft bei einer bestimmten
Telefonnummer an und fragt nach der Rufnummer eines Teilnehmers. Nachdem er Name und
Wohnort der gesuchten Person durchgegeben hat, erhält er als Antwort die gewünschte
Nummer aus einem Verzeichnis. Genauso läuft eine DNS-Abfrage ab.
Gibt ein Benutzer in seinem Webbrowser zum Beispiel die Adresse
http://www.VereinGegenZuLangeDomainnamenEV.de
ein, dann sorgt ein Teil der Netzwerk-Software auf seinem lokalen Rechner dafür, daß ein
Name-Server nach der IP-Adresse des Rechners
www.vereingegenzulangedomainnamenev.de gefragt wird. Dieser Softwareteil wird als
Resolver bezeichnet und entspricht in obigem Beispiel dem Kunden, der die Auskunft anruft.
Welche IP-Adresse dieser Server hat, muß dem Klientenrechner natürlich bekannt sein,
genauso wie der Kunde eine einzige Telefonnummer wissen muß, nämlich die der Auskunft
selbst. Auf der Serverseite arbeitet eine Software, die als "Domain-Name-Server" oder kurz
"Name-Server" bezeichnet wird und anhand einer Datenbank ("Zone-File") die passende IPNummer zum Rechnernamen liefert, oder einen anderen Name-Server fragt, wenn die
Adresse unbekannt ist.
DNS ist ein typisches Beispiel für einen Verzeichnisdienst. Seine Aufgaben sind:







Strukturierung der Namen. (Domänen-Konzept)
Zuteilung und Verwaltung von Namen.
Auflösen von Namen (="Nachschlagen") in beide Richtungen (Name zu Adresse und
Adresse zu Name)
Zwischenspeichern von Adressen (Caching)
Einteilung der Daten in hierarchische Ebenen
Verteilung der Daten auf verschiedene Knoten
Bereitstellung von Redundanz (Secondary-DNS, Caching-Only-Server)
Damit das DNS funktioniert muß es Instanzen geben, die Namen in IP-Adressen und IPAdressen in Namen umwandeln ('auflösen') können. Diese Instanzen sind durch Programme
realisiert, die an größeren Maschinen ständig (meist im Hintergrund) im Betrieb sind und
'Nameserver' heißen. Jeder Rechner, der an das Internet angeschlossen wird, muß die Adresse
eines oder mehrerer Nameserver wissen, damit die Anwendungen auf diesem Rechner mit
Namen benutzt werden können. Die Nameserver sind für bestimmte Bereiche, sogenannte
'domains' oder 'Zonen', zuständig (Institute, Organisationen, Regionen) und haben Kontakt zu
anderen Nameservern, so daß jeder Name aufgelöst werden kann.
Domänen-Konzept
In den Anfängen des ARPA-Nets, aus dem das Internet entstand, wurde die Namensauflösung
über eine einzige Datei erledigt. Jeder Rechner kopierte sich Nachts per FTP diese Datei von
einem Master-Server auf die lokale Platte. Dieses Konzept funktioniert natürlich nur, solange
die Anzahl der Namen nicht groß ist. Die benötigte Bandbreite ist proportinal zum Quadrat
der beteiligten Rechner.
B ~ N2
Als Relikt aus dieser Zeit kennt fast jedes Betriebssystem auch heute noch eine Hosts-Datei,
in der für kleine Netze Rechner/Nummern-Zuordnungen abgelegt werden könen. (Bei
Windows im Verzeichnis \WINDOWS\HOSTS, bei Unix unter /etc/hosts, bei Novell unter
SYS:SYSTEM/ETC/HOSTS, etc.) Die Syntax aller dieser Hosts-Dateien ist einfach. Für jeden
Rechner gibt es eine eigene Zeile mit dem Inhalt:
IP-Nummer
Hostname Alias Alias ....
Zum Beispiel:
192.168.112.1
192.168.112.2
192.168.112.3
192.168.112.4
192.168.112.5
192.168.112.6
192.168.112.7
192.168.112.7
192.168.112.8
chef dumpfbacke
Snow-White
Doc
Happy
Bashful
Sneezy
Sleepy
Grumpy
Dopey
Der Begriff Alias läßt sich dabei am besten durch "Spitzname" (oder englisch Nickname)
ersetzen; also ein weiterer Name für ein und den selben Rechner.
Bei einer kleinen Menge von Rechnern ist die Namensverwaltung mit einer Datei noch
möglich; für einen so großen und ständig wechselnden Verbund wie das Internet ist sie aber
nicht geeignet. Hier ist eine dezentrale Verwaltung mit einem eigens darauf abgestimmten
Namensraum nötig.
Der Namensraum des DNS ist in sogenannte Domänen eingeteilt. Die Domänen sind
hierarchisch als Baum angeordnet,
Ausgehend von der Wurzel (=Root) des Baumes ist der Namensraum in sogenannte
"Toplevel-Domains" eingeteilt. Man unterscheidet dabei zwischen zwei verschiedenen
Klassen von Toplevel-Domänen: Den generischen und den länderspezifischen.
Toplevel-Domänen
generisch
com
Kommerzielle Organisationen
edu
(education) Schulen und Hochschulen
gov
(government) Regierungsinstitutionen
mil
militärische Einrichtungen
net
Netzwerk betreffende Organisationen
org
Nichtkommerzielle Organisationen
int
Internationale Organisationen
arpa
und das alte ARPA-Net bzw. RückwärtsAuflösung von Adressen
Ende 2000 sind neue TLDs von der ICANN genehmigt worden:
aero
Luftfahrtindustrie
coop
Firmen-Kooperationen
museum Museen
pro
Ärzte, Rechtsanwälte und andere
Freiberufler
biz
Business (frei für alle)
info
Informationsanbieter (frei für alle)
name
Private Homepages (frei für alle, aber
nur dreistufige Domains der Form
<Vorname>.<Name>.name)
länderspezifisch Jeweils ein Länderkürzel für jedes Land, z.B.:
by
Weissrussland
de
Deutschland
at
Östereich
fr
Frankreich
to
Tonga
tv
Tuvalu
Unterhalb der Toplevel-Domänen folgen Subdomänen, die wiederum Domänen enthalten
könen und schliesslich, als Blatt des Baumes, ein einzelner Rechner. Der Name
www.netzmafia.de ist also so zu verstehen. In der Toplevel-Domäne ".de" ist die Subdomain
"Netzmafia" bekannt. Innerhalb der Subdomain "netzmafia" gibt es einen Rechner namens
"www". Analog zu unserem Beispiel mit der Telefonauskunft, ist mit "de" das Land, mit
"netzmafia" der Ort und die Straße und mit "www" der Name eines Teilnehmers bestimmt.
Die komplette Adresse eines Rechners in der beschriebenen Notation (z.B.
(www.netzmafia.de) bezeichnet man als FQDN (Full-Qualified-Domain-Name)
Für die Aufnahme einer Verbindung zwischen zwei Rechnern muß in jedem Fall der
Rechnername in eine zugehörige IP- Adresse umgewandelt werden. Aus Sicherheitsaspekten
ist es manchmal wünschenswert, auch den umgekehrten Weg zu gehen, nämlich zu einer sich
meldenden Adresse den Namen und damit die organisatorische Zugehörigkeit offenzulegen.
Komponenten des DNS
Insgesamt sind es drei Hauptkomponenten, aus denen sich das DNS zusammensetzt:
1. Der Domain Name Space, ein baumartig, hierarchisch strukturierter Namensraum
und die Resource Records. Das sind Datensätze, die den Knoten zugeordnet sind.
2. Name Server sind Programme bzw. Rechner, die die Informationen über die Struktur
des Domain Name Space verwalten und aktualisieren. EinNameserver hat
normalerweise nur eine Teilsicht des Domain Name Space zu verwalten. Oft wird
auch der Rechner, auf dem das Nameserverprogramm läuft, als 'Nameserver' oder
'DNS-Server' bezeichnet.
3. Resolver sind die Programme, die für den Client Anfragen an den Nameserver stellen.
Resolver sind einemNameserver zugeordnet; bei Anfragen, die er nicht beantworten
kann (anderer Teilbereich des Domain Name Space). kann er aufgrund von
Referenzen andere Nameserver kontakten, um die Information zu erhalten.
Der Nameserver des DNS verwaltet also einzelne Zonen, die einen Knoten im DNS-Baum
und alle darunterliegenden Zweige beinhalten. Auf jeder Ebene des DNS-Baums kann es
Namesever geben, wobei jeder Nameserver seinen nächsthöheren und nächstniedrigeren
Nachbarn kennt. Aus Sicherheitsgründen gibt es für jede Zone in der Regel mindestens zwei
Nameserver (primary und secondary), wobei beide die gleiche Information halten.
Nameservereinträge können nicht nur die Zuordnung Rechnername - IP-Adresse enthalten,
sondern (neben anderem) auch weitere Namenseinträge für einen einzigen Rechner und
Angaben für Postverwaltungsrechner einer Domain (MX, mail exchange).
Basis des Nameservice bilden die "Root-Nameserver", die für die Top-Level-Domains
zuständig sind. Federführende Organistation ist hier die ICANN (=Internet Corporation for
Assigned Names and Numbers , Adresse: http://www.icann.org). Gründung 1998. ICANN
beauftragt die Verwalter der Zone "." (Wurzel des DNS-Baumes) mit 13 Servern. Bis auf die
Server I (Stockholm), K (London) und M (Tokio) stehen alle Server in den USA.
Name
Typ
Betreiber
URL
a
com
InterNic
http://www.internic.org
b
edu
ISI
http://www.isi.edu
c
com
PSINet
http://www.psi.net
d
edu
UMD
http://www.umd.edu
e
usg
NASA
http://www.nasa.gov
f
com
ISC
http://www.isc.org
g
usg
DISA
http://nic.mil
h
usg
ARL
http://www.arl.mil
i
int
NordUnet
http://www.nordu.net
j
( )
(TBD)
http://www.iana.org
k
int
RIPE
http://www.ripe.net
l
( )
(TBD)
http://www.iana.org
m
int
WIDE
http://www.wide.ad.jp
Der Server A ist der primäre Server, alle anderen sind seine Secondaries. Eine Liste dieser
Root-Server muss jeder DNS-Server haben (Ausnahme: Cache-Only-Server). Erzeugung der
Liste mit dem Kommando:
dig @rs.internic.net . ns > root.servers
Die Namen, die im Internet verwendet werden müssen dabei einige Spezifikationen erfüllen:


Die Länge eines Namensteiles (Domänen- oder Rechnername) darf maximal 63
Zeichen betragen.
Die Gesamtlänge des Full-Qualified-Domain-Names darf 255 Zeichen nicht
überschreiten.


Nur Buchstaben, Ziffern und "-" sind in den Namen zugelassen. Dabei muss jeder
Name mit einem Buchstaben oder einer Ziffer beginnen und enden. ("3bla-fasel" ist
zulässig, "3bla-" aber nicht.)
Zwischen Groß- und Kleinschreibung wird nicht unterschiedem.
Bei der Registrierung einer Domain unterhalb von ".de" gelten zusätzlich noch folgende
Regeln:



Der Domainname muß mindestens 3 Zeichen haben. Insgesamt gibt es in ".de" noch 4
Domains mit nur 2 Buchstaben, die aus Besitzstands-Gründen beibehalten werden.
Wegen eines weit verbreiteten Fehlers in der Named-Server-Software sind Domains
mit den gleichen Namen wie Toplevel-Einträge verboten. (Also z.B.: "at.de") Das ist
in RFC 1535 näher beschrieben.
KFZ-Kennzeichen können nicht registriert werden.
Ein wichtiger Bestandteil des DNS-Konzeptes ist die Aufteilung der benötigten Datenbank
auf viele verschiedene Rechner. Da das Gesamtsystem voll funktionsfähig bleiben muß, auch
wenn ein Server ausgefallen ist, wir die Datenhaltung mit Hilfe von Zuständigkeiten gelöst:
Zu jeder Domain gibt es mindestens einen zugehörigen Server, der verantwortlich die darin
enthaltenen Subdomains oder Rechner verwaltet, oder die Verwaltung an einen weiteren
Server weiterdelegiert. Am Stamm des DNS-Baumes sitzen dazu die "Root-Server", die alle
einträge ihrer jeweiligen Domain kennen. Das heißt, daß der Root-Nameserver der Domäne
".de" einen Eintrag für den Named-Server der Domain "netzmafia.de" besitzt. Dieser Server
hat wieder eine Liste der in "netzmafia.de" enthaltenen Rechner und Subdomains.
Die Frage eines Clients nach der IP-Nummern eines Rechners wird wie folgt abgewickelt:
1. Der Client-Rechner "grumpy.zwerge.org" stellt die DNS-Anfrage nach
"www.netzmafia.de" an seinen zuständigen DNS-Server. Dessen IP-Nummer muss
dem Client bekannt sein.
2. Kennt der Nameserver der Domain "zwerge.org" die Antwort nicht, so erkundigt er
sich beim Root-Nameserver nach der Adresse des Nameservers von ".de"
3. Der Root-Nameserver antwortet dem zuständigen DNS-Server der Domain
"zwerge.org" mit der Adresse des Nameservers von ".de"
4. Der Nameserver der Domain "zwerge.org" erkundigt sich beim Nameserver von ".de"
nach der Adresse des Nameservers von "netzmafia.de".
5. Der Nameserver von ".de" antwortet dem zuständigen DNS-Server der Domain
"zwerge.org" mit der Adresse des Nameservers von "netzmafia.de"
6. Der Nameserver der Domain "zwerge.org" erkundigt sich beim Nameserver von
"netzmafia.de" nach der Adresse des Rechners "www.netzmafia.de".
7. Der Nameserver von "netzmafia.de" antwortet dem zuständigen DNS-Server der
Domain "zwerge.org" mit der Adresse des Rechners von "www.netzmafia.de".
8. Der DNS-Server von "zwerge.org" liefert die IP-Nummer an den anfragenden Client.
Damit ist die DNS-Abfrage abgehandelt.
DNS-Typen
Man unterscheidet folgende DNS-Typen



Cache-Only
o Besitzt keine eigenen Tabellen mit Rechnernamen (Zone-Files).
o Alle Anfragen werden an einen übergeordneten Server weitergegeben.
o Adressen werden zwischengespeichert.
o Zweck: Z.B. Entlastung einer Providerleitung
o Sehr einfach einzurichten.
Secondary-DNS
o Besitzt eigene Tabellen, die er vom Primary-DNS kopiert.
o Die Tabellen können aber nicht verändert werden.
o Zweck: Lastteilung, Backup
o Einfach einzurichten.
Primary-DNS
o Besitzt eigene Tabellen für eine oder mehrere Zonen.
o Tabellen können lokal verändert werden.
o Server ist "authoritative" für seine Zone.
o Relativ hoher Aufwand für Einrichtung und Pflege.
Netzwerkkonfiguration am Beispiel Linux
Eigentlich ist es egal, welches Betriebssysem als Beispiel genommen wird - die
Netzkonfiguration ist in etwa immer gleich. Auch viele der unten erwähnten Dateien finden
sich z. B. bei Windows. Linux dient deshalb als Beispiel, weil man hier nicht nur
irgendwelche Fenster anklickt, sondern sehen kann, wie mit ein paar Kommandos das
Netzwerkinterface eingebunden wird und welche Effekte auf welche Art und Weise erzielt
werden. Auf den (Hardware-)Treiber des Netzwerk-Interface wird aus diesem Grund nicht
eingegangen. Um festzustellen, ob überhaupt ein Treiber geladen wurde, genügt das
Kommando
dmesg | more
das alle Boot-Meldungen auflistet. Darin findet man auch die Meldungen zur Netzwerkkarte,
z.B.:
...
8139cp 10/100 PCI Ethernet driver v0.0.6 (Nov 19, 2001)
8139cp: pci dev 00:0f.0 (id 10ec:8139 rev 10) is not an 8139C+ compatible
chip
8139cp: Try the "8139too" driver instead.
8139too Fast Ethernet driver 0.9.24
PCI: Found IRQ 9 for device 00:0f.0
eth0: RealTek RTL8139 Fast Ethernet at 0xe081af00, 00:00:e8:76:2f:ea, IRQ 9
eth0: Identified 8139 chip type 'RTL-8139A'
...
Aus dieser Meldung ist auch die MAC-Adresse des Netzwerk-Interface ablesbar (im Beispiel:
00:00:e8:76:2f:ea).
Im Folgenden werden die wichtigsten Konfigurationsdateien für das Netz besprochen, wobei
viele der Dateien - eventuell leicht modifiziert oder mit ähnlichem Nanen - auch bei Windows
zu finden sind. Bei Linux findet man diese Daten traditionsgemäß im Verzeichnis /etc.
Setzen des Hostnamens
Die Netzwerksoftware verläßen sich darauf, daß der Name der Maschine einen sinnvollen
Wert hat. Er wird im Normalfall während des Boot-Vorgangs mit dem Befehl hostname
gesetzt. Um den Hostnamen auf name zu setzen, geben Sie folgendes ein:
hostname name
Es ist üblich, nur den Host-Namen ohne jede Domain-Angabe zu verwenden.
/etc/hosts
In dieser Datei werden die Systeme des Netzwerks mit ihrem Systemnamen und die dazu
gehörenden Internet-Adressen aufgelistet. Auch, wenn man im normalen Betrieb DNS
einsetzt, sollte man einen Teil der Rechnernamen in /etc/hosts eintragen. Oft möchte man
nämlich auch während des Bootens, wenn noch keine Netzwerkschnittstellen aktiv sind,
symbolische Namen verwenden.
Um sicherzustellen, daß alle Programme ausschließlich /etc/hosts verwenden, um die Adresse
eines Systems zu suchen, müssen Sie ggf. die Datei /etc/nsswitch.conf editieren. Interessant ist
die Zeile, die mit "hosts:" beginnt. Dort sollte "files dns" stehen, was bedeutet, daß erst in der
lokalen Datei /etc/hosts nachgesehen und dann erst ein Nameserver kontaktiert wird.
Typischerweise sieht die Datei im Ausschnitt so aus:
# /etc/nsswitch.conf
#
...
hosts:
files dns
networks:
files
...
Auf diese Datei wird weiter unten noch genauer eingegangen.
Die Datei hosts enthält einen Eintrag pro Zeile, bestehend aus der IP-Adresse, dem
Hostnamen und einer optionalen Liste von Aliasen für den Hostnamen. Die Felder sind durch
Leerzeichen oder Tabulatoren voneinander getrennt, und das Adreßfeld muß in Spalte eins
beginnen. Ein Doppelkreuz (#) leitet immer einen Kommentar ein.
Namen können entweder mit voller Domainangabe (Full Qualified Domain Name, FQDN)
oder relativ zur lokalen Domain sein. So ist das System sowohl unter seinem offiziellen als
auch unter dem kürzeren lokalen Namen bekannt. Man kann in der Datei auch die Namen und
IP-Adressen beliebiger anderer Rechner eintragen. Immer notwendig ist der Eintrag für den
Rechner selbst, "127.0.0.1 localhost", denn sonst funktionieren gewisse Dienste (z.B.
lpd) nicht.
Für alle folgenden Beispiele werden für die Rechnernamen Schneewittchen und die sieben
Zwerge (in der englischen Fassung von Walt Disney) verwendet. Damit keine Kollision mit
real existierenden Internet-Domains auftreten, kann man als Domainnamen beispielsweise
"zwerge.local" nehmen. Als Netz verwenden wir das private B-Netz 172.20.y.x - und
davon sogar nur ein C-Subnetz, 172.20.20.x.
Das folgende Beispiel zeigt, wie die Datei /etc/hosts im Zwergenwald aussehen könnte.
#
# Hostdatei fuer Snowwhite and Friends
#
# IP
FQDN
Aliase
127.0.0.1
localhost
# die Zwerge
10.27.210.17
10.27.210.18
10.27.210.19
10.27.210.20
10.27.210.21
10.27.210.22
10.27.210.23
10.27.210.24
...
snowwhite.zwerge.local
doc.zwerge.local
happy.zwerge.local
bashful.zwerge.local
sneezy.zwerge.local
sleepy.zwerge.local
grumpy.zwerge.local
dopey.zwerge.local
snowwhite
doc
happy
bashful
sneezy
sleepy
grumpy
dopey
Nach der Internet-Adresse wird der "offizielle" Name des Systems angegeben, gefolgt von
Alias-Namen für dieses System. Wird als Argument für ein Netzwerk-Kommando ein Name
angegeben, so wird in dieser Datei die zugehörige Internet-Adresse ermittelt. Erst über die
Adresse wird eine Verbindung zum Zielsystem aufgebaut. Die Datei /etc/hosts wird jedoch
auch für den umgekehrten Vorgang benutzt. Mit einem IP-Datagram wird nur die InternetAdresse des sendenden Systems mitgeschickt. Soll nun der zugehörige Name ermittelt
werden, so geschieht dies ebenfalls mittels dieser Datei. Das Resultat ist jedoch immer der
"offizielle" Name des Systems. Deshalb ist darauf zu achten, daß stets dieser Name verwendet
werden muß, wenn ein Rechnername in weiteren Konfigurationsdateien eingetragen wird.
Jetzt wissen Sie auch, daß der Eintrag "127.0.0.1 www.microsoft.com" in der /etc/hosts
beispielsweise zu komischen Effekten führen würde (welchen?).
/etc/networks
Genau wie für IP-Adressen möchte man manchmal auch symbolische Namen für
Netzwerknummern verwenden. Aus diesem Grunde gibt es parallel zu /etc/hosts die Datei
/etc/networks, die Netzwerknamen auf Netzwerknummern abbildet. Diese Datei wird nicht
unbedingt benötigt. Im Zwergenwald würden z.B. folgende networks-Datei installiert:
# /etc/networks
zwergenwald
172.20.20.0
Beachten Sie, daß die Namen in networks nicht mit den Hostnamen in der Datei hosts
übereinstimmen und kollidieren, da manche Programme ansonsten seltsame Resultate
produzieren.
/etc/protocols
In dieser Datei sind die Protokollnamen und Protokollnummern der Transportprotokolle
eingetragen, die das System unterstützt. Dank dieser Datei kann man in vielen Programmen
den symbolischen Namen eines Protokolls anstelle der Nummer angeben. Jede Zeile der Datei
enthält den Namen des Transportprotokolls, die Protokollnummer und den Aliasnamen des
Protokolls, zum Beispiel:
ip
icmp
igmp
ggp
ipencap
tcp
egp
udp
...
0
1
2
3
4
6
8
17
/etc/services
IP
ICMP
IGMP
GGP
IP-ENCAP
TCP
EGP
UDP
#
#
#
#
#
#
#
#
internet protocol, pseudo protocol number
internet control message protocol
Internet Group Management
gateway-gateway protocol
IP encapsulated in IP
transmission control protocol
exterior gateway protocol
user datagram protocol
In dieser Datei werden die Namen von Netzwerkdiensten sowie die zugehörigen
Portnummern und Protokollnamen gespeichert Dank dieser Datei kann man in vielen
Programmen den symbolischen Namen eines Dienstes anstelle der Nummer angeben.
Beispiel:
...
ftp
ssh
telnet
smtp
whois
domain
gopher
finger
www
www
...
21
22
23
25
43
53
70
79
80
80
tcp
tcp
tcp
tcp
tcp
tcp
tcp
tcp
tcp
udp
/etc/nsswitch.conf
Diese Datei wird auch als "Resolver-Bibliothek" bezeichnet. Der Begriff Resolver bezieht
sich nicht auf ein spezielles Programm, sondern auf eine Sammlung von Funktionen, die bei
Linux zur Standard-C-Bibliothek gehören. Ihre wichtigsten Routinen sind gethostbyname(2)
und gethostbyaddr(2), die alle zu einem Namen gehörenden IP-Adressen zurückliefern und
umgekehrt. über die Datei /etc/nsswitch.conf können Sie einstellen, ob Sie die gewünschten
Informationen in /etc/hosts nachschlagen, DNS-Server befragen oder die hosts-Datenbank des
Network Information Service (NIS) benutzen wollen.
In der Datei /etc/nsswitch.conf kann der Systemadministrator eine Vielzahl verschiedener
Datenbanken konfigurieren. Wir besprechen hier nur diejenigen Optionen, die sich auf die
Auflösung von Host- und Netzwerk-IP-Adressen beziehen. Optionen in /etc/nsswitch.conf
müssen in getrennten Zeilen erscheinen, wobei die Argumente durch Leerzeichen oder
Tabulatorzeichen voneinander getrennt sein müssen. Ein Doppelkreuz (#) leitet einen
Kommentar ein, der sich bis zum Zeilenende erstreckt. Jede Zeile beschreibt einen
bestimmten Dienst, z.B. die Auflösung von Hostnamen. Das erste Feld jeder Zeile gibt den
Namen der Datenbank an und endet mit einem Doppelpunkt. Der Rest jeder Zeile enthält
Optionen, die die Art des Zugriffs auf die betreffende Datenbank regeln. Die folgenden
Optionen sind verfügbar:
dns
Verwendet das Domain Name System (DNS) zur Auflösung
der Adresse. Das macht allerdings nur Sinn bei der Auflösung
von Hostadressen, nicht von Netzadressen. Der Mechanismus
benutzt die Datei /etc/resolv.conf.
files
Durchsucht eine lokale Datei nach den Host- oder Netznamen
und ihren zugehörigen IP-Adressen. Diese Option verwendet
die traditionellen Dateien /etc/hosts und /etc/networks.
nis oder
nisplus
Verwendet das Network Information System (NIS) zur
Auflösung einer Host- oder Netzadresse.
In der Reihenfolge, in der die Dienste angegeben sind, werden sie auch abgefragt, wenn ein
Name aufgelöst werden soll. Anspruch genommen, in der sie aufgelistet sind. Diese Liste
befindet sich in der Datei /etc/nsswitch.conf in dem Abschnitt, in dem die Beschreibung der
Dienste erfolgt. Die Dienste werden von links nach rechts abgefragt, und die Suche wird
standardmäßig beendet, wenn ein Wert (oder Name) erfolgreich aufgelöst wurde. Zum
Beispiel:
# /etc/nsswitch.conf
#
hosts:
dns files
networks:
files
Dieses Beispiel veranlaßt das System, Hosts zuerst im DNS zu suchen und wenn dort nichts
gefunden wird, die Suche in der Datei /etc/hosts fortzusetzen. Um Netzwerknamen
aufzulösen, wird ausschließlich die Datei /etc/networks benutzt.
Sie können das Suchverhalten noch genauer kontrollieren, indem Sie zusätzlich Aktionen
(action items) angeben, die festlegen, welche Aktion nach dem jeweils letzten
Namensauflösungsversuch durchgeführt werden soll. Auf diese Erweiterungen wird an dieser
Stelle nicht weiter eingegangen.
/etc/resolv.conf
Wenn Sie die Resolver-Bibliothek für die Verwendung von DNS konfigurieren, müssen Sie
ihr auch mitteilen, welche Server sie benutzen soll. Dafür gibt es eine separate Datei namens
/etc/resolv.conf. Fehlt diese Datei oder ist sie leer, nimmt der Resolver an, daß sich der NameServer auf Ihrem lokalen Host befindet. Um einen Name-Server auf Ihrem lokalen Host
laufen zu lassen, müssen Sie ihn separat einrichten. Normalerweise verwendet man einen
bereits vorhandenen Name-Server. Bei einer Dialup-Verbindung ins Internet wird für
gewöhnlich der Name-Server des Providers in der Datei /etc/resolv.conf eintragen.
Die wichtigste Option in /etc/resolv.conf ist daher nameserver, welche die Adresse eines
Name-Servers angibt. Wenn Sie die Option mehrmals angeben, werden die Server in der
angegebenen Reihenfolge verwendet. Deshalb sollten Sie unbedingt den zuverlässigsten
Server an erster Stelle eintragen. Wenn Sie keinen Name-Server eintragen, nimmt der
Resolver an, daß einer auf der lokalen Maschine läuft. Gegenwärtig werden bis zu drei
nameserver-Einträge in /etc/resolv.conf unterstützt.
Zwei weitere Befehle, domain und search, geben Domainnamen an, die der Resolver an einen
Namen anhängt, wenn die zugehörige Adresse beim ersten Versuch nicht gefunden wird. Mit
domain können Sie eine Default-Domain angeben, die immer dann angehängt werden soll,
wenn ein Name nicht aufgelöst werden konnte. Wird dem Resolver z.B. der Name "sleepy"
übergeben, findet dieser den Namen "sleepy." nicht im DNS, da es eine solche Top-LevelDomain nicht gibt. Wird "zwerge.local" als Standarddomäne angegeben, wiederholt der
Resolver seine Anfrage und hängt diese Standarddomäne an den Hostnamen an. Die Abfrage
nach "sleepy.zwerge.local" ist nun erfolgreich (natürlich nur, wenn es einen Nameserver gibt).
Mit der Option search kann eine Suchliste angegeben werden, gewissermaßen eine
Verallgemeinerung der domain-Anweisung. Während bei domain nur eine einzelne Domain
angeben werden darf, akzeptiert search eine ganze Liste davon, deren Einträge alle der Reihe
nach durchprobiert werden, bis ein gültiger DNS-Eintrag gefunden wird. Die einzelnen
Namen der Liste müssen durch Leerzeichen oder Tabulatoren voneinander getrennt werden.
Die Befehle search und domain schließen einander aus und dürfen höchstens einmal
auftauchen. Wenn keiner der beiden Befehle angegeben ist, versucht der Resolver, die
Default-Domain mit Hilfe der Systemfunktion getdomainname(2) aus dem lokalen
Hostnamen zu raten. Hat der Hostname keinen Domain-Teil, wird als Default-Domain die
Root-Domain (.) angenommen.
Werfen Sie einen Blick auf die Datei resolv.conf des Zwergenwaldes:
# /etc/resolv.conf
# Unsere Domain
domain
zwerge.local
#
# Wir benutzen "doc" als zentralen Name-Server:
nameserver
172.20.20.1
Wenn Sie in dieser Konfiguration die Adresse von "dopey" suchen, wird der Resolver erst
versuchen, "dopey." nachzuschlagen, und wenn das fehlschlägt, "dopey.zwerge.local".
Netzwerk-Konfiguration für IP
Zur Konfiguration der Ethernet-Schnittstellen und Initialisierung der Routing-Tabelle sind
zwei Befehle von besonderer Bedeutung, nämlich ifconfig (Interface-Konfiguration) und
route.
Schnittstellenkonfiguration mit dem ifconfig-Kommando
Das Starten von TCP/IP erfolgt (unter Unix) durch Shell-Skripte, die je nach Unix-Derivat
anders heißen und sich an ganz unterschiedlichen Stellen des jeweiligen Dateisystems
befinden können (Bei Linux beispielsweise im Verzeichnis /etc/init.d. So unterschiedlich die
Shell-Skripte auch sein mögen, die Initialisierung der Netzwerksoftware erfolgt in jedem
Falle durch das ifconfig-Kommando. Hier wird auch die Initialisierung der
Netzwerkschnittstellen vorgenommen. Dabei gibt es folgende Arten von Schnittstellen:



das Loopback-Interface,
Broadcast-Interfaces und
Point-to-Point-Interfaces.
Das Loopback-Interface ist eine spezielle Schnittstelle, die zum lokalen System
zurückgeführt. Dies bedeutet, daß alle Daten, die durch das Loopback-Interface geschickt
werden, wieder im lokalen System empfangen werden, Dieser Mechanismus erlaubt eine
Kommunikation von lokalen Prozessen über TCP/IP und wird insbesondere von TCP/IPVerwaltungsprozessen, aber auch von anderen Diensten genutzt (so z.B. bei Datenbanken).
Die Standard-Internet-Adresse der Loopback-Schnittstelle ist 127.0.0.1 und sollte, obwohl es
theoretisch möglich ist, nicht verändert werden.
ifconfig dient dazu, eine Schnittstelle für die Netzwerkschicht des Kernels sichtbar zu
machen. Das beinhaltet die Zuweisung einer IP-Adresse und verschiedener anderer Parameter
sowie die Aktivierung des Interface, damit der Kernel die IP-Pakete über diese Schnittstelle
senden und empfangen kann. Die einfachste Art, es aufzurufen, ist:
ifconfig <interface> <ip-addresse> netmask <maske>
Der Befehl weist "interface" die Adresse "ip-adresse" zu und aktiviert es. Alle anderen
Parameter werden auf Standardwerte gesetzt. Fehlt die Netzmaske (netmask <maske>), wird
sie aus der Netzwerkklasse der Adresse abgeleitet; für ein Klasse-B-Netz wäre das
255.255.0.0. Oftmals besteht das Kommando aber zumindest auf der Netzmaske als
Parameter. Später dazu mehr.
Initialisiert wird das Loopback-Interface durch das Kommando:
ifconfig lo 127.0.0.1
Sogenannte "Broadcast-Interfaces" sind die üblichen Schnittstellen zu lokalen Netzwerken,
über die mehrere Systeme erreichbar sind, und über die Broadcasts, also Nachrichten an alle,
verschickt werden. Es handelt sich dabei um Schnittstellen zu Ethernet und TokenRing.
Neben der Internet-Adresse werden bei der Initiatisierung des Broadcast-Interfaces auch die
Netzmaske und die Broadcast-Adresse angegeben:
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
Neben den Broadcast-Schnittstellen gibt es noch die sogenannten Point-to-PointSchnittstellen. Sie sind dadurch gekennzeichnet, daß man nur über sie ein anderes System
erreichen kann. Beispiele sind SLIP (Serial Line IP) und das Point-to-Point-Protokoll PPP, die
Verbindungen über die serielle Schnittstelle oder per Modem/ISDN-Adapter WANVerbindungen zulassen. Die Initialisierung einer Point-to-Point-Schnittstelle hat z.B. die
folgende Form:
ifconfig ppp0 192.168.1.1 192.168.1.2 netmask 255.255.255.240
So eine PPP-Verbindung bildet ein eigenständiges Netzwerk. Sollen mehrere Verbindungen
kombiniert werden, so muß eine Unterteilung in Subnetze erfolgen. Das heißt, daß eine
entsprechende Netzmaske gewählt werden muß.
ifconfig kennt eine ganze Reihe von Optionen. Der allgemeine Programmaufruf lautet:
ifconfig interface [address [parameters]]
interface ist der Name der zu konfigurierenden Schnittstelle, und address ist die IP-Adresse,
die ihr zugewiesen werden soll. Sie kann entweder als dotted quad angegeben werden oder als
Name, den ifconfig in /etc/hosts nachschlägt.
Ein Aufruf nur mit dem Interface-Namen gibt die Konfiguration des Interface aus. Wird es
ganz ohne Parameter aufgerufen, zeigt es alle bisher konfigurierten Schnittstellen an; die
Option -a erzwingt zusätzlich die Anzeige der inaktiven. Beispiel:
# ifconfig eth0
eth0
Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 172.20.20.2 Bcast 172.20.20.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0
MTU gibt die maximale Blockgröße an. Die Metrik wird von einigen Betriebssystemen
verwendet, um die Kosten einer Route zu berechnen. Linux benutzt diesen Wert bisher nicht,
definiert ihn aber trotzdem aus Gründen der Kompatibilität. Die Zeilen RX und TX zeigen an,
wie viele Pakete empfangen (RX - receive) bzw. gesendet wurden (TX - transmit), wie viele
Fehler dabei auftraten, wie viele Pakete verworfen wurden (dropped) und wie viele wegen
eines überlaufs (overrun) verlorengingen. Ein überlauf beim Empfänger tritt dann auf, wenn
Pakete schneller hereinkommen, als der Kernel die Interrupts bedienen kann.
Die folgende Liste zeigt die Parameter, die ifconfig versteht; die Namen der zugehörigen
Flags stehen in Klammern. Optionen, die eine bestimmte Eigenschaft des Interface aktivieren,
können mit vorangestelltem Minuszeichen (-) auch benutzt werden, um ihn wieder
auszuschalten.
up
Aktiviert ein Interface für die IP-Schicht des Kernels. Sie
wird impliziert, wenn auf der Kommandozeile eine Adresse
angegeben ist. Sie kann auch dazu benutzt werden, ein
Interface zu reaktivieren, wenn es mit der down-Option
temporär deaktiviert wurde. Entspricht den Flags UP und
RUNNING.
down
Markiert eine Schnittstelle als inaktiv, d.h. unzugänglich für
die Netzwerkschicht. Dadurch wird jeglicher IP-Transport
durch die Schnittstelle unterbunden. Beachten Sie, daß
dadurch automatisch alle Routing-Einträge gelöscht werden,
die diese Schnittstelle verwenden.
netmask
Weist des Interface eine Subnetzmaske zu. Sie kann
entweder als eine 32-Bit-Hexadezimalzahl (mit führender
0x) oder als dotted quad (Beispiel: 255.255.255.0)
angegeben werden.
Maske
Wird für Punkt-zu-Punkt-Verbindungen benutzt, die nur
zwei Hosts miteinander verbinden. Sie wird beispielsweise
für die Konfiguration von SLIP- und PLIP-Schnittstellen
pointopoint Adresse benötigt und teilt dem Kernel die IP-Adresse des anderen
Systems mit. Falls eine Punkt-zu-Punkt-Adresse gesetzt
wurde, zeigt ifconfig das POINTOPOINT-Flag an
("pointopoint" wird wirklich so geschrieben).
broadcast
metric
mtu
arp
Adresse
Wert
Bytes
Die Broadcast-Adresse wird normalerweise aus der
Netzwerknummer gebildet, indem alle Bits des Hostanteils
auf eins gesetzt werden. Einige IP-Implementierungen
verwenden dagegen eine Broadcast-Adresse, bei der die Bits
des Hostteils auf null gesetzt sind. Die Option broadcast
dient dazu, Ihre Konfiguration an eine derartige Umgebung
anzupassen. Wenn dem Interface eine Broadcast-Adresse
zugeordnet wurde, gibt ifconfig das Flag BROADCAST aus.
Dem Routing-Tabellen-Eintrag des Interface einen
Metrikwert zuordnen. Dieser Wert wird beispielsweise vom
Routing Information Protocol (RIP) berücksichtigt, wenn es
Routing-Tabellen für Ihr Netz erstellt. Die Default-Metrik,
die ifconfig einem Interface zuweist, ist 0. Wenn Sie das
Routing in Ihrem Netz nicht mit RIP regeln, benötigen Sie
diese Option nicht; aber auch sonst wird die Option selten
benutzt.
Setzen der Maximum Transmission Unit (MTU), d.h. die
maximale Anzahl von Bytes, die das Interface in einer
Transaktion behandeln kann. Für Ethernets liegt der
Defaultwert bei 1500; für SLIP beträgt er 296.
Kann nur für Broadcast-fähige Netz wie Ethernet verwendet
werden. Ermöglicht die Benutzung von ARP zur Zuordnung
von IP-Adressen zu physikalischen Adressen. Für
Broadcast-Netze wird sie per Voreinstellung eingeschaltet.
Ist ARP abgeschaltet, zeigt ifconfig das NOARP-Flag an. arp schaltet ARP explizit aus.
promisc
Versetzt die Schnittstelle in den promiscous mode. Auf
Broadcast-Netzen hat das zur Folge, daß die Schnittstelle
alle Pakete unabhängig davon empfängt, ob sie für einen
anderen Host bestimmt sind oder nicht. Dadurch kann man
den Netzwerkverkehr mit Paketfiltern wie tcpdump
analysieren. -promisc schaltet den Modus ab.
allmulti
Multicast-Adressen sind wie Ethernet-Broadcast-Adressen,
mit der Einschränkung, daß sie nicht automatisch jeden
möglichen Adressaten berücksichtigen, sondern nur solche,
die ausdrücklich zum Empfang vorgesehen (programmiert)
sind. Sie eignen sich besonders für Anwendungen wie
Ethernet-basierte Videokonferenzen oder
Audioübertragungen übers Netz, die nur an Interessierte
gerichtet sind. -allmulti schaltet Multicast-Adressen ab.
Das route-Kommmando
route erlaubt es Ihnen, Routen in die Routing-Tabelle des Kernels einzutragen oder aus ihr zu
entfernen. Es kann aufgerufen werden als:
route [add|del] [-net|-host] <target> [dev <if>]
Dabei bestimmen die Argumente add bzw. del, ob die Route zu target eingetragen bzw. aus
target entfernt wird. Die Optionen -net und -host teilen dem route-Kommando mit, ob target
ein Netzwerk oder ein Hostrechner ist (letzteres wird angenommen, wenn Sie hier nichts
angeben). Das Argument dev if ist optional und erlaubt Ihnen die Angabe einer
Netzwerkschnittstelle, an die die Route gerichtet werden soll. Wenn Sie dem Kernel keine
Informationen darüber geben, versucht er selbst, ein sinnvolles Argument herauszufinden.
Den Rechner konfigurieren
Das allererste Interface, die aktiviert werden muß, ist das Loopback-Interface:
ifconfig lo 127.0.0.1
Manchmal wird anstelle der IP-Adresse auch der Name localhost verwendet. Der Befehl
ifconfig sucht diesen Namen in der Datei /etc/hosts, wo er als Hostname für 127.0.0.1
definiert sein muß.
Zur Anzeige der Konfiguration eines Interface rufen Sie ifconfig mit dem Namen des
Interface auf. Ganz ohne Parameter wird die Konfiguration aller Interfaces gezeigt:
ifconfig lo
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0
Nun fehlt noch ein Eintrag in der Routing-Tabelle, der festlegt, daß dieses Interface als Route
für das Zielsystem 127.0.0.1 dient. Dazu geben Sie folgendes ein:
route add 127.0.0.1
Es kann auch hier wieder anstelle der IP-Adresse der Namen localhost verwendet werden
(sofern er in /etc/hosts eingetragen ist).
Es wäre auch möglich, das Netz von localhost einzutragen:
route add -net 127.0.0.0
Als nächstes wird mit dem Programm ping getestet, ob alles einwandfrei funktioniert:
ping localhost
PING localhost (127.0.0.1): 56 data
64 bytes from 127.0.0.1: icmp_seq=0
64 bytes from 127.0.0.1: icmp_seq=1
64 bytes from 127.0.0.1: icmp_seq=2
^C
--- localhost ping statistics ---
bytes
ttl=255 time=0.4 ms
ttl=255 time=0.4 ms
ttl=255 time=0.4 ms
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.4/0.4/0.4 ms
Pakete an 127.0.0.1 werden also korrekt ausgeliefert und es erfolgt sofort eine Antwort. Das
beweist, daß die erste Netzwerkschnittstelle erfolgreich konfiguriert wurde.
Die bisher beschriebenen Schritte reichen aus, um Netzwerk-Programme auf einem
alleinstehenden Rechner zu benutzen. Die oben angegebenen Zeilen müssen in das NetzwerkInitialisierungsskript eingetragen werden, damit sie beim Systemstart ausgeführt werden. In
der Regel wird zumindest die Konfiguration von "lo" beim Installieren des Systems bereits
erledigt. Zur Einstimmung war das obige aber keine schlechte Übung. Nun sollte zum
Beispiel telnet localhost eine telnet-Verbindung aufbauen und Ihnen den Login-Prompt Ihres
Systems geben.
Die Konfiguration von Ethernet-Schnittstellen geht fast genauso vonstatten wie eben. Man
braucht nur ein paar Parameter mehr, um auch Subnetze verwenden zu können.
Im Zwergenwald wird vom Klasse-B-Netz nur ein C-Subnetz verwendet. Um dies dem
Interface mitzuteilen, sieht der ifconfig-Aufruf so aus:
ifconfig eth0 172.20.20.2 netmask 255.255.255.0
oder unter Verwendung des Namens aus /etc/hosts:
ifconfig eth0 doc netmask 255.255.255.0
Dies weist des Interface eth0 die IP-Adresse von doc (172.20.20.2) zu. Hätte man die
Netzmaske weggelassen, wäre sie von ifconfig aus der Netzklasse der Adresse abgeleitet
worden, was den inkorrekten Wert von 255.255.0.0 ergeben hätte. Ein schneller Test ergibt
jetzt:
ifconfig eth0
eth0
Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 172.20.20.2 Bcast 172.20.20.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0
ifconfig hat die Broadcast-Adresse (im Bcast-Feld angezeigt) automatisch auf den passenden
Wert gesetzt, nämlich die Netzwerknummer mit einem Hostteil, bei dem alle Bits auf eins
gesetzt sind. Außerdem wurde die maximale übertragungseinheit (MTU = Maximum
Transmission Unit, die maximale Größe der IP-Pakete) auf das Ethernet-spezifische
Maximum von 1.500 Bytes eingestellt.
Wie bereits bei der Loopback-Schnittstelle muß noch eine Route eingetragen werden. Für den
Zwergenwald gilt:
route add -net 172.20.20.0
Vielleicht haben Sie bemerkt, daß die Angabe des Interface fehlt. Der Kernel prüft alle bisher
konfigurierten Interfaces und vergleicht das Zielnetz (in unserem Fall 172.20.20.0) mit der
Netznummer der Interface-Adresse, d.h. dem bitweisen UND der Interface-Adresse und der
Netzmaske. Die einzige Schnittstelle, bei der diese beiden Werte übereinstimmen, ist eth0.
Die Option -net ist nötig, da route sowohl Routen zu Netzwerken als auch zu einzelnen Hosts
einrichten kann. Wenn man route eine IP-Adresse übergibt, versucht das Kommando
festzustellen, ob es sich dabei um eine Host- oder Netzadresse handelt, indem es den Hostteil
betrachtet. Ist der Hostteil null, wird angenommen, daß es sich um eine Netz-Adresse handelt,
andernfalls ist es eine Hostadresse. Deshalb würde route in unserem Beispiel davon ausgehen,
daß 172.20.20.0 eine Hostadresse ist (Netz: 172.20.0.0, Host: ...20.0). Da ein Subnetz
verwendet wird, braucht das route-Kommando den Parameter "-net".
Unter Verwendung des Eintrags in /etc/networks wird das Kommando einfacher:
route add zwergenwald
Nun sollte man überprüfen, ob das Ethernet tatsächlich arbeitet. Wählen Sie irgendeine bereits
konfigurierte Maschine auf Ihrem lokalen Ethernet, z.B. grumpy, und geben Sie folgenden
Befehl ein:
# ping grumpy
PING grumpy: 64 byte packets
64 bytes from 172.20.20.1: icmp_seq=0. time=10. ms
64 bytes from 172.20.20.1: icmp_seq=1. time=7. ms
64 bytes from 172.20.20.1: icmp_seq=2. time=8. ms
^C
----doc.zwerge.local PING Statistics---4 packets transmitted, 4 packets received, 0 packets lost
Wenn ping keinerlei Antwort bekommt, sollten Sie die Schnittstellenkonfiguration mit netstat
überprüfen. Die Paketstatistiken, die ifconfig ausgibt, geben an, ob überhaupt Pakete über das
Interface übertragen wurden. Zusätzlich sollten Sie auf beiden Maschinen mit route die
Routing-Informationen überprüfen. Wenn Sie route ohne weitere Parameter aufrufen, gibt es
die Routing-Tabellen aus. Die Option -n sorgt dafür, daß es Adressen numerisch anstelle der
symbolischen Hostnamen darstellt:
route -n
Kernel routing table
Destination Gateway
127.0.0.1
*
172.20.20.0
*
Genmask
Flags Metric Ref Use
255.255.255.255 UH
1
0
112
255.255.255.0
U
1
0
10
Iface
lo
eth0
Die Spalte "Flags" enthält eine Liste von Flags für jedes Interface. U ist für aktive
Schnittstellen immer gesetzt. Ein Flag H in dieser Spalte besagt, daß die Zieladresse einen
einzelnen Host bezeichnet. Wenn eine eingetragene Route benutzt wird, ändert sich der Wert
im Use-Feld ständig.
Bisher wurde eine Maschine auf einem isolierten Ethernet eingerichtet (z.B. in einem
Heimnetz). Der Regelfall ist allerdings, daß mehrere Netze durch Gateways miteinander
verbunden sind (man will ja auch "nach draußen"). Diese Gateways verbinden zwei oder
mehrere Ethernets miteinander, oder sie stellen das Tor zum Internet bereit. Um einen
Gateway zu nutzen, muß der Netzwerkschicht zusätzliche Routing-Informationen zur
Verfügung stehen.
Zum Beispiel sind die Ethernets des Zwergenwaldes und des Feenreichs durch solch ein
Gateway miteinander verbunden, nämlich doc, der bereits konfiguriert sei. Auf allen
Maschinen des Zwergenwaldes muß nur noch eine weitere Route eingetragen werden, die
angibt, daß alle Maschinen im Netzwerk der Feen über doc erreichbar sind. Der
entsprechende Aufruf von route sieht so aus (sofern feenreich in /etc/networks eingetragen
wurde):
route add feenreich gw doc
Dabei gibt gw an, daß das folgende Argument ein Gateway bezeichnet. Natürlich muß jedes
System im Feen-Netz, zu dem Sie Verbindung aufnehmen wollen, einen analogen RoutingEintrag für das Zwergen-Netz haben. Sonst könnten Sie nur Daten vom Zwergen-Netz an das
Feen-Netz senden, die Rechner im Feen-Netz wären aber zu keiner Antwort fähig.
Das war nun ein Gateway, das Pakete zwischen zwei isolierten Netzen befördert. Nehmen Sie
nun an, daß doc außerdem eine Verbindung ins Internet hat. Dann wäre es wünschenswert,
daß Pakete für beliebige Zieladressen, die nicht im Zwergen-Netz liegen, an doc
weitergereicht werden. Das erreicht man, indem doc zum Default-Gateway wird:
route add default gw doc
Die Netzwerkadresse default ist eine Abkürzung für 0.0.0.0, die Default-Route. Sie paßt zu
jeder Zieladresse und wird immer dann benutzt, wenn keine andere eingetragene Route paßt.
Es ist ziemlich einfach, eine Maschine als Gateway einzurichten. Nehmen wir an, wir
befänden uns wieder auf doc, der mit zwei Ethernet-Karten ausgestattet ist, die jeweils mit
einem der beiden Netze verbunden sind. Man muß nur beide Schnittstellen getrennt
konfigurieren und ihnen eine Adresse auf dem jeweiligen Subnetz zuzuweisen. Dabei ist es
recht nützlich, zusätzlich zum offiziellen Hostnamen doc zwei Namen für die beiden
Schnittstellen in /etc/hosts zu definieren:
172.20.20.1
172.20.21.1
doc.zwerge.local
doc-if2
doc
doc-if1
Mit diesen Einträgen lautet die Befehlsreihenfolge für die Einrichtung der beiden Interfaces:
ifconfig eth0 doc-if1 ...
route add zwergenwald
ifconfig eth1 doc-if2 ...
route add feenreich
Damit Pakete überhaupt zwischen den verschiedenen Netzwerkschnittstellen vermittelt
werden, bedarf es in neueren Kerneln des Kommandos
echo '1' > /proc/sys/net/ipv4/ip_forward
Wenn es dann nicht funktioniert, überprüfen Sie, ob Ihr Kernel mit Unterstützung für IPForwarding übersetzt wurde.
Sie brauchen nicht einmal eine zweite Netzwerkkarte, denn es gibt sogenannte "DeviceAliase". Dies sind virtuelle Geräte, die mit der gleichen physischen Hardware verbunden sind,
jedoch gleichzeitig aktiviert werden können, um unterschiedliche IP-Adressen zu haben. Sie
werden normalerweise mit dem Gerätennahmen gefolgt von einem Doppelpunkt und einer
Zahl dargestellt (zum Beispiel eth0:1). Wenn Sie einen Alias verwenden, können weder das
Interface noch der Alias zur Verwendung von DHCP konfiguriert werden. eth0:1 ist der erste
Alias für eth0. Der zweite Alias hätte den Namen eth0:2, usw. Die Befehle um beide Netze
über eine Netzwerkkarte zu routen, würden lauten:
ifconfig eth0 doc-if1 ...
route add zwergenwald
ifconfig eth0:1 doc-if2 ...
route add feenreich
Die ARP-Tabelle
Bei einigen Netzproblemen kann es aufschlußreich sein, einen Blick auf die ARP-Tabelle des
Kernels zu werfen oder sie sogar zu verändern. Die Kommandozeilenoptionen von ARP
lauten:
arp [-v] [-t hwtype] -a [hostname]
arp [-v] [-t hwtype] -s hostname hwaddr
Alle hostname-Argumente können als symbolische Hostnamen oder als IP-Adressen
angegeben werden.
Der erste Aufruf gibt den ARP-Eintrag für die angegebene IP-Adresse bzw. Hostnamen aus.
Fehlt hostname, werden Informationen über alle bekannten Hosts ausgegeben. Zum Beispiel
ergibt die Ausgabe von arp auf www.netzmafia.de etwa folgendes:
arp
Address
129.187.206.254
ns.e-technik.fh-muenche
proxy1.e-technik.fh-mue
web1.e-technik.fh-muenc
HWtype
ether
ether
ether
ether
HWaddress
00:04:DE:FE:78:00
00:07:E9:24:EC:15
00:07:E9:24:EC:15
00:07:E9:24:EB:F5
Flags Mask
C
C
C
C
Iface
eth0
eth0
eth0
eth0
Die Ausgabe kann mit der -t-Option auch auf bestimmte Hardwaretypen beschränkt werden.
Als Argument geben Sie ether, ax25 oder pronet an, was für 10 Mbps Ethernet, AMPR
AX.25 und IEEE 802.5 Token Ring steht.
Die Option -s dient dazu, die Hardwareadresse von hostname manuell in die ARP-Tabelle
einzutragen. Das Argument hwaddr spezifiziert die Hardwareadresse, die normalerweise als
Ethernet-Adresse aus sechs Byte in hexadezimaler Notation angegeben ist. Sie können solche
Adressen auch bei anderen Hardwaretypen verwenden, wenn Sie zusätzlich die Option -t
angeben. Die Festverdrahtung von Hardwareadressen im ARP-Cache ist eine drastische
Maßnahme, um Maschinen aus Ihrem Ethernet daran zu hindern, sich als jemand anderes
auszugeben.
Wenn Sie arp mit der Option -d aufrufen, entfernt es alle Einträge für einen bestimmten Host.
Es kann dazu benutzt werden, das Interface anzuweisen, eine bereits angeforderte
Hardwareadresse einer IP-Adresse nochmals anzufordern, und ist besonders dann nützlich,
wenn ein fehlerhaft konfiguriertes System falsche ARP-Informationen sendet (natürlich muß
zuerst das fehlerhafte System erneut konfiguriert werden).
Zum vorhergehenden
Abschnitt
Zum
Inhaltsverzeichnis
Zum nächsten
Abschnitt
Copyright © FH München, FB 04, Prof. Jürgen Plate
Letzte Aktualisierung: 02. Mar 2005
Herunterladen