![]() |
|
Linux - Wegweiser für NetzwerkerOnline-VersionCopyright © 2001
by O'Reilly Verlag GmbH & Co.KG Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen. Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier. |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Modernen Netzwerkanwendungen liegt ein sehr hochentwickeltes und durchdachtes Konzept zugrunde, um Daten von einer Maschine zu einer anderen zu übertragen. Wenn Sie ein Linux-System mit vielen Anwendern verwalten, die gleichzeitig Verbindungen zu entfernten Hosts aufnehmen wollen, müssen Sie dafür sorgen, daß Ihre Netzwerkverbindung so aufgeteilt wird, daß alle Anwender bedient werden können und sich dabei nicht gegenseitig in die Quere kommen. Das Konzept, das von vielen modernen Netzwerkprotokollen genutzt wird, wird als paketorientierte Datenübertragung (packet-switching) bezeichnet. Ein Paket ist ein kleines Datenbündel, das über ein Netzwerk von einer Maschine auf eine andere übertragen wird. Ein paketorientiertes Netzwerk nutzt einzelne Netzwerkleitungen, indem es die zu übertragenden Daten aller Hosts in Pakete zerteilt, sie abwechselnd nacheinander überträgt. Auf diese Weise hat jeder Anwender den Eindruck, er würde sofort bedient und die Netzleitung stünde ihm exklusiv zur Verfügung.
Die Lösung, die von UNIX-Systemen — und vielen Nicht-UNIX-Sites — übernommen wurde, ist als TCP/IP bekannt. Wenn es um TCP/IP geht, wird Ihnen der Begriff Datagramm begegnen, der oft als Synonym für Paket verwendet wird, in technischen Zusammenhängen aber eigentlich eine andere Bedeutung hat. In diesem Abschnitt werden wir die zugrundeliegenden Konzepte betrachten.
Die Wurzeln von TCP/IP liegen in einem Forschungsprojekt, das von der amerikanischen Defense Advanced Research Projects Agency (DARPA) im Jahre 1969 finanziert wurde. Was unter dem Namen ARPANET als experimentelles Netzwerk begann, wurde im Jahre 1975 in den normalen Betrieb übernommen, nachdem es sich als erfolgreich erwiesen hatte.
Im Jahre 1983 wurde die neue TCP/IP-Protokoll-Familie als Standard übernommen, und alle Hosts im Netzwerk mußten es von nun an einsetzen. Während ARPANET langsam zum Internet heranwuchs (wobei das ARPANET im Jahre 1990 aufhörte zu existieren), hatte sich TCP/IP schon auf Netzwerken außerhalb des Internet ausgebreitet. Viele Firmen verfügen mittlerweile über Unternehmens-Netzwerke auf der Basis von TCP/IP, und das Internet ist mittlerweile so groß geworden, daß man es durchaus als Mainstream-Verbrauchertechnologie auffassen kann. Man findet kaum noch eine Zeitung oder ein Magazin, in dem nicht irgendein Verweis auf das Internet enthalten ist. Fast jeder kann es heutzutage nutzen.
Als konkretes Beispiel zur Erläuterung von TCP/IP in den folgenden Abschnitten führen wir die irgendwo in Fredland ansässige Groucho-Marx-Universität (GMU) ein. Die meisten Institute betreiben ihr eigenes lokales Netzwerk, während andere eines gemeinsam nutzen und wieder andere gleich mehrere betreiben. Alle sind miteinander verbunden und haben über eine gemeinsame Hochgeschwindigkeitsleitung Zugang zum Internet.
Stellen Sie sich vor, Ihre Linux-Kiste ist mit einem LAN von UNIX-Hosts im mathematischen Institut verbunden (nennen wir sie einfach mal erdos). Um nun auf einen Host im physikalischen Institut, sagen wir auf quark, zugreifen zu können, müssen Sie den folgenden Befehl eingeben:
$ rlogin quark.physics
Welcome to the Physics Department at GMU (ttyq2) login:
Wenn die Eingabeaufforderung erscheint, müssen Sie Ihren Login-Namen, z.B. andres, und Ihr Paßwort eingeben. Nach der korrekten Eingabe wird auf quark eine Shell1 gestartet, in der Sie arbeiten können, als würden Sie an der Konsole des Systems sitzen. Sobald Sie die Shell verlassen, erscheint wieder der Prompt Ihrer eigenen Maschine. Sie haben damit gerade eine der grundlegenden, interaktiven Anwendungen verwendet, die TCP/IP zur Verfügung stellt: Remote Login, das Einloggen auf einem entfernten Rechner.
Während Sie in quark eingeloggt sind, möchten Sie vielleicht eine X11-basierte Anwendung, beispielsweise eine Textverarbeitung, ein Grafikprogramm oder einen WWW-Browser, ausführen. Das X Window System ist eine vollständig netzwerkorientierte grafische Benutzeroberfläche und für viele verschiedene Computersysteme erhältlich. Um nun der Anwendung mitzuteilen, daß ihre Ausgaben auf dem Bildschirm Ihres Rechners erscheinen sollen, müssen Sie die Umgebungsvariable DISPLAY setzen:
$DISPLAY=erdos.maths:0.0
$export DISPLAY
Wenn Sie nun die Anwendung starten, erscheinen die Ausgaben nicht mehr auf quark, sondern auf Ihrem Rechner, d.h., die Fenster der Anwendung erscheinen auf dem Bildschirm Ihres Rechners (vorausgesetzt, daß X11 auf erdos läuft). Der entscheidende Punkt ist hier, daß TCP/IP es quark und erdos erlaubt, X11-Pakete hin und her zu schicken, und Ihnen so vorgaukelt, daß Sie auf einem einzigen System arbeiten. Das Netzwerk ist hier fast transparent.
Eine weitere sehr wichtige Anwendung in TCP/IP-Netzwerken ist NFS, was für Network File System steht. NFS ist eine weitere Möglichkeit, Netzwerke transparent zu machen, weil es Ihnen erlaubt, Verzeichnishierarchien von anderen Hosts zu mounten. Diese erscheinen dann auf Ihrem Rechner so, als wären es lokale Dateisysteme. Beispielsweise könnten die Home-Verzeichnisse aller Benutzer auf einer zentralen Maschine gehalten werden, von der aus alle anderen Hosts im LAN die Verzeichnisse mounten können. Das bedeutet, daß sich Benutzer auf jeder beliebigen Maschine einloggen können und sich dennoch immer in ihrem jeweiligen Home-Verzeichnis wiederfinden. Auf die gleiche Weise können Sie Anwendungen, die einen großen Platzbedarf haben (wie Datenbanken, Dokumentationen oder Anwendungsprogramme), auf nur einem Rechner installieren und vielen Hosts Zugriff darauf gestatten. Wir kommen in Kapitel 14 Das Network File System, noch auf NFS zurück.
Das sind natürlich nur einige Beispiele für das, was Sie mit TCP/IP-Netzwerken alles machen können. Die Möglichkeiten sind nahezu unbeschränkt. Einige davon werden wir Ihnen im Laufe des Buches vorstellen.
Wir werfen nun einen genaueren Blick darauf, wie TCP/IP funktioniert. Diese Informationen helfen Ihnen zu verstehen, wie und warum Sie Ihre Maschine konfigurieren müssen. Wir beginnen mit einer Untersuchung der Hardware und arbeiten uns dann langsam vor.
Die in LANs am weitesten verbreitete Hardware wird Ethernet genannt. In ihrer einfachsten Form besteht sie aus einem einzigen Kabel, das zwei Hosts über spezielle Stecker, Taps oder Transceiver miteinander verbindet. Einfache Ethernets sind in der Installation relativ günstig, was — zusammen mit den möglichen Übertragungsraten von 10, 100 oder sogar 1000 Megabit pro Sekunde — sicherlich für ihre große Popularität gesorgt hat.
Ethernet gibt es in drei Varianten: Thick, Thin und Zweidraht (“Twisted Pair”). Thin- und Thick-Ethernet verwenden beide ein Koaxialkabel, das sich aber jeweils in der Dicke und in der Art unterscheidet, wie ein Host an dieses Kabel angeschlossen wird. Thin-Ethernet arbeitet mit einem T-förmigen “BNC”-Steckverbinder, den Sie in das Kabel einfügen und auf einen entsprechenden Stecker auf der Rückseite Ihres Computers aufstecken. Bei Thick-Ethernet müssen Sie ein kleines Loch in das Kabel drillen und einen Transceiver mit Hilfe eines sogenannten “Vampire Taps” einsetzen. Ein oder mehrere Hosts können dann mit diesem Transceiver verbunden werden. Die Kabel für Thin- und Thick-Ethernets dürfen eine maximale Länge von 200 bzw. 500 Metern nicht überschreiten. Es wird daher auch 10Base-2 oder 10Base-5 genannt. Das Wort “Base” bezieht sich auf “Basisband-Modulation” und bedeutet einfach nur, daß die Daten ohne irgendein Modem direkt in das Kabel geleitet werden. Die linke Zahl gibt die Geschwindigkeit in Megabits pro Sekunde an und die rechte Zahl die maximale Länge des Kabels als Vielfaches von Hundert (in Metern). “Twisted Pair” verwendet ein zweiadriges Kupferkabel und üblicherweise zusätzliche Hardware, die als aktiver Hub bekannt ist. Twisted Pair wird auch 10Base-T genannt, wobei das »T« für die verdrillten Kabelpaare steht. Die Version mit 100 MBits pro Sekunde ist allgemein als 100Base-T bekannt.
Auch wenn das Hinzufügen eines weiteren Hosts bei einem Thick-Ethernet eine etwas haarige Angelegenheit ist, bringt es doch das Netzwerk nicht zum Absturz. Fügen Sie einen Host in ein Thin-Ethernet ein, legen Sie dagegen das Netzwerk zumindest für ein paar Minuten lahm, weil Sie das Kabel durchschneiden müssen, um den Verbinder einzufügen. Twisted-Pair-Netzwerke sind noch einfacher aufgebaut. Als Verbindungsknoten verwenden Sie einen sogenannten “Hub”. Sie können an diesen weitere Hosts anschließen oder angeschlossene Hosts entfernen, ohne andere Benutzer zu stören. fungiert, können Sie bedenkenlos Hosts in einen Hub einfügen oder aus ihm entfernen, ohne die anderen Anwender auch nur im geringsten zu stören.
Die meisten Leute ziehen Thin-Ethernet vor, weil es sehr billig ist. Steckkarten für den PC werden für deutlich unter DM 100 angeboten. Der Preis für Kabel liegt bei ein bis zwei Mark pro Meter. Bei größeren Installationen ist Thick-Ethernet oder Twisted Pair die bessere Wahl. Beispielsweise wird am mathematischen Institut der GMU ein Thick-Ethernet verwendet, damit das Netzwerk nicht immer heruntergefahren werden muß, wenn ein neuer Rechner hinzugefügt wird. Mittlerweile werden häufig auch Twisted-Pair-Installationen durchgeführt, in diversen Varianten. Die Hub-Hardware wird immer billiger, und kleine Geräte sind inzwischen auf ein Preisniveau gefallen, das sie auch für kleine häusliche Netzwerke interessant macht. Twisted-Pair-Verkabelung kann vor allem bei großen Installationen enorme Kosten einsparen, und das Kabel selbst ist obendrein noch wesentlich flexibler als das Koaxialkabel, das man in den anderen Ethernet-Systemen verwendet. Die Netzwerkadministratoren des mathematischen Instituts der GMU beabsichtigen, im kommenden Jahr das komplette Netzwerk durch ein Twisted-Pair-Netzwerk zu ersetzen, weil es sie zum einen auf den aktuellen Stand der Technik bringt und zum anderen eine deutliche Zeitersparnis darstellt, wenn es darum geht, neue Hostrechner zu installieren bzw. vorhandene Hosts an andere Standorte zu verlegen.
Ein Nachteil der Ethernet-Technologie ist die begrenzte Länge der Kabel, was die Verwendung auf LANs beschränkt. Auf der anderen Seite können Sie aber mehrere Ethernet-Segmente miteinander verbinden, indem Sie sogenannte Repeater, Bridges oder Router verwenden. Repeater kopieren einfach die Signale zwischen zwei oder mehreren Segmenten, was bedeutet, daß alle Segmente zusammenarbeiten, als wäre es ein einzelnes Ethernet. Aufgrund der Timing-Anforderungen dürfen zwischen zwei Hosts im Netzwerk nicht mehr als vier Repeater verwendet werden. Bridges und Router sind da schon etwas aufwendiger. Sie analysieren die eingehenden Daten und leiten sie nur dann weiter, wenn sich der empfangende Host nicht im lokalen Ethernet befindet.
Ethernet arbeitet wie ein Bus-System, bei dem ein Host Pakete (oder Frames) mit einer Größe von bis zu 1.500 Byte an einen anderen Host in demselben Ethernet übertragen kann. Ein Host wird dabei über eine sechs Byte lange Adresse angesprochen, die in die Firmware der Ethernet-Karte fest eingetragen ist. Diese Adressen werden üblicherweise als eine Sequenz von zweistelligen Hexadezimalzahlen geschrieben, die jeweils durch Doppelpunkte voneinander getrennt werden (beispielsweise aa:bb:cc:dd:ee:ff).
Ein von einem Rechner ausgesandter Frame wird von allen angeschlossenen Rechnern registriert, aber nur der Ziel-Host liest das Paket und verarbeitet es. Versuchen zwei Stationen zur gleichen Zeit zu senden, tritt eine sogenannte Kollision auf. Diese Kollision wird allerdings schnell von der Elektronik auf den Netzwerkkarten erkannt und aufgelöst, indem beide Stationen den Sendevorgang abbrechen, eine zufällige Zeitspanne warten und dann erneut versuchen, Daten zu übertragen. Sie haben vielleicht schon viele Geschichten über die Problematik solcher Kollisionen gehört und daß das Ethernet dadurch nur etwa ein Drittel seiner eigentlichen Kapazität ausnutzen kann. Kollisionen sind im Ethernet ein normales Phänomen, und in stark ausgelasteten Ethernets brauchen Sie sich nicht zu wundern, wenn dort Kollisionsraten von ca. 30 Prozent auftreten. Sie müssen sich also erst ab einer Auslastung von etwa 60 Prozent Sorgen machen, da das die realistischere Grenze der praktisch möglichen Übertragungskapazität eines Ethernet ist. 2
Bei größeren Installationen wie an der Groucho-Marx-Universität wird üblicherweise nicht nur Ethernet benutzt. Dort stehen auch viele andere Datenkommunikations-Protokolle zur Verfügung. Sie werden auch von Linux unterstützt, aber wir gehen hier aus Platzgründen nur kurz darauf ein. Für tiefgreifendere Ausführungen sei auf die existierenden HOWTO-Dokumente der Protokolle verwiesen.
An der GMU sind die LANs aller Institute mit dem Universitäts-Backbone verbunden, einem Glasfaserkabel, über das FDDI (Fiber Distributed Data Interface) läuft. FDDI verwendet einen anderen Ansatz zur Datenübertragung, bei dem eine Reihe sogenannter Tokens ausgesandt werden. Eine Station darf nur dann ein Paket übertragen, wenn sie eines dieser Tokens auffangen konnte. Die Hauptvorteile von FDDI liegen vor allem in der deutlich geringeren Anzahl der Kollisionen, weshalb dieses Protokoll die Kapazität des Transportmediums fast vollständig ausschöpfen kann. Daraus resultieren Geschwindigkeiten von bis zu 100 Mbps. Auch die Kabellänge einer Glasfaser kann deutlich größer sein als bei den drahtbasierenden Technologien. Die Grenze liegt erst bei etwa 200 Kilometern — ideal für die Vernetzung vieler Gebäude in Städten oder — im Fall der GMU — der vielen Gebäude des Campus.
Installationen von IBM-Token-Ring-Netzwerken findet man vor allem dort, wo Teile der technischen Ausstattung von IBM stammen. Token Ring wird in manchen LAN-Umgebungen als Alternative zu Ethernet eingesetzt und bietet in etwa dieselben Vorteile wie FDDI, was die Ausnutzung der vollen Übertragungskapazität des Transportmediums betrifft. Auf den verwendeten Drahtkabeln erreichen Token-Ring-Netzwerke nur Übertragungsraten von bis zu 4 Mbps oder 16 Mbps; dafür sind die Kabel aber deutlich billiger als Glasfaserkabel. In Linux wird die Token-Ring-Netzwerkunterstützung praktisch genauso konfiguriert wie Ethernet, so daß wir hier nicht näher darauf eingehen.
Obwohl es heutzutage weit weniger üblich ist, können auch andere LAN-Technologien wie ArcNet oder DECNet installiert werden. Linux unterstützt diese auch, allerdings gehen wir hier nicht darauf ein.
Viele nationale Netzwerke, die von Telekommunikationsfirmen verwaltet werden, unterstützen sogenannte paketvermittelnde Protokolle (Packet Switching Protocols). Das populärste unter ihnen ist X.25. Viele der sogenannten öffentlichen Datennetze — wie Tymnet in den USA, Austpack in Australien oder Datex-P in Deutschland — bieten diesen Service an. X.25 definiert selbst eine Reihe von Netzwerkprotokollen, die beschreiben, wie Datenterminals (z.B. ein Hostrechner) mit einer Datenkommunikations-Ausrüstung (X.25-Switch) kommunizieren. X.25 erfordert eine synchrone Datenverbindung und daher spezielle synchrone serielle Schnittstellen. Es ist aber auch möglich, normale serielle Schnittstellen zu verwenden, wenn man eine spezielle Hardware namens PAD (Packet Assembler/Disassembler) zur Verfügung hat. Ein PAD ist ein Gerät mit einer synchronen seriellen Schnittstelle und einer oder mehreren asynchronen seriellen Schnittstellen. Es verwaltet das X.25-Protokoll so, daß auch einfache Terminals X.25-Verbindungen etablieren und akzeptieren können. X.25 wird häufig als Transportmittel für andere Netzwerkprotokolle wie z.B. TCP/IP benutzt. Weil IP-Pakete nicht einfach auf X.25-Pakete umgesetzt werden können (umgekehrt übrigens auch nicht), werden sie einfach in X.25-Pakete “eingepackt” und über das Netzwerk geschickt. In Linux wird das X.25-Protokoll zur Zeit nur experimentell unterstützt.
Ein neueres Protokoll, das häufig von Telekommunikationsfirmen angeboten wird, ist das sogenannte Frame Relay. Dieses Protokoll hat einige Gemeinsamkeiten mit dem X.25-Protokoll, verhält sich aber fast so wie das IP-Protokoll. Wie X.25 erfordert auch Frame Relay spezielle synchrone serielle Hardware. Aufgrund ihrer Gemeinsamkeiten unterstützen viele Netzwerkkarten beide Protokolle zugleich. Es sind allerdings auch Varianten erhältlich, die ohne interne Hardware auskommen. Sie basieren auf einem externen Gerät, das als Frame Relay Access Device (FRAD) bezeichnet wird und bei der Datenübertragung für die “Kapselung” von IP-Paketen in Frame-Relay-Pakete zuständig ist. Frame Relay eignet sich vorzüglich zur Übertragung von TCP/IP-Paketen zwischen Sites. Linux bietet Unterstützung für einige interne Frame-Relay-Karten.
Wenn Sie ein Hochgeschwindigkeits-Netzwerk benötigen, das außer Ihren normalen Daten auch verschiedene Medien wie digitalisierte Sprache und Videos übertragen kann, ist vielleicht ATM (Asynchronous Transfer Mode) genau das richtige für Sie. ATM ist eine neue Netzwerktechnologie, die speziell dafür ausgelegt wurde, Daten mit hoher Geschwindigkeit und geringer Verzögerung zu übertragen und dabei die Qualitätskontrolle (Quality of Service [Q.S.]) zu behalten. Viele Telekommunikationsfirmen errichten ganze Infrastrukturen aus ATM-Netzwerken, da sie damit eine Zusammenführung einer Vielzahl verschiedener Netzwerkdienste in einer einzigen Plattform erreichen und sich dadurch eine Reduzierung der Verwaltungs- und Support-Kosten erhoffen. ATM wird meistens zum Transport von TCP/IP-Daten benutzt. Das Networking-HOWTO enthält Informationen über die Unterstützung von ATM in Linux.
Häufig benutzen Amateurfunker ihre Funkgeräte, um ihre Computer zu vernetzen. Diese Technik wird Paket-Radio (oder Ham-Radio) genannt. Eines der von Amateurfunkern verwendeten Protokolle wird AX.25 genannt und ist in gewisser Weise von X.25 abgeleitet. Es wird auch zur Übertragung von TCP/IP und anderen Protokollen benutzt. AX.25 benötigt wie X.25 synchrone serielle Hardware oder ein besonderes Gerät, das als “Terminal Node Controller” bezeichnet wird. Damit werden Datenpakete, die über eine asynchrone serielle Verbindung hereinkommen, in Datenpakete konvertiert, die synchron übertragen werden. Es gibt eine Vielzahl verschiedener Interface-Karten, die im Paket-Radio-Modus arbeiten können; sie werden als “Z8530 SCC”-basiert bezeichnet (nach dem am häufigsten verwendeten Kommunikations-Controller). Zwei andere häufig mit AX.25 übertragene (Netzwerkschicht-)Protokolle sind NetRom und Rose. Da beide Protokolle über AX.25 laufen, haben sie dieselben Hardwareanforderungen. Linux bietet eine vollständige Unterstützung von AX.25, NetRom und Rose. Das AX25-HOWTO ist eine gute Informationsquelle über die Linux-Implementierungen dieser Protokolle.
Andere Techniken verwenden langsame, aber billige serielle Leitungen für den Internetzugriff über Wählleitungen (per Telefon, ISDN etc.). Das erfordert wieder ein anderes Protokoll für die Datenübertragung, zum Beispiel SLIP oder PPP, die wir später beschreiben werden.
Natürlich wollen Sie nicht, daß Ihr Netzwerk auf ein Ethernet oder eine Punkt-zu-Punkt-Verbindung beschränkt ist. Idealerweise sollten Sie mit einem Hostrechner kommunizieren können, ohne Rücksicht darauf nehmen zu müssen, mit welchem Netzwerktyp er verbunden ist. Beispielsweise finden Sie bei einer größeren Installation wie an der Groucho-Marx-Universität üblicherweise eine ganze Reihe separater Netzwerke, die auf irgendeine Art und Weise miteinander verbunden werden müssen. Am mathematischen Institut der GMU wird mit zwei Ethernets gearbeitet: ein Netzwerk mit schnellen Maschinen für Professoren und wissenschaftliche Mitarbeiter und eines mit langsamen Maschinen für die Studenten. Beide Netze hängen am universitätseigenen FDDI-Backbone.
Die Verbindung wird von einem speziellen Host, einem sogenannten Gateway, verwaltet, der ein- und ausgehende Pakete zwischen den beiden Ethernets und der Glasfaserleitung kopiert. Nehmen wir beispielsweise einmal an, Sie sitzen im mathematischen Institut und wollen von Ihrem Linux-Rechner aus auf quark im LAN des physikalischen Instituts zugreifen. Die Netzwerksoftware kann die Pakete nicht direkt an quark schicken, weil es sich nicht in demselben Ethernet befindet. Die Software muß sich nun also auf ein Gateway verlassen, das das Paket entsprechend weiterleitet. Das Gateway (nennen wir es sophus) leitet die Pakete an das Gateway niels weiter, das diese Funktion für das physikalische Institut übernimmt. Die Übertragung erfolgt über den Backbone, und niels liefert die Daten dann an den Zielrechner aus. Der Datenfluß zwischen erdos und quark ist in Abbildung 1.1 dargestellt.
Abbildung 1.1: Die drei Schritte beim Senden eines Datagramms von erdos an quark
Dieses Schema der Weiterleitung von Daten an einen entfernten Host wird Routing genannt. Die Datenpakete werden in diesem Zusammenhang häufig als Datagramme bezeichnet. Um die Dinge etwas zu vereinfachen, werden Datagramme über ein einziges Protokoll ausgetauscht, das von der verwendeten Hardware völlig unabhängig ist: IP oder Internet Protocol. In Kapitel 2 Aspekte der Netzwerkarbeit mit TCP/IP, werden wir IP und Routing detaillierter behandeln.
Der Hauptvorteil von IP besteht darin, daß es physikalisch verschiedene Netzwerke zu einem scheinbar homogenen Netzwerk zusammenfaßt. Das wird als “Internetworking” bezeichnet, und das daraus resultierende “Meta-Netzwerk” wird Internet genannt. Beachten Sie an dieser Stelle den feinen Unterschied zwischen einem Internet und dem Internet. Das Internet ist der offizielle Name eines bestimmten globalen Internets.
Natürlich benötigt IP auch ein hardwareunabhängiges Adressierungsschema. Dies wird dadurch erreicht, daß jedem Host eine eindeutige 32-Bit-Zahl zugewiesen wird, die sogenannte IP-Adresse. Dargestellt wird eine IP-Adresse üblicherweise durch vier Dezimalzahlen, eine für jeden 8-Bit-Anteil, die durch Punkte voneinander getrennt sind. Zum Beispiel könnte quark die IP-Adresse 0x954C0C04 besitzen, die Sie dann als 149.76.12.4 schreiben würden. Dieses Format wird auch Dotted Decimal Notation oder Dotted Quad Notation genannt und tritt neuerdings unter der Bezeichnung IPv4 (Internet Protocol, Version 4) in Erscheinung. Mittlerweile wird ein neuer Standard namens IPv6 entwickelt, dem ein wesentlich flexibleres Adressierungsschema zugrundeliegt und der weitere moderne Features zu bieten hat. Es wird aber nach Erscheinen dieses Buches noch mindestens ein Jahr dauern, bis IPv6 in größerem Maßstab eingesetzt wird.
Sie werden bemerkt haben, daß wir nun drei verschiedene Arten von Adressen haben: Zum einen haben wir Hostnamen wie z.B. quark, dann gibt es IP-Adressen, und zum Schluß gibt es noch Hardwareadressen wie die 6-Byte-Ethernet-Adresse. Das alles muß irgendwie so zusammenpassen, daß, wenn Sie rlogin quark eingeben, der Netzwerksoftware die IP-Adresse von quark übergeben werden kann. Liefert IP irgendwelche Daten an das physikalische Institut, muß es irgendwie herausfinden, welche Ethernet-Adresse zu welcher IP-Adresse gehört.
Mit dieser Thematik werden wir uns in Kapitel 2 Aspekte der Netzwerkarbeit mit TCP/IP, ausführlicher befassen. Im Moment reicht es, sich zu merken, daß die für das Finden einer Adresse benötigten Schritte als Auflösen des Hostnamens, oder Hostname Resolution, bezeichnet werden, mit dem Ziel der Abbildung von Hostnamen auf IP-Adressen. Address Resolution ist dagegen der Prozeß, bei dem IP-Adressen auf Hardwareadressen abgebildet werden.
Bei seriellen Leitungen gibt es einen als SLIP (Serial Line IP) bekannten “De facto”-Standard. Eine modifizierte Version von SLIP ist CSLIP, oder Compressed SLIP, bei der die IP-Header komprimiert werden, um die relativ geringe Bandbreite von seriellen Links besser auszunutzen. Ein anderes serielles Protokoll ist PPP (Point-to-Point Protocol). PPP bietet gegenüber SLIP eine ganze Reihe weiterer Features, die es etwas attraktiver machen. Der Hauptvorteil gegenüber SLIP liegt darin, daß es nicht auf den Transport von IP-Datagrammen beschränkt ist, sondern mit beliebigen Datagramm-Arten zurechtkommt.
Mit dem Übertragen von Datagrammen von einem Host zum anderen ist es nicht getan. Wenn Sie sich auf quark einloggen, wollen Sie eine zuverlässige Verbindung zwischen Ihrem rlogin-Prozeß auf erdos und dem Shell-Prozeß auf quark. Das bedeutet aber, daß die übertragenen Informationen vom Sender in Pakete aufgeteilt und vom Empfänger wieder zu einem richtigen Datenstrom zusammengesetzt werden müssen. So trivial Ihnen das auch vorkommen mag, so beinhaltet dieses Vorgehen jedoch eine Reihe komplizierter Aufgaben.
Eine sehr wichtige Tatsache, die Sie über IP wissen sollten, ist, daß es prinzipiell unzuverlässig ist, und das mit Absicht! Stellen Sie sich vor, daß zehn Leute in Ihrem Ethernet gleichzeitig anfangen, die neueste Ausgabe des Webbrowsers von Netscape vom FTP-Server der GMU herunterzuladen. Die Menge der zu übertragenden Daten könnte für das Gateway zuviel sein, weil es zu langsam oder nicht ausreichend mit Speicher bestückt ist. Wollen Sie nun ein Paket an quark übertragen, könnten die Puffer von sophus gerade voll sein, und der Rechner wäre in diesem Fall nicht in der Lage, das Paket weiterzuleiten. IP löst dieses Problem, indem es dieses Paket einfach “vergißt” — das Paket geht unwiderbringlich verloren. Die Verantwortung für die Integritätsprüfung und die Vollständigkeit der Daten liegt daher bei den kommunizierenden Hosts, die entsprechend Sorge dafür tragen müssen, im Fehlerfall Datenpakete erneut zu senden.
Dies wird von wieder einem anderen Protokoll namens TCP, oder Transmission Control Protocol, erledigt, das einen zuverlässigen Dienst auf IP aufbaut. Das Hauptmerkmal von TCP ist, daß es IP verwendet, um bei Ihnen den Eindruck zu erwecken, daß eine einfache Verbindung zwischen den beiden Prozessen auf Ihrem Host und auf der entfernten Maschine existiert. Sie müssen sich also nicht darum kümmern, wie und auf welcher Route die Daten tatsächlich reisen. Eine TCP-Verbindung arbeitet grundsätzlich wie eine Zwei-Wege-Pipe, bei der beide Prozesse schreiben und lesen können. Stellen Sie es sich wie ein einfaches Telefonat vor.
TCP identifiziert die Endpunkte einer solchen Verbindung anhand der IP-Adressen der beiden Hosts und der Nummer eines sogenannten Ports auf jedem Host. Ports können Sie sich als eine Art Zugangspunkt für Netzwerkverbindungen vorstellen. Wenn wir bei unserem Telefonbeispiel bleiben, können Sie IP-Adressen mit Vorwahlnummern (Nummern für bestimmte Städte) und Portnummern mit dem lokalen Code (Nummern der individuellen Teilnehmer) vergleichen. Ein einziger Host kann viele verschiedene Dienste bieten, die anhand ihrer Portnummern unterschieden werden.
In unserem rlogin-Beispiel öffnet die Client-Anwendung (rlogin) einen Port auf erdos und stellt eine Verbindung mit Port 513 auf quark her, den der rlogind-Server verwendet. Auf diese Weise wird eine TCP-Verbindung hergestellt. Über diese Verbindung führt rlogind zuerst die Autorisierung durch und startet (“spawnt”) eine Shell. Die Standardeingabe und -ausgabe der Shell wird in die TCP-Verbindung umgeleitet (“redirection”). Das bedeutet, daß alles, was Sie unter rlogin auf Ihrer Maschine eingeben, über den TCP-Stream geleitet und als Standardeingabe für die Shell verwendet wird.
Natürlich ist TCP nicht das einzige bei TCP/IP-Netzwerken verwendete Protokoll. Obwohl für Anwendungen wie rlogin geeignet, verbietet sich der Einsatz von TCP wegen des zu verwaltenden Overheads für manche Anwendungen von selbst. Eine solche Anwendung ist NFS, die das mit TCP verwandte UDP-Protokoll oder User Datagram Protocol) benutzt. Genau wie TCP erlaubt auch UDP einer Anwendung, mit einem Dienst auf einem entfernten Rechner über einen bestimmten Port in Kontakt zu treten. Es wird aber keine Verbindung aufgebaut, sondern es werden nur einzelne Pakete an den entsprechenden Dienst gesandt — daher der Name.
Angenommen, Sie wollen eine kleinere Datenmenge von einem Datenbankserver abfragen. Dafür werden mit TCP mindestens drei Datagramme zum Verbindungsaufbau, weitere drei Datagramme zum Senden jedes Datenpakets (in jede Richtung) und nochmals drei Datagramme zum Schließen der Verbindung benötigt. Dasselbe Resultat erreicht UDP mit nur zwei Datagrammen. UDP wird als “verbindungslos” bezeichnet, denn es benötigt keinen Verbindungsaufbau und -abbau. Wir brauchen unsere Daten nur in ein Datagramm zu packen und es zum Server zu senden. Auf dieselbe Weise schickt der Server seine Antwort zurück. Dieses Verfahren ist zwar deutlich schneller als TCP, aber nur für sehr einfache Transaktionen geeignet. UDP kommt im Gegensatz zu TCP nicht mit Datenverlusten zurecht. Es obliegt daher der Anwendung (z.B. Name-Server), darauf zu achten.
Sie können sich Ports als Zugangspunkte für Netzwerkverbindungen vorstellen. Will eine Anwendung einen Dienst anbieten, verwendet sie einen bestimmten Port und wartet auf Clients. (Dieses Warten ist auch als “Horchen” oder Listening am Port bekannt.) Möchte ein Client den Dienst nutzen, bestimmt er einen Port auf seinem lokalen Rechner und baut eine Verbindung zu dem Port des Servers auf dem entfernten Host auf. Derselbe Port kann auf vielen verschiedenen Maschinen geöffnet sein, aber auf jeder Maschine kann immer nur ein Prozeß zur Zeit einen Port öffnen.
Eine wichtige Eigenschaft von Ports ist, daß, wenn erst einmal eine Verbindung zwischen dem Client und dem Server aufgebaut wurde, sich eine weitere Kopie des Servers an den Server-Port anhängen und nach weiteren Clients horchen kann. Das ermöglicht beispielsweise, daß mehrere externe Logins gleichzeitig den Port 513 auf demselben Host verwenden. TCP ist in der Lage, die verschiedenen Verbindungen zu unterscheiden, weil sie alle von unterschiedlichen Ports oder Hosts kommen. Wenn Sie sich zum Beispiel zweimal von erdos aus in quark einloggen, verwendet der erste rlogin-Client den lokalen Port 1023 und der zweite Port 1022. Beide stellen aber eine Verbindung zu Port 513 auf quark her. Die beiden Verbindungen werden anhand der verwendeten Portnummern in erdos unterschieden.
Dieses Beispiel zeigt die Verwendung von Ports als Treffpunkt, der von Clients angelaufen wird, wenn ein bestimmter Dienst in Anspruch genommen werden soll. Damit ein Client auch die richtige Portnummer anspricht, muß über diese Nummern eine Vereinbarung zwischen den Administratoren beider Systeme getroffen werden. Bei Diensten, die so weit verbreitet sind wie rlogin, werden die Nummern zentral verwaltet. Dies wird von der IETF (Internet Engineering Task Force) erledigt, die in regelmäßigen Abständen ein RFC namens Assigned Numbers (RFC-1700) veröffentlicht. Dieses Dokument beschreibt unter anderem die Portnummern der bekannten Dienste. Linux verwendet eine Datei namens /etc/services, die Servicenamen mit Portnummern verbindet.
Anzumerken wäre noch, daß TCP und UDP zwar beide auf Ports aufbauen, diese Nummern aber nicht zu Konflikten führen. Das bedeutet, daß beispielsweise TCP-Port 513 mit UDP-Port 513 nicht identisch ist. Tatsächlich dienen diese Ports als Zugriffspunkte auf zwei verschiedene Dienste, nämlich rlogin (TCP) und rwho (UDP), um genau zu sein.
Beim UNIX-Betriebssystem ist die Software, die all diese Aufgaben und Protokolle durchführt, üblicherweise direkt in den Kernel integriert, und so ist es auch bei Linux. Die gängigste Programmierschnittstelle in der UNIX-Welt ist die Berkeley Socket Library. Der Name stammt von einer bekannten Analogie, die Ports als Steckdosen (Sockets) und den Verbindungsaufbau zu einem Port als»Einstecken« beschreibt. Die Bibliothek stellt die bind-Funktion bereit, mit der Sie einen entfernten Host, ein Transportprotokoll und einen Dienst spezifizieren können, zu dem ein Programm eine Verbindung herstellen oder an dem es horchen kann. Zu diesem Zweck stehen die Funktionen connect, listenund accept bereit. Die Socket-Bibliothek ist noch etwas allgemeiner gehalten, denn sie bietet nicht nur eine Klasse von TCP/IP-basierten Sockets (die AF_INET-Sockets), sondern auch eine Klasse (die AF_UNIX-Klasse), die Verbindungen verwaltet, die auf dem lokalen Rechner stattfinden. Einige Implementierungen können auch mit anderen Klassen wie dem XNS-Protokoll (Xerox Networking System) oder X.25 umgehen.
In Linux ist die Socket Library Teil der Standard C Library (libc). Sie unterstützt die Sockets AF_INET und AF_INET6 für TCP/IP und AF_UNIX für Unix Domain Sockets, außerdem AF_IPX für Novell-Netzwerkprotokolle, AF_X25 für das X.25-Netzwerkprotokoll, AF_ATMPVC und AF_ATMSVC für das ATM-Netzwerkprotokoll sowie AF_AX25-, AF_NETROM- und AF_ROSE-Sockets für Amateurfunk-Protokolle. Andere Protokollfamilien werden gerade entwickelt und im Laufe der Zeit hinzugefügt.
1. |
Eine Shell ist eine Kommandozeilen-Schnittstelle zum Unix-Betriebssystem. Sie ist dem DOS-Prompt in Microsoft Windows sehr ähnlich, allerdings erheblich leistungsfähiger. |
2. |
Die Ethernet-FAQ unter http://www.faqs.org/faqs/LANs/ethernet-faq/ beschäftigt sich mit dieser Angelegenheit. Eine Menge detaillierter historischer und technischer Informationen finden Sie auf der Website von Charles Spurgeon unter http://wwwhost.ots.utexas.edu/ethernet/. |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Weitere Informationen zum Linux - Wegweiser für Netzwerker
Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center
© 2001, O'Reilly Verlag