claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 11/2003

Netzwerke mit TCP/IP

Ins Netz gegangen!

von Ian Travis


In der Linux-Gemeinschaft spielt Kommunikation eine zentrale Rolle: Der Pinguin fühlt sich im Netz wohl. Lesen Sie, mit welchen Techniken TCP/IP alle Systeme verbindet.

Die Kommunikation im Internet und in lokalen Netzen ist heute ein fundamentaler Teil unseres Lebens. Könnten Sie sich eine Rückkehr zu den Turnschuhnetzwerken der frühen 80er Jahre vorstellen? "Meier, diese Diskette muss in spätestens fünf Minuten bei Frau von Wichtig im 23. Stock sein -- sehen Sie mal zu!" Heute weiß Herr Meier das Unternehmensnetzwerk zu schätzen.

Haben Sie sich schon einmal überlegt, wie das alles funktioniert? Wie überbrücken die Bits und Bytes von Ihrem Desktop aus Tausende von Kilometern, um wohlbehalten am Ziel anzukommen? Dieser Artikel bietet das Basiswissen, das Ihnen hilft, Ihr eigenes Heim-Netzwerk zu verstehen.

Von Babylon zu TCP/IP

Wer zwei Computer miteinander vernetzt, will damit Informationen übertragen. Aus der heutigen Perspektive erscheint diese Aufgabe fast trivial, die verschiedensten Systeme arbeiten reibungslos zusammen. Da wird die Auswahl von Komponenten mehr zu einer Frage des persönlichen Geschmacks oder des Portemonnaies.

Dass die Kommunikation im Netzwerk heute reibungslos läuft, geht auf Überlegungen der Internet-Pioniere zurück. Sie wollten die Vielfalt der inkompatiblen Technologien zu einer koordinierten Einheit zusammenführen. Die Antwort dieser Pioniere war das Internetwork (kurz Internet), ein offenes System, in dem sich Computer mit unterschiedlichen Architekturen austauschen können.

Wesentlicher Bestandteil des Internetwork sind Standards, die genau festlegen wie vernetzte Computer kommunizieren sowie Konventionen, wie Netzwerke anzubinden sind und wie Daten über diese Netzwerke geleitet werden. Diese Standards und Konventionen sind heute als TCP/IP Internet Protocol Suite bekannt, kurz TCP/IP.

Das Internet-Protokoll

TCP/IP wurde nach den beiden wichtigsten Protokollen der Suite genannt: Transmission Control Protocol/Internet Protocol. Um die Netzwerkkommunikation losgelöst von der eigentlichen Netzwerkhardware betrachten zu können, haben die Entwickler die einzelnen Kommunikationsaufgaben in klar strukturierte Einheiten (Schichten) aufgeteilt.

Innerhalb einer Schicht sind die einzelnen Komponenten austauschbar. Sie erfüllen zwar die gleiche grundlegende Aufgabe, allerdings auf unterschiedliche Weise. Eine dieser Aufgaben betrifft den Umgang mit den physischen Aspekten des Netzwerks, den Netzwerkkarten und Übertragungsmedien. Am bekanntesten sind hier Ethernetkarten. Wer seine Karte austauscht, muss nur den passenden Treiber auswählen, nicht aber die Netzwerk-Schicht oder gar die Anwendung ändern.

Eine weitere Aufgabe der physischen Schicht ist, die auszutauschenden Daten in eine für die Übertragung geeignete Form zu bringen. Die Signale müssen die physische Beschaffenheit des Übertragungsmediums berücksichtigen.

Während die physische Schicht die Daten nur von einem Ende des Kabels zum anderen überträgt, sorgt die Netzwerkschicht dafür, dass sie durch das Internet den richtigen Zielrechner finden. Die Transportschicht wählt dann innerhalb des Rechners den gewünschten Dienst und sorgt -- im Falle von TCP -- noch dafür, dass alle Daten wohlbehalten und in der richtigen Reihenfolge ankommen. Falls doch ein Paket verloren geht, kümmert sich TCP darum, dass es der Absender erneut versucht.

Verkapselung

Wenn eine Anwendung Daten per TCP/IP versendet, laufen diese Daten durch die verschiedenen Schichten des Protokoll-Stapels, bis sie anschließend die Netzwerkkarte als Bitstrom über das Netzwerk verlassen. Jede Schicht fügt Steuerungsinformationen hinzu. Man kann sich die Nutzdaten als die kleinste Puppe in einem Satz russischer Puppen vorstellen. Jede Protokollebene stülpt eine weitere Puppe darüber, den so genannten Header.

Eine Anwendung, die Daten schreibt, verkapselt diese selbst in einen Applikations-Header und übergibt sie zum Beispiel an TCP. TCP fügt einen eigenen TCP-Header hinzu und bildet damit ein TCP-Segment, das es an IP übergibt. IP -- Sie ahnen es -- fügt einen weiteren Header hinzu, um ein so genanntes IP-Datagramm zu bilden. In einem Ethernet-Netzwerk enthält das Datagramm zum Schluss einen Ethernet-Header und -Trailer, um den physischen Rahmen zu bilden, der tatsächlich auf dem Netzwerkkabel übertragen wird.

Adressen

Wer in einem TCP/IP-Netzwerk von Adressen spricht, muss auch klar sagen, welche Adressen er meint. Auf der untersten Ebene besitzt die Hardwareschnittstelle eine eindeutige physische Adresse, zum Beispiel eine 48-Bit-Ethernet-Adresse der Form 00:E0:29:27:B1:75. Diese Adresse ist bereits vom Hersteller vergeben und auf jeder Karte weltweit einmalig.

Die Ethernet-Adresse ist für die hardwarenahe Kommunikation nötig: An einem Ethernet-Strang können viele Computer hängen. Eine Netzwerkkarte entscheidet nur anhand der Ethernet-Adresse, ob ein Paket für ihren Rechner bestimmt ist oder nicht. Da es hier um den Zugriff auf das Übertragungsmedium (das Ethernet-Kabel) geht, heißt diese Adresse auch MAC-Adresse (Media Access Control).

Nur mit den MAC-Adressen wären aber keine großen Netze möglich: Da der Hersteller die Adresse vergibt, aber nicht weiß, wo die Karte zum Einsatz kommt, wäre die Wegesuche in diesem Netz kaum möglich. Stellen Sie sich vor, jedes Haus hätte nur eine zufällige Nummer, es gäbe aber keine Städte- und Straßennamen. Bei MAC-Adressen sind die Häuser nicht einmal fortlaufend durchnummeriert, ihre Adressen sind wild durcheinander.

IP bringt Ordnung

Ordnung in dieses Chaos bringt die IP-Adresse. Jeder Computer erhält eine solche Adresse, sie ist seine Nummer im Internet (gültig auf der Netzwerk-Schicht). Diese Adresse ist strukturiert aufgebaut: Der erste Teil ist die Nummer des Netzwerks, in dem sich der Computer befindet; der zweite Teil kennzeichnet den Host.

Will ein Rechner mit einem anderen sprechen, dann muss er die Daten letzten Endes doch wieder per Ethernet versenden. Da die Netzwerkkarte nur MAC-Adressen kennt, muss irgend wer aus der (bekannten) IP-Adressen die (gesuchte) MAC-Adresse des Zielrechners ermitteln. Diese Aufgabe übernimmt ARP, das Address Resolution Protocol (Adressauflösung).

Kennt der Absender die MAC-Adresse des Empfängers nicht, fragt er per ARP-Rundruf alle Hosts im lokalen Netz, wo denn der Gesuchte sei. Hört dieser die Frage, dann antwortet er sofort mit seiner eigene Adresse. Für die nächste Zeit (etwa 10 Minuten) merken sich alle Beteiligten, welche MAC- und welche IP-Adresse zusammengehören.

Routing

Dieses Verfahren ist nur innerhalb eines lokalen Netzes sinnvoll. Würde weltweit jeder Rechner alle anderen fragen, nur um ein Ziel zu finden, dann wären die Netze mit nichts anderem beschäftigt als mit ARP-Fragen und -Antworten. Der Ausweg aus der Misere heißt Routing: Diese Technik wählt ganz gezielt den besten Übertragungspfad für die Pakete. Welcher Pfad das ist, bestimmen die Router.

Der Router ist aus Sicht eines lokalen Netzes das Tor zur Außenwelt. Ein Tor muss jeder Host kennen: Es handelt sich um die Default-Route. Sie müssen in der Konfiguration des Rechners die IP-Adresse des Default-Routers festlegen.

Befindet sich der gesuchte Zielrechner nicht im gleichen Netz wie der Absender, dann wendet der sich einfach an seinen Router und überlässt es ihm, den weiteren Weg zu suchen und die Pakete weiterzuschicken. An der Stelle kommen die beiden Teile der IP-Adresse zum Tragen: Der Router nutzt den Netzwerk-Teil, um das Zielnetz zu finden, und innerhalb des Zielnetzes kennzeichnet der Host-Teil den tatsächlich gesuchten Partner.

Sind Quell- und Zielnetz identisch, dann liegt der Zielrechner im lokalen Netz des Absenders. Hier werden die Pakete direkt zugestellt: Der Absender ermittelt per ARP die MAC-Adresse und schickt die Daten dann direkt dort hin.

Abb. 1: Rechner A sendet ein Paket an B. Als Ziel-IP-Adresse setzt er B ein, als MAC-Adresse das linke Router-Interface. Der Rouer leitet das Paket weiter; die IP-Adressen lässt er, setzt aber die MAC-Adressen neu. Ein Switch verändert das Paket nicht.

Maske aufsetzen

Welcher Teil der Adresse Host- und welcher Netzwerk-Adresse ist, wird von der Subnetzmaske festgelegt. Obwohl es verschiedene Notationen für IP-Adressen gibt, ist das so genannte Dotted-Decimal-Format am Gängigsten. Dabei werden die 32 Bits der IP-Adresse in vier Gruppen mit je 8 Bits aufgeteilt, die jeweils durch einen Punkt voneinander getrennt sind. Die Zahlen in jeder Achtergruppe werden im Dezimalformat angegeben. Eine typische Adresse lautet damit 192.168.41.207. Die Netzmaske ist ähnlich aufgebaut: Eine gesetztes Bit (eine Eins) bedeutet, dass diese Stelle für das Netzwerk zuständig ist, eine Null bedeutet dagegen: Hier ist der Host-Anteil. Sind in einem Byte alle acht Bit auf Eins gesetzt, ergibt sich der Dezimalwert 255.

Mit diesem Wissen können Sie die folgende Maske verstehen: 255.255.255.0. Die ersten drei Byte lauten 255, also sind die ersten drei Byte der IP-Adresse als Netzadresse zu verstehen. Das letzte Byte lautet Null, also steckt hier die Hostadresse. Der Computer befindet sich also im Netzwerk 192.168.41.0 und hat dort die Host-ID 207.

Im stillen Kämmerlein: Die privaten Netze

Wer sein lokales Netz ohne Internet-Anbindung nutzt, muss sich kaum Gedanken um das Routing machen -- er muss nur bei allen Adressen die gleiche Netz-ID verwenden und die Netzmaske richtig setzen. Falls jemand dieses lokale Netz dann doch ans Internet anschließt, könnte das aber wieder ins Adress-Chaos führen. Um das zu verhindern, hat die IETF (Internet Engineering Task Force) eine Reihe von Adressen als privat designierten.

Private Adressen können Sie bedenkenlos für Ihre Experimente einsetzen. Diese Adressen werden niemals für Netzwerke im globalen Internet vergeben und niemals von Routern im Internet weitergeleitet, Adresskonflikte sind daher ausgeschlossen. Die folgenden Adressen sind als privat klassifiziert:

Die IP-Adresse aus dem Beispiel weiter oben (192.168.41.207) ist also eine private Adresse. Damit kennt der Rechner aber nicht ins Internet: In jedem Daten-Paket steht die Absenderadresse. Außerhalb des lokalen Netzes ist diese private Adresse aber ungültig.

Abb. 2: Die Netzwerkeinstellungen unter Red Hat mit "redhat-config-network".

Abb. 3: Die Netzwerkeinstellungen unter SuSE-Linux mit YaST.

Trotz privater Adresse ins öffentliche Internet

Es gibt zwei Lösungen für dieses Problem: Sie könnten öffentliche Adressen verwenden, allerdings müssten Sie diese erst bei einem Provider kaufen. Ganze Adressblöcke sind aber sehr teuer. Bei einer typischen Internet-Verbindung über Modem, ISDN oder DSL erhalten Sie zwar automatisch eine IP-Adresse, allerdings ist diese für die Außenanbindung vergeben. Für die anderen Computer in Ihrem lokalen Netz dürfen Sie diese Adresse nicht einsetzen. Es gibt aber einen Ausweg.

Der Router, dessen Adresse als Default-Route für die anderen Maschine konfiguriert wurde, kann eine Technik namens Network Address Translation (NAT) nutzen. Das NAT-Gateway ersetzt einfach die IP-Quelladresse in jedem ausgehenden Paket durch die eigene öffentliche (und damit routbare) IP-Adresse. Für jedes eingehenden Paket dreht sich der Vorgang um, das Gateway ersetzt die Zieladresse durch die private IP-Adresse der Maschine, die auf eine Antwort aus dem Internet wartet.

Aus Sicht der internen Maschine ist das NAT-Gateway ein Router, über den sie alle externen Adressen erreicht. Aus dem Internet ist nur das NAT-Device zu sehen; dass es die Pakete weiterleitet und dabei die Adressen verändert weiß niemand.

Merkhilfe

Merken muss sich dank DNS niemand die unhandlichen IP-Adressen. Das Domain Name System sorgt dafür, dass wir Menschen, die gut mit intuitiven Namen wie www.easylinux.de umgehen können, von den weniger intuitiven IP-Adressen wie 62.245.157.216 verschont bleiben.

Der kleine Bruder des DNS ist die Datei /etc/hosts. Sie erfüllt die selbe Aufgabe wie das komplexe DNS, aber auf einfachste Weise: Hier stehen IP-Adressen und Hostnamen. Will ein Programm mit einen Rechner kommunizieren, dessen Namen es kennt, dann sucht das Betriebssystem in /etc/hosts nach einem passen Eintrag. Wird es fündig, dann nutzt es die dort aufgeführte IP-Adresse -- das Ganze gleicht einem privaten Adressbuch.

DNS ist dagegen ein globales Telefonbuch. Die DNS-Server im Internet sind in einer Namenshierarchie organisiert. Kann ein Server einen bestimmten Namen nicht auflösen, so kennt er immerhin die Adresse eines übergeordneten DNS-Servers, der ihm oder der anfragenden Maschine die passende Antwort liefert.

DHCP spart Handarbeit

Für all die genannten Aufgaben sind eine Reihe von Konfigurationen nötig: Die eigene IP-Adresse und die Netzmaske sowie die IP-Adressen des Routers und eines DNS-Servers. In vielen Fällen ist es aber nicht nötig, all diese Daten von Hand einzugeben -- es gibt auch hierfür einen automatischen Dienst. Administratoren in größeren Netzwerken nutzen DHCP (Dynamic Host Configuration Protocol), um die jeweils aktuellen Einstellungen an die Client-Computer zu übermitteln.

Im DHCP sucht der Client, der eine IP-Adresse benötigt, mit einer Rundsendung (Broadcast) nach einem DHCP-Server. Jeder Server, der diese Anforderung hört, antwortet mit einem entsprechenden Angebot. Der Computer nimmt das erste Angebot an, worauf ihm der DHCP-Server alle relevanten Daten sendet. (fjl)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-01-25 16:31

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]