TCP/IP-Grundlagen für Microsoft Windows

Kapitel 2 – Die Architektur des TCP/IP Protokollsatzes

Veröffentlicht: 02. Nov 2004

Zusammenfassung

Dieses Kapitel geht genauer auf die Einzelheiten der TCP/IP-Protokollfamilie (Transmission Control Protocol/Internet Protocol) ein und untersucht seine vier Schichten sowie die Kernprotokolle, die in diesen Schichten verwendet werden. Netzwerkadministratoren müssen die Kernprotokolle der verschiedenen Schichten und ihre Funktion verstehen, um nachvollziehen zu können, wie Netzwerkanwendungen arbeiten, wie Daten von einer Anwendung zu einer anderen gesendet werden und wie Sammlungen übertragener Daten zu interpretieren sind. In diesem Kapitel werden außerdem die beiden wichtigsten Anwendungsprogrammierschnittstellen (APIs) erläutert, auf die sich Netzwerkanwendungen für die Microsoft® Windows®-Betriebssysteme stützen, sowie das Benennungsschema der APIs.

Auf dieser Seite
Ziele dieses KapitelsZiele dieses Kapitels
Die TCP/IP-ProtokollfamilieDie TCP/IP-Protokollfamilie
IPv4-Internet-SchichtIPv4-Internet-Schicht
IPv6-Internet-SchichtIPv6-Internet-Schicht
TCP (Transmission Control Protocol)TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)UDP (User Datagram Protocol)
Multiplexing und Demultiplexing von PaketenMultiplexing und Demultiplexing von Paketen
Anwendungsprogrammierschnittstellen (APIs)Anwendungsprogrammierschnittstellen (APIs)
TCP/IP-Benennungsschemata in WindowsTCP/IP-Benennungsschemata in Windows
Zusammenfassung des KapitelsZusammenfassung des Kapitels
KapitelglossarKapitelglossar

Ziele dieses Kapitels

Nach der Lektüre dieses Kapitels werden Sie in der Lage sein, folgende Aufgaben auszuführen:

Beschreiben, inwieweit die TCP/IP-Protokollfamilie den DARPA- (Defense Advanced Research Projects Agency) und OSI-Modellen (Open System Interconnection) entspricht

Aufzählen der wesentlichen Protokolle der Netzwerkzugangs-, Internet-, Transport und Anwendungsschicht des DARPA-Modells

Beschreiben der Aufgaben der Kernprotokolle der IPv4-Internet-Schicht

Beschreiben der Aufgaben der Kernprotokolle der IPv6-Internet-Schicht

Beschreiben der Aufgaben und Merkmale des TCP- und des UDP-Protokolls (User Datagram Protocol)

Erklären, wie IP die in IP-Paketen enthaltenen Informationen nutzt, um Daten am Zielknoten an die richtige Anwendung zu liefern

Beschreiben der Aufgaben und Merkmale der Windows Sockets- und der NetBIOS-APIs (Network Basic Input/Output System)

Beschreiben der Aufgaben und Merkmale der Benennungsschemata für Host- und NetBIOS-Namen, die von den TCP/IP-Komponenten der Betriebssysteme Microsoft Windows Server™ 2003 und Windows XP verwendet werden

Die TCP/IP-Protokollfamilie

Die TCP/IP-Protokollfamilie entspricht dem als DARPA-Modell bekannten Vier-Schichten-Modell, dessen Name sich von der US-Regierungsbehörde herleitet, die TCP/IP ursprünglich entwickelt hat. Die vier Schichten des DARPA-Modells sind: Anwendungsschicht, Transportschicht, Internet-Schicht und Netzzugangsschicht. Jede Schicht des DARPA-Modells entspricht einer oder mehreren Schichten des siebenschichtigen OSI-Modells.

Abbildung 2-1 zeigt die Architektur der TCP/IP-Protokollfamilie.

Figure 2-1  The architecture of the TCP/IP protocol suite

Abbildung 2-1  Die Architektur der TCP/IP-Protokollfamilie
Bild maximieren

Die TCP/IP-Protokollfamilie verfügt in der Internet-Schicht über zwei Protokollsätze:

IPv4, auch einfach IP genannt, ist die heute in privaten Netzen sowie im Internet gebräuchliche Internet-Schicht.

IPv6 ist die neue Internet-Schicht, die einmal die vorhandene IPv4-Internet-Schicht ersetzen wird.

Die Netzzugangsschicht

Die Netzzugangsschicht (auch Netzwerkschnittstellenschicht genannt) sendet TCP/IP-Pakete in das Netzwerkmedium und empfängt TCP/IP-Pakete aus dem Netzwerkmedium. TCP/IP wurde so konzipiert, dass es unabhängig von der Netzwerkzugriffsmethode, dem Rahmenformat und dem Medium ist. Daher ermöglicht TCP/IP die Kommunikation zwischen Netzwerken unterschiedlichen Typs, wenn diese LAN-Technologien – etwa Ethernet und 802.11 Wireless-LAN – und WAN-Technologien – beispielsweise Frame-Relay und ATM (Asynchronous Transfer Mode) – verwenden. Dank dieser Unabhängigkeit von speziellen Netzwerktechnologien kann TCP/IP an neue Technologien angepasst werden.

Die Netzzugangsschicht des DARPA-Modells umfasst die Sicherungs- und die Bitübertragungsschicht des OSI-Modells. Die Internet-Schicht des DARPA-Modells macht keinen Gebrauch von Sequenzierungs- und Bestätigungsdiensten, die möglicherweise in der Sicherungsschicht des OSI-Modells zur Verfügung stehen. Die Internet-Schicht geht vielmehr von einer unzuverlässigen Netzzugangsschicht aus und unterstellt, dass zuverlässige Kommunikation durch Sitzungseinrichtung sowie die Sequenzierung und Bestätigung von Paketen in der Verantwortung der Transport- oder der Anwendungsschicht liegen.

Internet-Schicht

Die Internet-Schicht ist verantwortlich für die Adressierung, die Sequenzierung und die Routingfunktionen. Die Internet-Schicht entspricht der Vermittlungsschicht des OSI-Modells.

Die IPv4-Internet-Schicht verwendet folgende Kernprotokolle:

ARP (Address Resolution Protocol) ordnet einer Adresse der Internet-Schicht eine Netzwerkschnittstellenadresse, etwa eine Hardware-Adresse zu.

Das Internet-Protokoll (IP) ist ein routerfähiges Protokoll, das Pakete adressiert, verschickt, fragmentiert und wieder zusammenfügt.

ICMP (Internet Control Message Protocol) meldet Fehler und liefert weitere Informationen, die Ihnen helfen, fehlgeschlagene Paketzustellungen zu diagnostizieren.

IGMP (Internet Group Management Protocol) verwaltet IP-Multicastgruppen.

Weitere Informationen zu den Kernprotokollen der IPv4-Internet-Schicht finden Sie im Abschnitt "IPv4-Internet-Schicht" weiter hinten in diesem Kapitel.

Die IPv6-Internet-Schicht verwendet folgende Kernprotokolle:

IPv6 ist ein routerfähiges Protokoll, das Pakete adressiert und verschickt.

ICMPv6 (Internet Control Message Protocol for IPv6) meldet Fehler und liefert weitere Informationen, die Ihnen helfen, fehlgeschlagene Paketzustellungen zu diagnostizieren.

Neighbor Discovery (ND) ist ein Protokoll, das die Interaktion zwischen benachbarten IPv6-Knoten verwaltet.

Multicast Listener Discovery (MLD) ist ein Protokoll, das Multicastgruppen verwaltet.

Weitere Informationen zu den Kernprotokollen der IPv6-Internet-Schicht finden Sie im Abschnitt "IPv6-Internet-Schicht" weiter hinten in diesem Kapitel.

Transportschicht

Die Transportschicht (auch Host-zu-Host-Transportschicht genannt) stellt Sitzungs- und Datagrammkommunikationsdienste für die Anwendungsschicht bereit. Die Transportschicht ist für dieselben Bereiche verantwortlich wie die OSI-Transportschicht. Die Kernprotokolle der Transportschicht sind TCP und UDP.

TCP bietet einen verbindungsorientierten und verlässlichen 1:1-Kommunikationsdienst. TCP richtet Verbindungen ein, sequenziert und bestätigt die gesendeten Pakete und stellt die während der Übertragung verloren gegangenen Pakete wieder her.

Im Unterschied zu TCP bietet UDP einen verbindungslosen, nicht verlässlichen 1:1- oder 1:n-Kommunikationsdienst. UDP wird dann verwendet, wenn nur geringe Mengen an Daten (die beispielsweise in ein Paket passen) zu übertragen sind, wenn ein Entwickler den mit TCP-Verbindungen verbundenen Aufwand vermeiden möchte oder wenn die Anwendungen bzw. die Protokolle der oberen Schichten eine verlässliche Zustellung garantieren.

TCP und UDP sind sowohl mit IPv4- als auch IPv6-Internet-Schichten einsetzbar.

Hinweis Die TCP/IP-Komponente von Windows enthält andere Versionen der TCP- und UDP-Protokolle als die Microsoft TCP/IP-Komponente der Version 6. Die Versionen der Microsoft TCP/IP-Komponente der Version 6 entsprechen funktional den mit dem Betriebssystem Microsoft Windows NT® 4.0 gelieferten Versionen und enthalten alle aktuellen Sicherheitsaktualisierungen. Die Existenz von zwei getrennten Protokollkomponenten mit jeweils eigenen Versionen von TCP und UDP wird Dual-Stack-Architektur genannt. Die ideale Architektur wird Dual-IP-Schicht genannt; dabei arbeiten die gleichen Versionen von TCP und UDP sowohl über IPv4 als auch über IPv6 (wie in Abbildung 2-1 gezeigt). Microsoft erwägt, für eine künftige Version der Windows-Betriebssysteme die Dual-IP-Schichtarchitektur für die TCP/IP-Protokollkomponenten zu verwenden.

Anwendungsschicht

Die Anwendungsschicht erlaubt Anwendungen, auf die Dienste der anderen Schichten zuzugreifen, und definiert die Protokolle, die Anwendungen zum Austausch von Daten verwenden. Die Anwendungsschicht enthält viele Protokolle, und es werden ständig weitere Protokolle entwickelt.

Die bekanntesten Protokolle der Anwendungsschicht helfen Anwendern, Daten auszutauschen:

HTTP (Hypertext Transfer Protocol) dient zur Übertragung von Dateien, die in Webseiten enthalten sind.

FTP (File Transfer Protocol) dient zur Übertragung einzelner Dateien, typischerweise im Rahmen einer interaktiven Sitzung.

SMTP (Simple Mail Transfer Protocol) wird zur Übertragung von E-Mail-Nachrichten und -Anlagen verwendet.

Zusätzlich helfen Ihnen folgende Protokolle der Anwendungsschicht, TCP/IP-Netzwerke zu verwenden und zu verwalten:

Das DNS-Protokoll (Domain Name System) ordnet einem Hostnamen, etwa www.microsoft.com, eine IP-Adresse zu und kopiert Namensinformationen zwischen DNS-Servern.

RIP (Routing Information Protocol) ist ein Protokoll, das Router nutzen, um Routinginformationen in einem IP-Netzwerk auszutauschen.

SNMP (Simple Network Management Protocol) dient zur Sammlung von Netzwerkverwaltungsdaten und zur Übertragung dieser Daten zwischen einer Netzverwaltungskonsole und Netzwerkgeräten, beispielsweise Routern, Brücken und Servern.

Windows Sockets und NetBIOS sind Beispiele von Schnittstellen der Anwendungsschicht für TCP/IP-Anwendungen. Weitere Informationen finden Sie weiter unten in diesem Kapitel unter "Anwendungsprogrammierschnittstellen".

IPv4-Internet-Schicht

Die IPv4-Internet-Schicht umfasst folgende Protokolle:

ARP

IP (IPv4)

ICMP

IGMP

In den folgenden Abschnitten werden diese Protokolle detaillierter beschrieben.

ARP

Wenn IP ein Paket in einem auf Broadcasts basierenden Netzwerk sendet, ermittelt das Protokoll ARP (Address Resolution Protocol) die MAC-Adresse (Media Access Control) der IP-Adresse des Knotens, an den das Paket weitergeleitet wird (ein solcher Knoten wird auch Folgeknoten oder Next-Hop genannt). Wie in RFC 826 definiert, verwendet ARP Broadcasts der MAC-Ebene, um den IPv4-Adressen des Folgeknotens die entsprechenden MAC-Adressen zuzuordnen.

Basierend auf der IPv4-Zieladresse und der Routenfestlegung bestimmt IPv4 die IPv4-Adresse des Folgeknotens für die Weiterleitung des Pakets. IPv4 übergibt dann das IPv4-Paket, die IPv4-Adresse des Folgeknotens und dessen Schnittstelle an ARP.

Entspricht die IPv4-Adresse des Folgeknotens für dieses Paket der IPv4-Adresse des Paketziels, liefert ARP das Paket direkt an das Ziel. Bei der direkten Lieferung muss ARP die IPv4-Zieladresse des Pakets in die entsprechende MAC-Adresse auflösen.

Entspricht die IPv4-Adresse des Folgeknotens für dieses Paket nicht der IPv4-Zieladresse des Pakets, leitet ARP das Paket an einen Router weiter. Bei dieser indirekten Lieferung muss ARP die IPv4-Adresse des Routers in die entsprechende MAC-Adresse auflösen.

Um die IPv4-Adresse des Folgeknotens eines Pakets in die entsprechende MAC-Adresse auflösen zu können, stützt sich ARP auf die Broadcast-Möglichkeiten von Netzwerken wie Ethernet oder 802.11 und sendet eine Broadcast-ARP-Anforderung aus. Daraufhin erhält der Sender eine ARP-Antwort mit der MAC-Adresse, die der IPv4-Adresse für den Folgeknoten des Pakets entspricht.

ARP-Cache

Um die Zahl der Broadcast-ARP-Anforderungen zu reduzieren, sehen viele Implementierungen des TCP/IP-Protokolls einen ARP-Cache vor, in dem in Form einer Tabelle die zuletzt aufgelösten IPv4-Adressen und die ihnen entsprechenden MAC-Adresse gespeichert werden. ARP überprüft diesen Cache, bevor eine ARP-Anforderung gesendet wird. Jede Schnittstelle hat ihren eigenen ARP-Cache.

Abhängig von der Implementierung des Anbieters, kann der ARP-Cache folgende Eigenschaften aufweisen:

Einträge können dynamisch (basierend auf den ARP-Antworten) oder statisch in den ARP-Cache aufgenommen werden. Statische Einträge verbleiben permanent im ARP-Cache; Sie können weitere Einträge manuell mit einem TCP/IP-Tool hinzufügen, beispielsweise mit dem Windows-Tool Arp. Statische Einträge im ARP-Cache bewirken, dass Knoten für allgemein verwendete lokale IPv4-Adressen, etwa denen von Routern und Servern, keine ARP-Anforderungen senden müssen. Problematisch ist bei statischen Einträgen allerdings, dass sie immer dann manuell aktualisiert werden müssen, wenn die Netzwerkadapter geändert werden.

Dynamischen Einträgen im ARP-Cache ist ein Zeitlimit zugeordnet; nach Ablauf einer bestimmten Zeitspanne werden sie aus dem Cache entfernt. In Windows werden dynamische Einträge im ARP-Cache zum Beispiel nach 10 Minuten entfernt.

Auf einem Computer unter Windows können Sie sich den ARP-Cache ansehen, indem Sie an der Eingabeaufforderung arp -a eingeben. Mit dem Tool arp können Sie außerdem statische Einträge hinzufügen oder löschen.

ARP-Arbeitsweise

Wenn IPv4 als sendender Host oder als weitergebender Router ein Paket weiterleiten muss, dann sendet IPv4 dieses IPv4-Paket zusammen mit der IPv4-Adresse des Folgeknotens und der Schnittstelle des Folgeknotens an ARP. Unabhängig davon, ob eine direkte oder eine indirekte Zustellung erfolgt, führt ARP folgende Schritte durch:

1.

ARP sucht in dem der IPv4-Adresse und Schnittstelle des Folgeknotens zugeordneten ARP-Cache nach einem Eintrag, der mit der IPv4-Adresse des Folgeknotens übereinstimmt. Findet ARP einen Eintrag, fährt er mit Schritt 6 fort.

2.

Findet ARP keinen Eintrag, erstellt ARP einen Rahmen für die ARP-Anforderung. Dieser Rahmen enthält die MAC- und IPv4-Adressen der Schnittstelle, von der aus die ARP-Anforderung gesendet wird, sowie die IPv4-Adresse des Folgeknotens für das Paket. ARP sendet dann die ARP-Anforderung von dieser Schnittstelle in Form eines Broadcast.

3.

Alle Knoten des Subnetzes erhalten diesen Rahmen und verarbeiten die ARP-Anforderung. Wenn die Adresse des Folgeknotens in der ARP-Anforderung der IPv4-Adresse entspricht, die einer Schnittstelle im Subnetz zugewiesen ist, dann aktualisiert der Empfängerknoten seinen ARP-Cache, indem er die MAC- und IPv4-Adressen des ARP-Anforderers aufnimmt. Alle anderen Knoten verwerfen stillschweigend die ARP-Anforderung.

4.

Der Empfängerknoten, dem die IPv4-Adresse des Folgeknotens für das Paket zugewiesen ist, formuliert eine ARP-Antwort, die die geforderte MAC-Adresse enthält, und sendet die Antwort direkt an den ARP-Anforderer.

5.

Erhält der ARP-Anforderer die ARP-Antwort, aktualisiert er seinen ARP-Cache mit der Adresszuordnung. Dieser Austausch von ARP-Anforderung und ARP-Antwort führt dazu, dass anfordernder und antwortender Knoten die Adresszuordnung des jeweils anderen Knotens in ihren ARP-Cache aufnehmen.

6.

Der ARP-Anforderer sendet das IPv4-Paket an den Folgeknoten, indem er es mit der aufgelösten MAC-Adresse versieht.

Abbildung 2-2 zeigt diesen Vorgang.

Figure 2-2  The ARP address resolution process

Abbildung 2-2  Der Vorgang der ARP-Adresszuordnung
Bild maximieren

Internet-Protokoll Version 4 (IPv4)

IPv4 ist ein Datagrammprotokoll und vor allem verantwortlich für die Adressierung und Weiterleitung von Paketen zwischen Hosts. IPv4 ist verbindungslos, was bedeutet, dass vor dem Datenaustausch keine Verbindung hergestellt wird, und es ist nicht verlässlich, was bedeutet, dass IPv4 die Zustellung der Pakete nicht garantiert. IPv4 versucht jedoch bei der Paketzustellung "sein Bestes". Ein IPv4-Paket kann verloren gehen, dupliziert werden, in der falschen Reihenfolge oder verzögert zugestellt werden. IPv4 versucht nicht, solche Fehler zu beheben. Ein Protokoll einer höheren Schicht, etwa TCP oder ein Anwendungsprotokoll, muss die zugestellten Pakete bestätigen und verlorene Pakete gegebenenfalls erneut anfordern. IPv4 ist im RFC 791 definiert.

Ein IPv4-Paket besteht aus einem IPv4-Header und den IPv4-Nutzdaten. Die IPv4-Nutzdaten sind als Dateneinheit für ein Protokoll einer höheren Schicht organisiert, beispielsweise als TCP-Segment oder UDP-Nachricht. Abbildung 2-3 zeigt die Grundstruktur eines Pv4-Pakets.

Figure 2-3  The basic structure of an IPv4 packet

Abbildung 2-3  Die Grundstruktur eines IPv4-Pakets.
Bild maximieren

Tabelle 2-1 nennt und beschreibt die Schlüsselfelder im IPv4-Header.

IP-HeaderfeldBeschreibung

Quell-IP-Adresse

Die IPv4-Adresse der Quelle des IP-Pakets.

Ziel-IP-Adresse

Die IPv4-Adresse des Zwischen- oder Endempfängers des IP-Pakets.

ID

Ein Bezeichner für alle Fragmente eines bestimmten IP-Pakets, wenn Fragmentierung erforderlich war.

Protokoll

Ein Bezeichner, der das Protokoll der höheren Schicht angibt, dem die IPv4-Nutzdaten übergeben werden müssen.

Prüfsumme

Eine einfache mathematische Berechnung, die dazu verwendet wird, den IPv4-Header auf Bitfehler zu prüfen.

TTL (Time-to-Live)

Die Zahl der Netzwerksegmente, die das Datagramm durchlaufen darf, bevor es von einem Router verworfen wird. Der absendende Host setzt den TTL-Wert, und Router dekrementieren diesen Wert jeweils um eins, wenn sie das IPv4-Paket weiterleiten. Dieses Feld verhindert, dass Pakete endlos in einem IPv4-Netzwerk zirkulieren.

Tabelle 2-1  Schlüsselfelder im IPv4-Header

Fragmentierung und Wiederzusammensetzung

Empfängt ein Router ein IPv4-Paket, das für das Netzwerksegment, an das es weitergeleitet werden soll, zu groß ist, dann zerteilt IPv4 auf dem Router das Paket in kleinere, für das Netzwerksegment, an das es weitergeleitet werden soll, passende Pakete. Wenn diese Pakete ihr Ziel erreichen, setzt IPv4 auf dem Zielhost die einzelnen Fragmente wieder zu dem ursprünglichen Datenpaket zusammen. Dieser Vorgang wird als Fragmentierung und Wiederzusammensetzung bezeichnet. Die Fragmentierung kann in Umgebungen erforderlich werden, in denen unterschiedliche Netzwerktechnologien eingesetzt werden, etwa Ethernet oder Token Ring.

Fragmentierung und Wiederzusammensetzung funktioniert folgendermaßen:

1.

Vor dem Senden eines IPv4-Pakets speichert der Absender einen eindeutigen Wert im ID-Feld.

2.

Ein Router im Pfad zwischen Absender und Empfänger des IPv4-Pakets erkennt, dass dessen Größe die für das Netzwerk, an das es weitergeleitet werden soll, geltende Maximalgröße (MTU: Maximum Transmission Unit) überschreitet.

3.

IPv4 teilt die ursprünglichen IPv4-Nutzdaten in Fragmente auf, die eine für das nächste Netzwerk passende Größe haben. Jedes Fragment wird mit einem eigenen IPv4-Header versehen, der folgende Felder enthält:

Das ursprüngliche ID-Feld, das alle zusammengehörigen Fragmente kennzeichnet.

Das Flag Weitere Fragmente, das angibt, dass weitere Fragmente folgen. Dieses Flag ist im letzten Fragment nicht gesetzt, da diesem keine weiteren Fragmente folgen.

Das Fragmentoffsetfeld, das die Position des Fragments im Bezug auf die ursprünglichen IPv4-Nutzdaten angibt.

Wenn der empfangende Host die Fragmente erhält, kann er anhand des ID-Feldes erkennen, welche Fragmente zusammengehören, und sie mithilfe des Fragmentoffsetfelds in der richtigen Reihenfolge wieder zu dem ursprünglichen IPv4-Nutzdatenpaket zusammensetzen.

ICMP (Internet Control Message Protocol)

Das im RFC 792 definierte ICMP meldet Fehler, wenn Pakete nicht zugestellt werden können, und hilft bei deren Beseitigung. Kann IPv4 zum Beispiel ein Paket nicht an den Zielhost liefern, dann sendet ICMP auf dem Router oder dem Zielhost an den sendenden Host die Nachricht, dass der Empfänger nicht erreicht werden konnte. Tabelle 2-2 nennt und beschreibt die am häufigsten vorkommenden ICMP-Nachrichten.

ICMP-NachrichtBeschreibung

Echoanforderung

Das Tool Ping sendet Echoanforderungen, um die Verbindung mit einem bestimmten Knoten zu überprüfen.

Echoantwort

Knoten senden Echoantworten als Reaktion auf ICMP-Echoanforderungen.

Umleitung

Router senden Umleitungsnachrichten, um den absendenden Host über bessere Routen zur Zieladresse zu informieren.

Quelldrosselung

Router senden Quelldrosselungsnachrichten, um absendende Hosts darüber zu informieren, dass ihre IPv4-Pakete wegen einer Überlastung des Routers verloren gehen. Der sendende Host schickt dann nicht so häufig Pakete.

Ziel nicht erreichbar

Router und Zielhosts senden diese Nichterreichbarkeitsnachrichten, um sendende Hosts darüber zu informieren, dass ihre Pakete nicht zugestellt werden können.

Tabelle 2-2  Häufig vorkommende ICMP-Nachrichten

ICMP definiert eine Reihe von Nichterreichbarkeitsnachrichten. Tabelle 2-3 nennt und beschreibt die am häufigsten vorkommenden Nichterreichbarkeitsnachrichten.

NichterreichbarkeitsnachrichtBeschreibung

Host nicht erreichbar

Router senden diese Nachrichten, wenn sie keine Routen zu den Ziel-IPv4-Adressen finden.

Protokoll nicht erreichbar

Die empfangenden IPv4-Knoten senden diese Nachrichten, wenn sie feststellen, dass das Protokollfeld im IPv4-Header nicht mit dem aktuell verwendeten IPv4-Clientprotokoll übereinstimmt.

Port nicht erreichbar

IPv4-Knoten senden diese Nachrichten, wenn sie feststellen, dass das Feld für den Zielport im UDP-Header nicht mit der Anwendung übereinstimmt, die diesen Port verwendet.

Fragmentierung erforderlich und DF gesetzt

IPv4-Router senden diese Nachrichten, wenn Fragmentierung erforderlich ist, der sendende Knoten jedoch das DF-Flag (Don’t Fragment, Nicht fragmentieren) im IP4-Header gesetzt hat.

Tabelle 2-3  Häufig vorkommende ICMP Nichterreichbarkeitsnachrichten

ICMP macht aus IPv4 kein verlässliches Protokoll. ICMP versucht, Fehler zu melden und eine Reaktion auf bestimmte Bedingungen zu liefern. ICMP-Nachrichten werden als nichtbestätigte IPv4-Pakete weitergeleitet und sind selbst nicht zuverlässig.

IGMP (Internet Group Management Protocol)

Router und Hosts verwenden IGMP, um die Mitgliedschaften in IPv4-Multicastgruppen eines Subnetzes zu verwalten. Eine IPv4-Multicastgruppe, auch Hostgruppe genannt, besteht aus mehreren Hosts, die den an eine bestimmte IPv4-Multicastadresse gesendeten IPv4-Verkehr überwachen. Der IPv4-Multicastverkehr eines gegebenen Subnetzes wird an eine einzelne MAC-Adresse gesendet, jedoch von mehreren IPv4-Hosts empfangen und verarbeitet. Jedes Mitglied einer Hostgruppe erhält alle Pakete, die über eine bestimmte IPv4-Multicastadresse eintreffen.

Damit ein Host IPv4-Multicastpakete erhält, muss eine Anwendung IPv4 darüber informieren, dass dieser Host solche Pakete von der angegebenen IPv4-Multicastadresse erhalten will. IPv4 informiert dann die Router der lokal angeschlossenen Subnetze, dass die an die angegebene IPv4-Multicastadresse gelieferten Multicastpakete empfangen werden sollen. IGMP ist das Protokoll, das Mitgliedsinformationen einer Hostgruppe registriert.

IGMP-Nachrichten haben folgendes Format:

Mitglieder von Hostgruppen verwenden IGMP-Multicastlistenerberichte, um ihre Mitgliedschaft in einer bestimmten Hostgruppe bekannt zu geben.

Router verwenden IGMP-Multicastlistenerabfragen, um Subnetze nach Informationen über Mitglieder von Hostgruppen zu durchsuchen.

Mitglieder von Hostgruppen verwenden IGMP-Multicastlistenerbeendigungen, wenn sie eine Gruppe verlassen, deren letztes Mitglied im Subnetz sie sein könnten.

Damit IPv4-Multicasting in einem IPv4-Netzwerk routerübergreifend funktionieren kann, verwenden Router Multicastroutingprotokolle, um Informationen über Hostgruppen weiterzugeben. Jeder Router, der Multicastweiterleitung unterstützt, kann daraufhin entscheiden, wie er IPv4-Multicastverkehr weiterleitet.

Windows Server 2003 und Windows XP unterstützen IGMP, IGMP Version 2 und IGMP Version 3, die in RFC 1112, RFC 2236 und RFC 3376 definiert sind.

IPv6-Internet-Schicht

IPv6 wird einmal die Protokolle der IPv6-Internet-Schicht des DARPA-Modells ersetzen. IPv6 ersetzt:

IPv4 durch IPv6  IPv6 ist ein routerfähiges Protokoll, das Pakete adressiert, verschickt, fragmentiert und wieder zusammenfügt.

ICMP durch ICMPv6  ICMPv6 bietet Diagnosefunktionen und meldet Fehler, wenn IPv6-Pakete nicht geliefert werden können.

IGMP durch MLD  MLD verwaltet die Mitgliedschaften in IPv6-Multicastgruppen.

ARP durch ND  ND verwaltet die Interaktion zwischen benachbarten Knoten, einschließlich der automatischen Konfiguration von Adressen und der Zuordnung von IPv6-Folgeknotenadressen zu MAC-Adressen.

Softwareentwickler müssen die Protokolle der Transport- und der Anwendungsschicht nicht ändern, um deren Funktion mit einer IPv6-Internet-Schicht zu unterstützen, es sei denn, Adressen sind Teil der Nutzdaten oder Teil der Datenstrukturen, die von dem Protokoll verwaltet werden. So müssen Softwareentwickler beispielsweise sowohl TCP als auch UDP aktualisieren, damit eine neue Prüfsumme berechnet wird, und sie müssen RIP aktualisieren, damit auf IPv6 basierende Routeninformationen gesendet und empfangen werden können.

Die IPv6-Internet-Schicht umfasst folgende Protokolle:

IPv6

ICMPv6

ND

MLD

In den folgenden Abschnitten werden diese Protokolle eingehender erläutert.

IPv6

Wie IPv4 ist auch IPv6 ein verbindungsloses, nicht verlässliches Datagrammprotokoll, das vor allem verantwortlich ist für die Adressierung und Weiterleitung von Paketen zwischen Hosts.

RFC 2460 definiert die IPv6-Paketstruktur. Ein IPv6-Paket besteht aus einem IPv6-Header und den IPv6-Nutzdaten. Die IPv6-Nutzdaten bestehen aus keinem oder mehreren IPv6-Erweiterungsheadern und einer Dateneinheit für ein Protokoll einer höheren Schicht, beispielsweise eine ICMPv6-Nachricht, ein TCP-Segment oder eine UDP-Nachricht. Abbildung 2-4 zeigt die Grundstruktur eines IPv6-Pakets.

Figure 2-4  Basic structure of an IPv6 packet

Abbildung 2-4  Die Grundstruktur eines IPv6-Pakets
Bild maximieren

Tabelle 2-4 nennt und beschreibt die Schlüsselfelder im IPv6-Header.

IPv6-HeaderfeldBeschreibung

Quelladresse

Eine 128 Bit lange IPv6-Adresse, die die ursprüngliche Quelle des IPv6-Pakets angibt.

Zieladresse

Eine 128 Bit lange IPv6-Adresse, die das Zwischen- oder Endziel des IPv6-Pakets angibt.

Nächster Header

Ein Bezeichner für den unmittelbar dem IPv6-Header folgenden Erweiterungsheader oder ein Protokoll einer höheren Schicht, etwa ICMPv6, TCP oder UDP.

Abschnittsmaximum

Die Zahl der Netzwerksegmente, die das Paket durchlaufen darf, bevor es von einem Router verworfen wird. Der absendende Host setzt das Abschnittsmaximum fest, und Router dekrementieren diesen Wert jeweils um eins, wenn sie das IPv6-Paket weiterleiten. Dieses Feld verhindert, dass Pakete endlos in einem IPv6-Netzwerk zirkulieren.

Tabelle 2-4  Schlüsselfelder im IPv6-Header

IPv6-Erweiterungsheader

IPv6-Nutzdaten können Null oder mehrere Erweiterungsheader unterschiedlicher Länge enthalten. Das Feld Nächster Header in einem IPv6-Header gibt den nächsten Erweiterungsheader an. Jeder Erweiterungsheader enthält wiederum das Feld Nächster Header, das den nächsten Erweiterungsheader angibt. Der letzte Erweiterungsheader gibt, wenn vorhanden, das Protokoll einer höheren Schicht an (etwa TCP, UDP oder ICMPv6), das die Dateneinheit für ein Protokoll einer höheren Schicht enthält.

Der IPv6-Header und die Erweiterungsheader ersetzen den IPv4-Header und seine Fähigkeit, Optionen anzugeben. Das neue Format für Erweiterungsheader erlaubt es, IPv6 um die Unterstützung künftiger Anforderungen und Fähigkeiten zu ergänzen. Im Unterschied zu den Optionen im IPv4-Header kennen IPv6-Erweiterungsheader keine Größenbeschränkungen und können alle Erweiterungsdaten aufnehmen, die für die IPv6-Kommunikation benötigt werden.

RFC 2460 definiert die folgenden IPv6-Erweiterungsheader, die alle IPv6-Knoten unterstützen müssen:

Abschnitt-zu-Abschnitt-Optionsheader

Zieloptionsheader

Routingheader

Fragmentheader

Authentifizierungsheader

ESP-Header

Typische IPv6-Pakete enthalten keine Erweiterungsheader. Sendende Hosts fügen einen oder mehrere Erweiterungsheader nur dann ein, wenn zwischengeschaltete Router oder der Zielknoten das Paket auf spezielle Weise behandeln müssen.

Fragmentierung in IPv6

Empfängt bei IPv4 ein Router ein Paket, das für das Netzwerksegment, an das es weitergeleitet werden soll, zu groß ist, dann zerteilt IPv4 auf dem Router das Paket in kleinere, für das Netzwerksegment, an das es weitergeleitet werden soll, passende Pakete. In IPv6 fragmentiert nur der sendende Host ein Paket. Ist ein IPv6-Paket zu groß, sendet der IPv6-Router die ICMPv6-Nachricht Zu großes Paket an den sendenden Host und verwirft das Paket.

Ein sendender Host kann Pakete fragmentieren, die der Zielhost mithilfe des Fragmenterweiterungsheaders wieder zusammensetzen kann.

ICMPv6 (Internet Control Message Protocol for IPv6)

Wie IPv4 meldet auch IPv6 keine Fehler. Statt dessen verwendet IPv6 eine aktualisierte Version von ICMP für IPv4. Diese neue Version heißt ICMPv6 und erfüllt die von ICMP bekannten Funktionen für IPv4; sie meldet Fehler bei der Zustellung oder Weiterleitung von Daten und bietet einen einfachen Echodienst zur Problembehandlung. Das Protokoll ICMPv6 bietet außerdem eine Nachrichtenstruktur für ND- und MLD-Nachrichten.

Tabelle 2-5 nennt und beschreibt die im RFC 2463 definierten ICMPv6-Nachrichten.

ICMPv6-NachrichtBeschreibung

Echoanforderung

Hosts senden Echoanforderungen, um die IPv6-Verbindung mit einem bestimmten Knoten zu überprüfen.

Echoantwort

Knoten senden Echoantworten als Reaktion auf ICMPv6-Echoanforderungen.

Empfänger nicht erreichbar

Router und Zielhosts senden diese Nachrichten, um sendende Hosts darüber zu informieren, dass ihre Pakete oder Nutzdaten nicht zugestellt werden können.

Zu großes Paket

Router senden diese Nachrichten, um sendende Hosts darüber zu informieren, dass Pakete zu groß für die Weiterleitung sind.

Zeitüberschreitung

Router senden diese Nachrichten, um sendende Hosts darüber zu informieren, dass das Abschnittsmaximum eines IPv6-Pakets erreicht ist.

Unzulässiger Parameter

Router senden diese Nachrichten, um sendende Hosts darüber zu informieren, dass ein Fehler bei der Verarbeitung des IPv6-Headers oder eines IPv6-Erweiterungsheaders aufgetreten ist.

Tabelle 2-5  Häufig vorkommende ICMPv6-Nachrichten

ICMPv6 definiert eine Reihe von Nichterreichbarkeitsnachrichten. Tabelle 2-6 nennt und beschreibt die am häufigsten vorkommenden Nichterreichbarkeitsnachrichten.

NichterreichbarkeitsnachrichtBeschreibung

Keine Route gefunden

Router senden diese Nachricht, wenn sie in ihren lokalen IPv6-Routingtabellen keine Routen zu den IPv6T-Zieladressen finden können.

Kommunikation durch Verwaltungsrichtlinie verboten

Router senden diese Nachricht, wenn eine auf dem Router konfigurierte Richtlinie die Kommunikation mit dem Ziel verbietet. Diese Art von Nachricht wird zum Beispiel gesendet, wenn ein Firewall ein Paket verwirft.

Zieladresse nicht erreichbar

IPv6-Router senden diese Nachricht, wenn sie die MAC-Adresse des Ziels nicht auflösen können.

Zielport nicht erreichbar

Zielhosts senden diese Nachricht, wenn ein IPv6-Paket, das eine UDP-Meldung für einen UDP-Zielport enthält, nicht der verarbeitenden Anwendung entspricht.

Tabelle 2-6  Häufig vorkommende ICMPv6-Nichterreichbarkeitsnachrichten

ICMPv6 macht aus IPv6 kein zuverlässiges Protokoll. ICMPv6 versucht, Fehler zu melden und eine Reaktion auf bestimmte Bedingungen zu liefern. ICMPv6-Nachrichten werden als nichtbestätigte IPv6-Pakete weitergeleitet und sind selbst nicht verlässlich.

ND (Neighbor Discovery)

ND ist eine Folge von ICMPv6-Nachrichten und Prozessen, die die Beziehungen zwischen benachbarten Knoten festlegen. ND ersetzt ARP, die ICMPv4-Routersuche sowie die in IPv4 verwendete ICMP-Umleitung und stellt zusätzliche Funktionen bereit.

Hosts verwenden ND für folgende Zwecke:

Benachbarte Router erkennen

Adressen und weitere Konfigurationsparameter finden und automatisch konfigurieren

Router verwenden ND zu folgenden Zwecken:

Ihre Anwesenheit, Hostadressen und weitere Konfigurationsparameter bekannt geben

Hosts über eine bessere Folgeknotenadresse bei der Weiterleitung von Paketen an ein bestimmtes Ziel informieren

Knoten (sowohl Hosts als auch Router) verwenden ND für folgende Zwecke:

Die Netzwerkschichtadresse (auch MAC-Adresse genannt) des benachbarten Knotens auflösen, an den ein IPv6-Paket weitergeleitet werden muss

Dynamisch Änderungen der MAC-Adressen bekannt geben

Festzustellen, ob ein Nachbar immer noch erreichbar ist.

Tabelle 2-7 nennt und beschreibt die im RFC 2461 beschriebenen ND-Prozesse.

Vorgang der Erkennung von NachbarnBeschreibung

Routererkennung

Der Vorgang, in dem ein Host die ihm benachbarten Router ermittelt. Weitere Informationen finden Sie weiter unten in diesem Kapitel unter "Routererkennung".

Präfixerkennung

Der Vorgang, in dem Hosts die Netzwerkpräfixe für Ziele im lokalen Subnetz ermitteln. Weitere Informationen zu IPv6-Netzwerkpräfixen finden Sie in Kapitel 3, "IP-Adressierung".

Automatische Adresskonfiguration

Der Vorgang der Konfiguration von IPv6-Adressen für Schnittstellen mit oder ohne Adresskonfigurationsserver, z. B. einem Server, der DHCPv6 (Dynamic Host Configuration Protocol Version 6) ausführt. Weitere Informationen finden Sie weiter unten in diesem Kapitel unter "Automatische Adresskonfiguration".

Auflösung von Adressen

Der Vorgang, bei dem Knoten der IPv6-Adresse eines Nachbarn deren MAC-Adresse zuordnen. Die Adressauflösung von IPv6 entspricht ARP in IPv4. Weitere Informationen finden Sie weiter unten in diesem Kapitel unter "Auflösung von Adressen".

Bestimmung des Folgeknotens

Der Vorgang, bei dem ein Knoten basierend auf der Zieldresse die IPv6-Folgeknotenadresse für die Weiterleitung eines Pakets ermittelt. Die Folgeknotenadresse ist entweder die Zieladresse oder die Adresse eines benachbarten Routers.

Erkennung der Nichterreichbarkeit eines Nachbarn.

Der Vorgang, bei dem ein Knoten erkennt, dass die IPv6-Schicht eines Nachbarn keine Pakete senden oder empfangen kann.

Erkennung doppelter Adressen

Der Vorgang, bei dem ein Knoten überprüft, ob eine zur Verwendung vorgesehene Adresse nicht bereits von einem benachbarten Knoten benutzt wird.

Umleitungsfunktion

Der Vorgang, bei dem ein Host über eine zur Erreichung eines Ziels bessere IPv6-Addresse für den ersten Abschnitt informiert wird.

Tabelle 2-7  Vorgänge zur Erkennung von Nachbarn

Auflösung von Adressen

Der Vorgang der Auflösung von IPv6-Adressen vollzieht sich durch Austausch von Nachbaraufforderungs- und Nachbaranwesenheitsnachrichten, um der IPv6-Folgeknotenadresse seiner korrespondierenden MAC-Adresse zuzuordnen. Der sendende Host schickt eine Nachbaraufforderung in Form einer Multicastnachricht an die passende Schnittstelle. Die Nachbaraufforderungsnachricht enthält die MAC-Adresse des sendenden Knotens.

Wenn der Zielknoten die Nachbaraufforderungsnachricht erhält, aktualisiert er seinen Nachbarcache (der dem ARP-Cache entspricht) durch einen Eintrag mit der Quell- und der Mac-Adresse, die in der Nachbaraufforderungsnachricht enthalten sind. Dann sendet der Zielknoten eine Nachbaranwesenheitsnachricht in Form einer Multicastnachricht mit seiner MAC-Adresse an den Sender der Nachbaraufforderungsnachricht.

Nach Empfang der Nachbaranwesenheitsnachricht vom Ziel aktualisiert der sendende Host seinen Nachbarcache durch einen Eintrag mit der in der Nachricht enthaltenen Mac-Adresse. Ab diesem Punkt können der sendende Host und das Ziel der Nachbaraufforderungsnachricht IPv6-Unicastdaten senden.

Erkennung von Routern

Die Erkennung von Routern ist der Vorgang, bei dem ein Host versucht, die Router eines lokalen Subnetzes zu ermitteln. Zusätzlich zur Konfiguration eines Standardrouters wird bei diesem Vorgang auch Folgendes konfiguriert:

Die Standardeinstellung für das Feld Abschnittsmaximum im IPv6-Header.

Die Festlegung, ob der Knoten ein Adresskonfigurationsprotokoll, beispielsweise DHCPv6 (Dynamic Host Configuration Protocol for IPv6) für Adressen und andere Konfigurationsparameter verwenden soll.

Die Liste der für das Netzwerksegment definierten Netzwerkpräfixe. Jedes Netzwerkpräfix enthält sowohl das IPv6-Netzwerkpräfix als auch dessen gültigen und vorzuziehenden Lebenszyklus. Wenn angegeben verwendet der Host das Netzwerkpräfix, um die IPv6-Adresskonfiguration zu erstellen, ohne ein Adresskonfigurationsprotokoll zu benutzen. Ein Netzwerkpräfix definiert auch den Adressbereich für Knoten im lokalen Netzwerksegment.

Der Vorgang der IPv6-Routererkennung vollzieht sich folgendermaßen:

IPv6-Router senden im Subnetz wiederholt Routeranwesenheitsnachrichten in Form von Multicastnachrichten und geben dadurch ihre Existenz und weitere Konfigurationsparameter, etwa Adresspräfixe und den Standardwert für das Abschnittsmaximum, bekannt.

IPv6-Hosts im lokalen Subnetz empfangen die Routeranwesenheitsnachrichten und verwenden ihren Inhalt, um Adressen, den Standardrouter und weitere Parameter zu konfigurieren.

Ein Host sendet beim Start eine Routeraufforderung in Form eine Multicastnachricht. Nach Empfang der Routeraufforderungsnachricht senden alle Router im lokalen Subnetz eine Unicast-Routeranwesenheitsnachricht an den Host, der die Routeraufforderung gesendet hat. Der Host empfängt die Routeranwesenheitsnachrichten und verwendet ihren Inhalt, um Adressen, den Standardrouter und weitere Parameter zu konfigurieren.

Automatische Adresskonfiguration

Eine äußerst vorteilhafte Eigenschaft von IPv6 ist seine Fähigkeit, sich mithilfe eines Adresskonfigurationsprotokolls wie DHCPv6 (Dynamic Host Configuration Protocol for IPv6) automatisch selbst zu konfigurieren. Standardmäßig kann ein IPv6-Host für jede Schnittstelle eine Adresse für die Verwendung im Subnetz konfigurieren. Mithilfe der Routererkennung kann ein Host außerdem die Adresse von Routern, zusätzliche Adressen und weitere Konfigurationsparameter ermitteln. Routeranwesenheitsnachrichten geben an, ob ein Adresskonfigurationsprotokoll verwendet werden sollte. RFC 2462 definiert die automatische Konfiguration von IPv6-Adressen.

MLD (Multicast Listener Discovery)

MLD ist das IPv6-Äquivalent von IGMP-Version 2 für IPv4. MLD ist ein Satz von zwischen Routern und Knoten ausgetauschten ICMPv6-Nachrichten, mit denen Router für jede angeschlossene Schnittstelle die IPv6-Multicastadressen ermitteln können, für die es verarbeitende Knoten gibt. Wie IGMPv2 ermittelt auch MLD nur die Multicastadressen, die wenigstens einen verarbeitenden Knoten haben, und nicht die Liste der Multicast verarbeitenden Knoten jeder Multicastadresse. RFC 2710 definiert MLD.

Im Unterschied zu IGMPv2 verwendet MLD ICMPv6-Nachrichten statt eigene Nachrichten zu definieren. Die drei Typen von MLD-Nachrichten sind:

Multicastlistenerabfrage  Router verwenden Multicastlistenerabfragen, um ein Subnetz nach Multicastgruppenmitgliedern abzufragen.

Multicastlistenerbericht  Mit Multicastlistenerberichten lassen Knoten entweder ihr Interesse am Empfang von Multicastverkehr für eine bestimmte Multicastadresse erkennen oder antworten damit auf eine Multicastlistenerabfrage.

Multicastlistenerbeendigung  Mitglieder von Multicastgruppen verwenden Multicastlistenerbeendigungen um anzugeben, dass sie möglicherweise das letzte Mitglied der Multicastgruppe im Subnetz sind.

TCP (Transmission Control Protocol)

TCP ist ein verlässlicher, verbindungsbasierter Kommunikationsdienst. Verbindungsbasiert bedeutet, dass eine Verbindung hergestellt werden muss, bevor Hosts Daten austauschen können. Verlässlichkeit wird ereicht, indem jedem übertragenen Segment eine Sequenznummer zugewiesen wird. Die beiden Knoten, die mittels TCP miteinander kommunizieren, bestätigen jeweils, dass sie Daten empfangen haben. Ein TCP-Segment ist die PDU (Protocol Data Unit), die aus einem TCP-Header und den TCP-Nutzdaten besteht, und auch einfach als Segment bezeichnet wird. Für jedes TCP-Segment, das Daten enthält, muss der empfangende Host eine Bestätigung (ACK, Acknowledgment) senden. Wird innerhalb des vorgegebenen Zeitraums keine Bestätigung empfangen, überträgt der sendende Host das TCP-Segment erneut. RFC 793 definiert TCP.

Tabelle 2-8 nennt und beschreibt die Schlüsselfelder im TCP-Header.

FeldBeschreibung

Quellport

TCP-Port der sendenden Anwendung.

Zielport

TCP-Port der empfangenden Anwendung.

Sequenznummer

Sequenznummer des ersten Datenbytes im TCP-Segment.

Bestätigungsnummer

Sequenznummer des nächsten Bytes, das der Sender vom empfangenden Host erwartet.

Fenster

Aktuelle Größe des Speicherpuffers, den der dieses TCP-Segment sendende Host zur Speicherung eingehender Segmente vorgesehen hat.

Prüfsumme

Eine einfache mathematische Berechnung, die dazu verwendet wird, das TCP-Segment auf Bitfehler zu prüfen.

Tabelle 2-8  Schlüsselfelder im TCP-Header

TCP-Ports:

Um TCP verwenden zu können, muss eine Anwendung die IP-Adresse und die TCP-Portnummer der Quell- und Zielanwendung bereit stellen. Ein Port stellt einen Ort für das Senden von Segmenten dar. Jeder Port wird durch eine eindeutige Nummer bezeichnet. TCP-Ports sind von UDP-Ports zu unterscheiden, auch wenn diese die gleiche Nummer verwenden. Portnummern unter 1024 sind sog. bekannte Nummern, die von der IANA (Assigned Numbers Authority) zugewiesen wurden. Tabelle 2-9 nennt einige dieser bekannten TCP-Ports.

TCP-PortnummerBeschreibung

20

FTP (Datenkanal)

21

FTP (Steuerungskanal)

23

Telnet

80

HTTP (im Internet verwendet)

139

NetBIOS-Sitzungsdienst

Tabelle 2-9  Bekannte TCP-Ports

Eine vollständige Liste der zugewiesenen TCP-Ports finden Sie unter http://www.iana.org/assignments/port-numbers (nur auf Englisch verfügbar).

TCP-Drei-Wege-Handshake

Eine TCP-Verbindung wird mittels Drei-Wege-Handshake initialisiert. Aufgabe des Drei-Wege-Handshake ist die Synchronisation der Sequenznummer und der Bestätigungsnummern auf beiden Seiten sowie die wechselseitige Bekanntgabe der TCP-Fenstergröße. Die folgenden Schritte beschreiben den Vorgang für die bekannte Situation, in der ein Clientcomputer einen Servercomputer kontaktiert.

1.

Der Client sendet ein TCP-Segment an den Server mit einer Startsequenznummer für die Verbindung und einer Fenstergröße, die die Größe des Puffers angibt, in dem der Client vom Server eingehende Segmente speichert.

2.

Der Server sendet ein TCP-Segment zurück, das seine Startsequenznummer, eine Bestätigung der Sequenznummer des Clients sowie eine Fenstergröße enthält, die die Größe des Puffers angibt, in welchem der Server die vom Client eingehenden Segmente speichert.

3.

Der Client sendet ein TCP-Segment an den Server, das eine Bestätigung der Sequenznummer des Servers enthält.

TCP verwendet ein ähnliches Handshakeverfahren zur Beendigung der Verbindung. Dies garantiert, dass beide Seiten die Übertragung beendet haben und alle Daten empfangen wurden.

UDP (User Datagram Protocol)

UDP ist ein verbindungsloser Datagrammdienst, bei dem weder für die Zustellung der Datagramme noch für die korrekte Reihenfolge der gelieferten Pakete garantiert wird. UDP überträgt verloren gegangene Daten nicht ein weiteres Mal. Ein UDP-Paket besteht aus einem UDP-Header sowie den UDP-Nutzdaten und wird auch als Nachricht bezeichnet. RFC 768 definiert UDP.

Anwendungen verwenden UDP, wenn sie keine Empfangsbestätigung der Daten brauchen und in der Regel jeweils nur kleine Datenmengen übertragen müssen. NetBIOS-Namensdienst, NetBIOS-Datagrammdienst und SNMP sind Beispiele für Dienste und Anwendungen, die UDP verwenden.

Tabelle 2-10 nennt und beschreibt die Schlüsselfelder im UDP-Header.

FeldBeschreibung

Quellport

UDP-Port der sendenden Anwendung.

Zielport

UDP-Port der empfangenden Anwendung.

Prüfsumme

Eine einfache mathematische Berechnung, die dazu verwendet wird, die UDP-Nachricht auf Bitfehler zu prüfen.

Tabelle 2-10  Schlüsselfelder im UDP-Header

UDP-Ports

Um UDP verwenden zu können, muss eine Anwendung die IP-Adresse und die UDP-Portnummer der Quell- und Zielanwendung bereit stellen. Ein Port stellt einen Ort für das Senden von Nachrichten dar. Jeder Port wird durch eine eindeutige Nummer bezeichnet. UDP-Ports sind von TCP-Ports zu unterscheiden, auch wenn diese die gleiche Nummer verwenden. Wie bei TCP-Ports sind auch UDP-Portnummern unter 1024 bekannte Ports, die von der IANA zugewiesen wurden. Tabelle 2-11 nennt einige dieser bekannten UDP-Ports.

UDP-PortnummerBeschreibung

53

DNS-Namensabfragen (Domain Name System)

69

TFTP (Trivial File Transfer Protocol)

137

NetBIOS-Namensdienst

138

NetBIOS-Datagrammdienst

161

SNMP

Tabelle 2-11  Bekannte UDP-Ports

Eine vollständige Liste der zugewiesenen UDP-Ports finden Sie unter http://www.iana.org/assignments/port-numbers (nur auf Englisch verfügbar).

Multiplexing und Demultiplexing von Paketen

Wenn ein Host ein IPv4- oder ein IPv6-Paket sendet, gibt er in diesem Paket auch Informationen weiter, mit deren Hilfe die im Paket enthaltenen Daten am Ziel der korrekten Anwendung übergeben werden können. Die Aufnahme von Bezeichnern, damit Daten an eine von mehreren Entitäten in den verschiedenen Schichten einer mehrschichtigen Architektur gesendet werden können, wird Multiplexing genannt. Die Multiplexinginformationen für IP-Pakete bezeichnen den Knoten des Netzwerks, das IP-Protokoll der höheren Schicht und für TCP und UDP den Port, der der Anwendung zugeordnet ist, für die die Daten bestimmt sind. Der Zielhost benutzt diese Bezeichner, um die Daten durch die einzelnen Schichten der richtigen Zielanwendung zu übergeben; dieser Vorgang wird Demultiplexing genannt. Das IP-Paket enthält außerdem Informationen, die für den Zielhost notwendig sind, um eine Antwort zu senden.

IP enthält Multiplexinginformationen, um Folgendes zu erreichen:

Identifizieren des sendenden Knotens (das Feld mit der Quelladresse im IPv4-Header oder das Feld mit der Quelladresse im IPv6-Header).

Identifizieren des empfangenden Knotens (das Feld mit der Zieladresse im IPv4-Header oder das Feld mit der Zieladresse im IPv6-Header).

Identifizieren des Protokolls der höheren Schicht über der IPv4- oder IPv6-Internet-Schicht (das Protokollfeld im IPv4-Header oder das Feld Nächster Header im IPv6-Header.

Bei TCP-Segmenten und UDP-Nachrichten Identifizieren der Anwendung, von der aus die Nachricht gesendet wurde (der Quellport im TCP- oder UDP-Header).

Bei TCP-Segmenten und UDP-Nachrichten Identifizieren der Anwendung, für die die Nachricht bestimmt ist (der Zielport im TCP- oder UDP-Header).

TCP- und UDP-Ports können eine beliebige Nummer aus dem Bereich von 0 bis 65.535 verwenden. Portnummern für clientseitige Anwendungen werden in Regel auf eine entsprechende Anforderung hin dynamisch zugewiesen, während Portnummern für bekannte serverseitige Anwendungen von der IANA zugewiesen wurden. Die vollständige Liste bereits zugewiesener Portnummern finden Sie unter http://www.iana.org/assignments/port-numbers (nur auf Englisch verfügbar).

All diese Daten stellen Multiplexinginformationen dar, mit denen erreicht wird, dass:

Das Paket an das korrekte Ziel weitergeleitet werden kann.

Das Ziel die Nutzdaten dazu verwenden kann, die Daten der korrekten Anwendung zu übergeben.

Die empfangende Anwendung eine Antwort senden kann.

Wird ein Paket gesendet, werden diese Informationen auf folgende Weise verwendet:

Die Router, die IPv4- oder IPv6-Pakete weiterleiten, verwenden die IP-Zieladresse im IPv4-Header oder Zieladresse im IPv6-Header, um das Paket an den korrekten Knoten im Netzwerk zu liefern.

Der Zielknoten verwendet das Protokollfeld im IPv4-Header oder das Feld Nächster Header im IPv6-Header, um die Nutzdaten des Pakets dem korrekten Protokoll der höheren Schicht zu übergeben.

Bei TCP-Segmenten und UDP-Nachrichten verwendet der Zielknoten die Angabe des Zielports im TCP- oder UDP-Header, um die Daten im TCP-Segment oder der UDP-Meldung der korrekten Anwendung zu übergeben (Demultiplexing).

Abbildung 2-5 zeigt als Beispiel eine DNS-Namensanforderung in einem IPv4-Paket mit der IP-Zieladresse 131.107.89.223, das dem DNS-Dienst übergeben wird (Demultiplexing).

Figure 2-5  Example of IPv4 packet demultiplexing

Abbildung 2-5  Beispiel für Demultiplexing eines IPv4-Pakets
Bild maximieren

Anwendungsprogrammierschnittstellen (APIs)

Windows-Netzwerkanwendungen verwenden zwei Anwendungsprogrammierschnittstellen (APIs), um unter Windows auf TCP/IP-Dienste zuzugreifen: Windows Sockets und NetBIOS. Abbildung 2-6 zeigt diese APIs und den möglichen Datenfluss bei ihrer Verwendung.

Figure 2-6  Architecture of the Windows Sockets and NetBIOS APIs

Abbildung 2-6  Architektur der Windows Sockets- und NetBIOS-APIs
Bild maximieren

Nachfolgend werden einige konzeptionelle Unterschiede zwischen der Windows Sockets-API und der NetBIOS-API aufgeführt:

NetBIOS über TCP/IP (NetBT) ist für die Arbeitsweise über IPv4 definiert. Windows Sockets unterstützt sowohl IPv4 als auch IPv6.

Windows Sockets-Anwendungen können direkt über die IPv4- oder IPv6-Internet-Schicht arbeiten, ohne TCP oder UDP verwenden zu müssen. NetBIOS ist nur über TCP und UDP einsetzbar.

Windows Sockets

Windows Sockets ist eine allgemein verwendete, moderne API für Netzwerkanwendungen in Windows. Die zum Lieferumgang von Windows gehörigen TCP/IP-Dienste und Dienstprogramme sind Beispiele für Windows Sockets-Anwendungen. Windows Sockets stellt Dienste bereit, die es Anwendungen ermöglichen, bestimmte IP-Adressen und -Ports zu verwenden, Verbindungen zu einer bestimmten IP-Zieladresse und einem Zielport zu initialisieren und zu akzeptieren, Daten zu senden und zu empfangen und eine Verbindung zu schließen.

Es gibt drei Typen von Sockets:

Ein Streamsocket, der zweiseitigen, verlässlichen, sequentiellen und nicht duplizierenden Datenfluss mittels TCP bietet.

Ein Datagrammsocket, der bidirektionalen Datenfluss mittels UDP bietet.

Ein Low-Level-Socket, der Protokollen den direkten Zugriff auf IP bietet, ohne TCP oder UDP verwenden zu müssen.

Ein Socket fungiert als Endpunkt für die Netzwerkkommunikation. Eine Anwendung erzeugt einen Stream- oder Datagrammsocket, indem sie drei Elemente angibt: die IP-Adresse des Hosts, der Typ des Dienstes (TCP für verbindungsorientierten und UDP für verbindungslosen Dienst) und den Port, den die Anwendung verwendet. Zwei Sockets, einen für jeden Endpunkt der Verbindung, bilden einen bidirektionalen Verbindungsweg. Für Low-Level-Sockets muss die Anwendung die gesamten IP-Nutzdaten angeben.

NetBIOS

NetBIOS ist eine ältere API, die Namensverwaltung sowie Datagramm- und Sitzungsdienste für NetBIOS-Anwendungen bietet. Eine Anwendung, die die NetBIOS-API für die Netzwerkkommunikation nutzt, kann mit jeder Protokollimplementierung laufen, die die NetBIOS-Schnittstelle unterstützt. Beispiele für Windows-Anwendungen und -Dienste, die NetBIOS verwenden, sind die gemeinsame Nutzung von Dateien und Druckern und der Computerbrowser-Dienst.

NetBIOS definiert auch ein Protokoll, das in der OSI-Kommunikationsschicht funktioniert. Diese Schicht wird durch die darunter liegende Protokollimplementierung, etwa NetBIOS über TCP/IP (NetBT) implementiert; NetBT ist in den RFCs 1001 und 1002 definiert. Der NetBIOS-Namensdienst verwendet UDP-Port 137. Der NetBIOS-Datagrammdienst benutzt UDP-Port 138. Der NetBIOS-Sitzungsdienst verwendet TCP-Port 139.

TCP/IP-Benennungsschemata in Windows

Zwar arbeitet IP mit 32 Bit (IPv4) und 128 Bit (IPv6) langen Adressen für sendende und empfangende Hosts, doch können Computeranwender mit Namen besser als mit IP-Adressen umgehen und sich Namen auch einfacher merken. Wird ein Name als Alias für eine IP-Adresse verwendet, muss ein Mechanismus vorhanden sein, der IP-Adressen Namen zuweist, deren Eindeutigkeit sicherstellt und diese Namen wieder in den zugehörigen IP-Adressen zuordnet.

Die TCP/IP-Komponenten von Windows verwenden jeweils eigene Mechanismen für die Zuweisung und Auflösung von Hostnamen (wie sie Windows Sockets-Anwendungen nutzen) und NetBIOS-Namen (wie sie NetBIOS-Anwendungen nutzen).

Hostnamen

Ein Hostname ist ein Alias, der einem IP-Knoten zugewiesen wurde, um ihn als TCP/IP-Host zu kennzeichnen. Der Hostname kann bis zu 255 Zeichen lang sein und Buchstaben und Ziffern sowie die Zeichen “-” und “.” enthalten. Einem Host können mehrere Hostnamen zugewiesen werden.

Windows Sockets-Anwendungen, beispielsweise Internet Explorer und das Dienstprogramm Ping, können mit zwei Werten auf einen Zielhost verweisen: der IP-Adresse oder dem Hostnamen. Gibt der Anwender eine IP-Adresse an, wird keine Namensauflösung benötigt. Gibt der Anwender einen Hostnamen an, muss diesem Namen eine IP-Adresse zugeordnet werden, bevor die Kommunikation mit der Zielressource möglich ist.

Hostnamen können verschiedene Formen annehmen. Die zwei gebräuchlichsten Formen sind der Spitzname und der voll qualifizierte Domänenname (Fully Qualified Domain Name, FQDN). Ein Spitzname ist ein Alias für eine IP-Adresse, den ein bestimmter Anwender zuweisen und benutzen kann. Ein FQDN ist ein strukturierter Name, beispielsweise www.microsoft.com, der den von DNS verwendeten Internet-Konventionen folgt.

NetBIOS-Namen

Ein NetBIOS-Name ist ein 16 Byte langer Name, der eine NetBIOS-Anwendung im Netzwerk bezeichnet. Ein NetBIOS-Name ist entweder ein eindeutiger (exklusiver) Name oder ein (nicht exklusiver) Gruppename. Wenn eine NetBIOS-Anwendung mit einer bestimmten NetBIOS-Anwendung auf einem einzelnen Computer kommuniziert, werden eindeutige Namen verwendet. Wenn ein NetBIOS-Prozess mit mehreren NetBIOS-Anwendungen auf verschiedenen Computern kommuniziert, wird ein Gruppenname verwendet.

Der NetBIOS-Name kennzeichnet Anwendungen in der Kommunikationsschicht des OSI-Modells. Der NetBIOS-Sitzungsdienst arbeitet beispielsweise über TCP-Port 139. Da alle NetBT-Sitzungsanforderungen an den TCP-Zielport 139 adressiert werden, müssen NetBIOS-Anwendungen den NetBIOS-Namen des Ziels verwenden, wenn sie eine NetBIOS-Sitzung einrichten.

Ein Beispiel für die Verwendung eines NetBIOS-Namens ist die gemeinsame Nutzung von Dateien und Druckern auf einem Windows-Computer. Wenn Ihr Computer startet, registriert der Serverdienst einen eindeutigen NetBIOS-Namen, der von dem Namen Ihres Computers abgeleitet ist. Vom Serverdienst wird der 15 Zeichen lange Computername plus einem sechzehnten Zeichen mit dem Hexadezimalwert 0x20 verwendet. Ist der Computername kürzer als 15 Zeichen, wird er mit Leerzeichen auf die Länge von 15 Zeichen aufgefüllt. Andere Netzwerkdienste verwenden ebenfalls den Computernamen als Grundlage für ihre NetBIOS-Namen, wobei das sechzehnte Zeichen in der Regel dazu dient, den jeweiligen Dienst zu kennzeichnen.

Wenn Sie unter Angabe des Computernamens eine Verbindung mit einem Computer mit Windows Server 2003 oder Windows XP zur gemeinsamen Nutzung von Dateien herstellen möchten, dann entspricht der Serverdienst des von Ihnen angegebenen Dateiservers einem bestimmten NetBIOS-Namen. Wenn Sie beispielsweise eine Verbindung zum Computer CORPSERVER herstellen, lautet der dem Serverdienst entsprechende NetBIOS-Name CORPSERVER     <20>. (Beachten Sie, dass der Name mit Leerzeichen aufgefüllt wurde.) Bevor eine Verbindung zur gemeinsamen Nutzung von Dateien und Drucker hergestellt werden kann, muss eine TCP-Verbindung erzeugt werden. Damit eine TCP-Verbindung hergestellt werden kann, muss dem NetBIOS-Namen CORPSERVER     <20> eine IPv4-Adress zugeordnet werden. Unter der NetBIOS-Namensauflösung versteht man den Vorgang der Zuordnung einer IPv4-Adresse zu einem NetBIOS-Namen.

Zusammenfassung des Kapitels

In diesem Kapitel wurden folgende Schlüsselinformationen behandelt:

Die TCP/IP-Protokollfamilie entspricht den vier Schichten des DARPA-Modells: Anwendungsschicht, Transportschicht, Internet-Schicht und Netzzugangsschicht.

Die Protokolle der IPv4-Internet-Schicht sind ARP, IP (IPv4), ICMP und IGMP.

Die Protokolle der IPv6-Internet-Schicht sind IPv6, ICMPv6, ND und MLD.

Die Protokolle der Transportschicht sind TCP und UDP. TCP ist ein verlässlicher, verbindungsbasierter Kommunikationsdienst. UDP ist ein verbindungsloser Datagrammdienst, der weder für die Zustellung der Datagramme noch für die korrekte Reihenfolge der gelieferten Pakete garantiert.

IP-Pakete werden basierend auf den Feldern der IPv4-, IPv6-, TCP- und UDP-Header mittels Multiplexing und Demultiplexing zwischen Anwendungen ausgetauscht.

Die TCP/IP-Komponenten in Windows unterstützen zwei APIs für Netzwerkanwendungen: Windows Sockets und NetBIOS. Windows Sockets ist eine moderne API, die Anwendungen Streamsockets, Datagrammsockets und Low-Level-Sockets zu verwalten erlaubt. NetBIOS ist eine ältere API, mit deren Hilfe Anwendungen NetBIOS-Namen, -Datagramme und -Sitzungen verwalten können.

Die TCP/IP-Komponenten in Windows unterstützen zwei Namensschemata für Netzwerkanwendungen: Hostnamen (von Windows Sockets-Anwendungen verwendet) und NetBIOS-Namen (von NetBIOS-Anwendungen verwendet).

Kapitelglossar

Automatische Adresskonfiguration – Der IPv6-ND-Vorgang der automatischen Konfiguration von IPv6-Adressen einer Schnittstelle.

Adressauflösung – Der Vorgang, bei dem der IP-Folgeknotenadresse unter IPv4 mithilfe von ARP und unter IPv6 mithilfe von ND eine MAC-Adresse zugeordnet wird.

Address Resolution Protocol (ARP) – Ein Protokoll, das mittels Broadcastnachrichten im lokalen Netzwerk einer IPv4-Adresse die zugehörige MAC-Adresse zuordnet.

ARP – Siehe Address Resolution Protocol.

ARP-Cache – Eine für jede Schnittstelle bestehende Tabelle mit dynamisch oder statisch aufgenommenen Einträgen mit IPv4-Adressen und den zugehörigen MAC-Adressen.

ICMP – Siehe Internet Control Message Protocol.

ICMPv6 – Internet Control Message Protocol für IPv6.

IGMP – Siehe Internet Group Management Protocol.

Internet Control Message Protocol (ICMP) – Ein Protokoll der IPv4-Internet-Schicht, das Fehler meldet und Möglichkeiten zur Fehlerbehandlung bietet.

Internet Control Message Protocol für IPv6 (ICMPv6) – Ein Protokoll der IPv6-Internet-Schicht, das Fehler meldet, Möglichkeiten zur Fehlerbehandlung bietet und außerdem für ND- und MLD-Nachrichten verantwortlich ist.

Internet Group Management Protocol (IGMP) – Ein Protokoll der IPv4-Internet-Schicht, das in einem Subnetz die Mitgliedschaft in Multicastgruppen verwaltet.

Internet Protocol (IP) – Bei IPv4 ein routerfähiges Protokoll der IPv4-Internet-Schicht, das Pakete adressiert, verschickt, fragmentiert und wieder zusammenfügt. Wird auch als Oberbegriff zur Bezeichnung der IPv4- und IPv6-Protokollfamilie verwendet.

IP – Siehe Internet Protocol.

IPv4 – Die Internet-Schicht, die im Internet und in privaten Netzwerken breite Verwendung findet. Ein anderer Begriff für IP.

IPv6 – Die neue Internet-Schicht, die einmal die vorhandene IPv4-Internet-Schicht ersetzen wird.

MLD – Siehe Multicast Listener Discovery.

Multicast Listener Discovery (MLD) – Ein Satz von drei ICMPv6-Nachrichten, die Hosts und Router verwenden, um in einem Subnetz die Mitgliedschaft in Multicastgruppen zu verwalten.

Namensauflösung – Der Vorgang der Zuordnung eines Namens zu einer Adresse.

ND – Siehe Neighbor Discovery.

Nachbarcache – Ein für jeden IPv6-Knoten bestehender Cache, in dem die IPv6-Adresse eines Nachbarn und die ihr entsprechende MAC-Adresse gespeichert ist. Der Nachbarcache entspricht dem ARP-Cache von IPv4.

Neighbor Discovery (ND, Nachbarerkennung) – ND ist eine Folge von ICMPv6-Nachrichten und Prozessen, die die Beziehungen zwischen benachbarten Knoten festlegen. ND ersetzt ARP, ICMP-Routererkennung und die ICMP-Umleitungsnachrichten von IPv4.

Network Basic Input/Output System (NetBIOS) – Eine Standard-API für Anwendungen zur Verwaltung von NetBIOS-Namen und zum Zugriff auf NetBIOS-Datagramm- und Sitzungsdienste.

NetBIOS – Siehe Network Basic Input/Output System.

Routererkennung – Der Vorgang der Nachbarerkennung, bei dem ein Host die lokalen Router eines angeschlossenen Subnetzes ermittelt.

TCP – Siehe Transmission Control Protocol.

Transmission Control Protocol (TCP) – Ein verlässliches, verbindungsbasiertes Protokoll der Transportschicht, das über IP angesiedelt ist.

UDP – Siehe User Datagram Protocol.

User Datagram Protocol (UDP) – Ein verbindungsloses, nicht zuverlässiges Protokoll der Transportschicht, das oberhalb von IP angesiedelt ist.

Windows Sockets – Eine allgemein verwendete Programmierschnittstelle (API), auf die sich Windows-Anwendungen stützen, um Daten mittels TCP/IP zu übertragen.


**
In diesem Beitrag
**