[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Netzwerk-Grundlagen

Wozu brauche ich denn eigentlich ein Netzwerk? Diese Frage kann durchaus auftreten wenn man nur einen Rechner ohne Netzwerkkarte und Modem hat. Oder man liegt mit seinem Laptop auf der grünen Wiese und der nächste Rechner ist weit. Wer nun aber denkt dieses Kapitel nicht studieren zu brauchen, der hat sich geirrt. Wir lernen die Netzwerk-Grundlagen mit Hilfe eines Rechners. Das Zauberwort heißt loopback (engl. loop = Schleife, back = zurück). Es wird dem Rechner ein Netzwerk vorgegaukelt, indem er auf sich selbst verweist. Das hat für uns folgende Vorteile:

Das OSI-Referenzmodell

Wie kann es aber sein, daß wir die Netzwerk-Funktionen ohne entsprechende Hardware realisieren können? Möglich ist dies, da die Kommunikation in Layer (engl. für Schichten) unterteilt wird. Diese Definitionen sind im OSI-Referenzmodell (Open System Interconnect) festgelegt. Die untere Schicht ist definiert die Hardware, während die obere Schicht die direkte Kommunikation mit dem Nutzer ermöglicht.

Hier ein Versuch, um dies verständlich zu machen. Wenn wir uns mit jemanden unterhalten benötigen wir ein Übertragunsmedium. Dies ist meist die Luft. Die Luft und die hörbaren Schallschwingungen gehören hier zur unteren Schicht des OSI-Modells. Natürlich müssen wir uns möglichst in einer Sprache unterhalten, die die Beteiligten verstehen. In unseren Landen ist das meist Deutsch bzw. mehr oder weniger ähnlich klingendes. Die Sprache gehört zu der oberen Schicht. Hier also ein einfaches Modell:

  Sprache: Deutsch
  Übertragung: Kehlkopf, Luftschwingungen, Ohren

Heutzutage unterhält man sich ja meist mehr mit Hilfe eines Handys (engl. für griffig, handlich - nicht für Funktelefon!) als mit dem, der am gleichen Tisch sitzt. Schauen wir uns nun das Modell an:

  Sprache: Deutsch
  Übertragung: Kehlkopf, Luftschwingungen, Kabel, Funk, Ohren

Wir haben also die untere Schicht geändert. Die obere Schicht bleibt aber davon unabhängig. Wobei aber die obere Schicht die untere voraussetzt. Es ist uns aber vollkommen egal wie die technische Realisierung der unteren Schicht erfolgt. Dies kann mit Kupfer- oder Lichtwellenleiterkabeln, mit analogen oder digitalen Vermittlungszentralen erfolgen. Als Endanwender interessiert uns das nicht. Nur wenn es preisliche Unterschiede gibt.

Natürlich können wir auch die Sprache ändern, wenn wir mehrere Sprachen sprechen.

  Sprache: Englisch
  Übertragung: Kehlkopf, Luftschwingungen, Ohren

Wenn wir der Sprache nicht so mächtig sind oder wir uns vergewissern wollen, ob der andere alles verstanden hat, müssen wir zur Sicherheit nachfragen.

  Sprache: Deutsch
  Bestätigung: Haben Sie verstanden?
  Übertragung: Kehlkopf, Luftschwingungen, Ohren

Stellen wir uns eine Versammlung vor und alle wollen sprechen. Es muß also eine Regelung geben, wer sprechen darf. Meist regelt dies der Versammlungsleiter.

  Sprache: Deutsch
  Vermittlung: Sie dürfen jetzt sprechen.
  Bestätigung: Haben Sie verstanden?
  Übertragung: Kehlkopf, Luftschwingungen, Ohren

Sicherlich ist dieses Modell theoretisch nicht ausgereift. Das ist auch nicht mein Ziel. Ich denke es ist ersichtlich, daß es nicht einfach ist ein allgemeingültiges Modell für alle Kommunikationen zu schaffen. Die ISO (International Standardisation Organisation) hat sich also viel Mühe gemacht, um das OSI-Modell zu entwickeln.

  7 Anwendungsschicht
  6 Darstellungsschicht
  5 Kommunikationssteuerungsschicht
  4 Transportschicht
  3 Vermittlungsschicht
  2 Sicherungsschicht
  1 Bitübertragungsschicht

Dieses Modell ermöglicht die Kommunikation mittels unterschiedliche Hard- und Software. Des weiteren brauchen sich die Hard- und Softwareentwickler sich nur um die für das Produkt wichtigen Schichten kümmern. Jeder muß sich natürlich an die definierten Schnittstellen zwischen den Schichten halten.

Eine Schnittstelle (engl. interface) definiert Übergaben. Eine uns bekannte Schnittstelle ist die Stromsteckdose. Wie der Strom gemacht wird, ob mit Kohle, Wasser oder Atomkraft ist uns meist (noch) egal. Dem Stromlieferanten ist dagegen gleichgültig ob wir eine Lampe oder einen Computer dort anschließen. Hauptsache die Bauform der Steckdose und die Parameter (220V, 50 Hz Wechselstrom) passen.

Es gibt also auch Software-Schnittstellen. Diese ermöglichen hier die Kommunikation zwischen den Schichten. Da jede Schicht die jeweils darunterliegende funktionierende Schicht benötigt, geben die Schichten Vollzugsmeldungen and die jeweils höhere Schicht. Prinzipiell erfolgt der Aufbau der Kommunikation von unten nach oben. Bei einem Modem kann man diesen Aufbau durch die unterschiedlichen Sounds sogar hören. Bei der Fehlersuche im Netzwerk ist die Kenntnis des Schichtenmodell Voraussetzung für die Eingrenzung des Fehlers. Wir werden die entsprechenden Befehle dazu kennenlernen.

Fangen wir in dem Modell von unten an.

Bitübertragungsschicht (Physical Layer, Schicht 1)

Hier wird die physikalische Signalübertragung definiert. Erfolgt die Signalübertragung über Koax, Glasfaserkabel etc. Das heißt z. B. bei der elektrischen Übertragung die Signal-Pegel, die Frequenz aber auch die mechanischen Abmessungen der Netzwerkstecker. Es erfolgt hier keine Fehlerüberprüfung. Realisiert wird diese Schicht z. B. durch Ethernet.

Sicherungsschicht (Data Link Layer, Schicht 2)

Diese Schicht ermöglicht die sichere Übertragung. Die Informationen werden dazu in Datenblöcke gepackt. Man spricht auch von Paketen. Da sich die Leitung meist mehrere Rechner teilen müssen, kann keine dauerhafte Verbindung zwischen zwei Computern bestehen. Deshalb sendet man die Daten in Paketen. Diese Pakete werden in dieser Schicht mit Prüfsummen versehen, um mögliche Fehler festzustellen und korrigieren zu können (Schicht 4). Dann muß die Schicht 4 veranlassen, daß das entsprechende Paket noch mal gesendet wird. Diese Pakete erhalten Angaben zum Empfänger und Absender. Somit wird eine Adressierung erst möglich.

Vermittlungsschicht (Network Layer, Schicht 3)

Es sind oft mehrere Wege bzw. Routen (engl. route) im Netz möglich. Dies setzt die Störanfälligkeit herab. Diese Schicht sorgt für eine Optimierung des Übertragungsweges zwischen den Rechnern. Hier befindet sich das Protokoll IP (Internet Protocol). Außerdem ist das ARP (Adress Resolution Protocol) und das RARP (Reverse Adree Resolution Protocol) hier angesiedelt. Die Aufgabe von ARP/RARP ist die Umsetzung der IP-Adresse (siehe unten) in die hardwarenahe Ethernetadresse. Jede Netzwerkkarte hat eine in der Welt einmalige Ethernet-Adresse. Die Ehternet-Adresse ist aber ungünstig für die direkte Adressierung, da bei einem Wechsel der Netzwerkkarte bei allen zugreifenden Rechnern entsprechende Änderungen zu machen wären. Des weiteren wären so auch keine logischen Gruppierungen der Rechner in Netzwerke möglich.

Transportschicht (Transport Layer, Schicht 4)

Die Transportschicht übernimmt die Steuerung des Datentransports zwischen Ziel- und Sende-Computern und sorgt für die korrekte Übertragung der Daten. In dieser Schicht sind die Protokolle TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) angesiedelt. TCP arbeitet verbindungsorientiert und ermöglicht durch Empfangsbestätigungen der Pakete eine sichere Übertragung der Daten. Das einfachere UDP arbeitet dagegen ohne Empfangsbestätigungen. Der Sender weis also nicht ob alles angekommen ist. Die Fehlerbehandlung wird hier von den höheren Schichten wahrgenommen.

Kommunikationssteuerungsschicht (Session Layer, Schicht 5)

Diese Schicht initiiert die eigentliche Verbindung zwischen den Kommunikationspartnern. Dabei lassen sich auch Sicherheitsaspekte, wie z. B. die Abfrage nach Paßwörtern, in dieser Schicht berücksichtigen. Weiterhin spielt sie die Rolle eines Schiedsrichters, die der einen oder anderen Station die jeweiligen Sende- und Empfangsrechte gewährt. Hier kann das Protokoll TI-RPC (Transport Independent Remote Procedure Call) angesiedelt sein.

Darstellungsschicht (Presentation Layer, Schicht 6)

In dieser Schicht wird festgelegt, daß beide Kommunikationspartner die gleiche Sprache sprechen (z. B. Zeichensatz ASCII).

Anwendungsschicht (Application Layer, Schicht 7)

Diese Schicht beinhaltet die Anwendungsprogramme, wie z. B. WWW-Browser und Email-Clients.

Das TCP/IP-Modell

So, das war ja wieder mal viel Theorie. Das OSI-Modell ist ein theoretisches Modell und wird in der Praxis nie konsequent angewendet. Die Kommunikation im Internet beruht auf TCP/IP. Diese Protokolle sind auch die Standard-Protokolle unter Unix. Andere Betriebsysteme (Window 9x/NT und MacOS) verstehen diese Protokolle auch. Dieses Modell verwendet, wie eigentlich alle konkreten Kommunikations-Protokolle, nicht das gesamte OSI-Modell. Die Schichten lassen lassen sich auch nicht genau den OSI-Schichten zuordnen.

Hier das praktischere Modell mit den entsprechenden Protokollen.

  Anwendungen  
www, ftp, rlogin, mail, nfs, telnet, nfs, dns, samba, ...
 
  Transport  
TCP              UDP
 
  Netzwerk  
IP
 
ARP              RARP
 
  Physikalisch  
loopback,   Hardware (Koax, Glasfaser, ...), Ethernettyp, ...
 

Wie man sehen kann, ist in der unteren Schicht das loopback angesiedelt. Ist dieses installiert, können die darüberliegenden Schichten ihre Arbeit aufnehmen, ohne das die Netzwerkhardware (Netzwerkkarte, Modem) installiert und konfiguriert wurde. So können wir schon alle Protokolle und Programme der oberen Schichten konfigurieren und anwenden lernen. Die Netzwerk-Hardware konfigurieren wir später zusätzlich zum loopback.

Fangen wir wieder unten an:

Das loopback-Device

loopback wird wie ein Gerät (engl. device) angesprochen. Für die oberen Schichten ist es kein Unterschied ob sie loopback, eine Netzwerkkarte ein Modem oder eine ISDN-Karte ansprechen. Um zu testen, ob das loopback-Device bereits aktiv ist, dient der Befehl ifconfig. Dieser Befehl kann nur vom Nutzer root ausgeführt werden. Aber wir sind ja bei muLinux root.

ifconfig dient zur Abfrage der Einstellungen und zur Konfiguration der Netzwerk-Interfaces. Jedes Netzwerk-Gerät kann mindestens ein Netzwerk-Interface beinhalten. Netzwerkkarten können z. B. auch mehrere Interface, sprich IP-Adressen (siehe unten), besitzen.

/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
          RX packets:32 errors:0 droped:0 overruns:0
          TX packets:32 errors:0 droped:0 overruns:0
/# _

Wenn wir diese Ausgabe sehen, ist das loopback-Device aktiv. Die weiteren Angaben schauen wir uns etwas später an. ifconfig (interface configuration) wird im Normalfall während des Systemstarts durch Startup-Skripts (muLinux: /etc/rc.4, SuSE:/etc/rc.conf) ausgeführt. Man kann dieses Kommando auch benutzen, um während des Betriebes Änderungen der Netzwerk-Konfiguration vorzunehmen. Wir fahren jetzt das Interface lo herunter (engl. down):

/# ifconfig lo down

ifconfig ohne Parameter zeigt uns was passiert ist:

/# ifconfig
/# _

Kein Device ist aktiv. Zum Aktivieren von lo geben wir folgenden Befehl ein:

/# ifconfig lo up

Der Test beweist es:

/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
          RX packets:0 errors:0 droped:0 overruns:0
          TX packets:0 errors:0 droped:0 overruns:0
/# _

Was bedeuten die angezeigten Informationen von ifconfig?

Wenn eine Netzwerkkarte konfiguriert wurde, wird zusätzlich in etwa folgendes angezeigt.

eth0      Link encap:Ethernet  HWaddr 00:00:E8:C8:5B:3F
          inet addr: 192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:859 errors:0 dropped:0 overruns:0 frame:0
          TX packets:974 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:3 Base address:0x300

Es handelt sich hier um das eth0-Device. Unix-Leute fangen meist von 0 an zu zählen. Eine mögliche zweite Netzwerkkarte wäre dann eth1. Hier ist auch die Hardware-Adresse der Netzwerkkarte zu sehen: 00:00:E8:C8:5B:3F. Diese Zahlenkombination hat die Netzwerkkarte in meinem Rechner. Weiterhin sind die IP-Adresse dieses Interface zu sehen.

Diese Angaben sind sicherlich noch etwas unverständlich. Sie gehören zu dem IP-Protokoll in der nächsten Schicht und werden weiter unten erklärt.

Hinweis:
Bei älteren muLinux-Versionen ist das loopback-Device nicht standardmäßig aktiv. Es muß mit setup -f net | Dummy network? y aktiviert werden. Bei der Linux-Distribution SuSE erfolgt dies mit yast über Administration des Systems | Konfigurationsdatei bearbeiten | START_LOOPBACK = yes.

ARP / RARP

Ich erwähne hier die Protokolle ARP (Adress Resolution Protocol) und das RARP (Reverse Adree Resolution Protocol) der Vollständigkeit halber. Über diese Protokolle werden die Hardware-Adressen zu den IP-Adressen zugeordnet. Diese Zuordnung in dem eigenen Rechner zeigt ja der Befehl ifconfig. Um diese Zuordnung für im Netzwerk angeschlossene Rechner zu erhalten, dient der Befehl arp -a. Dieser zeigt jetzt aber nichts an, da ja noch kein richtiges Netzwerk haben. So, nun aber zu den wichtigen Protokollen.

Das Internet Protocol (IP)

Das Internet Protokoll leitet die Datenpakete, die es von einem Protokoll der höheren Schichten (TCP und UDP) erhalten hat durch das Netzwerk. Dazu müssen die Rechner eindeutig adressierbar sein. Außerdem müssen die Rechner in logische Gruppen (Netzwerke) geordnet sein. Ansonsten würden alle Rechner miteinander reden und keiner würde etwas verstehen. Sicherheitsaspekte könnten so nicht berücksichtigt werden. Bevor wir uns die Adressierungsart anschauen, noch einige Eigenschaften des Internet Protocols.

Eigenschaften

Verbindungslos
Das IP-Protokoll kann nicht sicherstellen, das alle Datenpakete in der Reihenfolge in der sie von der höheren Schicht übergeben wurden bei der Gegenstelle ankommen. Im ungünstigsten Fall nimmt kein Datenpaket einer Übertragung den gleichen Weg zu seinem Ziel. Die Wege (engl. route) der Datenpakete können unterschiedlich sein.
Nicht Vertrauenswürdig
Die Lieferung der Daten an das Ziel kann nicht garantiert werden. Ein Datenpaket kann sich verspäten, in der falschen Reihenfolge ankommen oder verloren gehen. Es erfolgt keine Überprüfung und keine Information an den Sender oder Empfänger. Dies muß in einer höheren Schicht erfolgen (z.B. mit TCP).
Bestmöglicher Transport
Als bestmöglicher Transport wird dieser Übertragungsmechanismus bezeichnet, weil er von sich aus keine Datenpakete löscht. Er macht nur den Versuch die Datenpakete zu übertragen. Ist das darunterliegende Netzwerk dazu nicht in der Lage (fehlerhafte, unterbrochene oder keine Verbindung) so kommt keine Übertragung zustande.

Die Adressierung der Datenpakete

Jeder Rechner in einen Netzwerk muß also (mindestens) eine eine eindeutige Kennzeichnung besitzen. Diese muß strukturierbar sein und natürlich auch von den Rechnern verstanden werden. Computer sind ja nicht intelligent - manche Nutzer hoffen dies vergeblich. Computer verstehen nur Zahlen. Genaugenommen nur die 0 (keine Spannung) und die 1 (Spannung).
Binärzahlen
Ein Zahlensystem, das nur mit Nullen und Einsen auskommt ist das Binärsystem. Unser tägliches Zahlensystem basiert auf der Zehn. Das liegt sicherlich daran, daß wir zehn Finger zum Abzählen haben. Also bei der zehnten Ziffer müssen wir eine Stelle hinzufügen. Die Zahl Zehn ist aber nur durch 2 und 5 teilbar. Besser ist schon die 12. Diese ist durch 2, 3 und 4 teilbar. Sehr gut ist die 60. Diese ist durch 2, 3, 4, 5, 6 und 10 teilbar. Wir verwenden dieses Zahlensystem bei der Uhrzeit (Sekunden, Minuten). Vielleicht hätte uns Gott lieber mit 60 Fingern erschaffen sollen?

Zurück zu den dummen Computern. Diese haben nur die Ziffern Null und Eins. Diese zählen deshalb folgendermaßen:

0        0
1        1
2       10
3       11
4      100
5      101
6      110
7      111
8     1000
9     1001
10    1010
11    1011
12    1100
13    1101
14    1110
15    1111
16   10000

Bei der letzten Stelle folgen die Ziffern Null und Eins abwechselnd. Bei der nächsten Stelle alle zwei Schritte, dann alle vier Schritte, ...

Leider spielt die 10, die unser normales Zahlensystem bestimmt, hier keine Rolle. Alles bezieht sich hier auf die 2, also die beiden Zustände "keine Spannung" und "Spannung". Diese kleinste Speicher-Einheit aus zwei Zuständen wird Bit genannt. Acht Bit sind übrigens ein Byte.

Dieses Prinzip ist so simpel, daß es sogar Computer verstehen. Nur für uns scheint es unpraktisch zu sein. Gott hätte uns lieber mit 2, 4, 8 oder 16 Fingern erschaffen sollen. Wir hätten dann dieses System besser durchschaut. Es bleibt die große philosophische Frage: Warum hat Gott die Computer-Technik nicht vorhersehen können? Oder ist diese Technik vielleicht gar nicht so wichtig? Wir haben aber Glück gehabt, da wir mit zwei Händen erschaffen wurden. Hätten wir drei Hände, würde unser Zahlensystem auf einer ungeraden Zahl basieren.

Wie kann man diese Zahlenkolonnen aus Nullen und Einsen in unser Zahlensystem umwandeln? Sehr einfach geht das mit einem wissenschaftlichen Taschenrechner. Diese gibt es bei den großen Linux-Distributionen als kcalc. Wir können die Umrechnung aber auch im Kopf machen.

Umrechnungsbeispiel:

1011001

      1 * 20 =  1
     0  * 21 =  0
    0   * 22 =  0
   1    * 23 =  8
  1     * 24 = 16
 0      * 25 =  0
1       * 26 = 64
-----------------
               89

Die IP-Adresse
Die IP-Adresse ist 32 Bit lang und dient zur eindeutigen Identifizierung der Quell - und Zielrechner in jedem Datenpaket. Diese Folge von Einsen und Nullen ist nicht sehr übersichtlich.

   10101010101010101010101010101010

Deshalb unterteilt man dieses Monstrum in vier Teile. Die Trennung erfolgt mit Punkten.

10101010.10101010.10101010.10101010

Zur besseren Darstellung wird die IP-Adresse in der Form von vier Dezimalzahlen dargestellt.

10101010.10101010.10101010.10101010
     170.     170.     170.     170

Mögliche Werte sind jeweils von 0 bis 255.

00000000.00000000.00000000.00000000
       0.       0.       0.       0

11111111.11111111.11111111.11111111
     255.     255.     255.     255

So lassen sich theoretisch über 8 Milliarden (233-1 = 8589934591) Rechner adressieren. Tatsächlich verhindert aber die Reservierung von Bereichen für Sonderzwecke sowie die Aufteilung in die wenig flexiblen Netzklassen die Nutzung vieler IP-Adressen.

Es müssen Rechner in logische Gruppen (Netzwerke) verwaltet werden können. Der erste Teil der IP-Adresse dient daher als Netz-Adresse. Der Rest dient als Host-Adresse. Ein Host (engl. für Hausherr, Gastgeber, Haupt-Computer) ist ein Rechner. Es gibt mehrere Klassen von Netzwerken.

Klasse-A-Netz
Beim Klassen-A-Netz erhält das "linkeste" Bit den Wert 0. Die nächsten sieben Bit kennzeichnen das Netzwerk.
0nnnnnnn.xxxxxxxx.xxxxxxxx.xxxxxxxx

So ergeben sich 127 mögliche Klasse-A-Netze:

00000000.xxxxxxxx.xxxxxxxx.xxxxxxxx
       0
01111111.xxxxxxxx.xxxxxxxx.xxxxxxxx
     127
0, 10 und 127 (loopback) entfallen aber für den Internetverkehr, so daß weltweit nur 125 Klasse-A-Netze verkoppelt werden können. Jedes Netz kann bist zu 16777216 Hosts (Rechner) enthalten. Diese Klasse dürfte für den Privatgebrauch nicht geeignet sein.
Klasse-B-Netz
Das Klasse-B-Netz wird durch die Bits 10 am Anfang gekennzeichnet.
10nnnnnnn.nnnnnnnn.xxxxxxxx.xxxxxxxx

Es ergeben sich 16284 Netze mit jeweils 65.534 Hosts.

10000000.00000000.xxxxxxxx.xxxxxxxx
     128        0
10111111.11111111.xxxxxxxx.xxxxxxxx
     191      255

Auch das ist für den Privatgebrauch überdimensioniert.

Klasse-C-Netz
Das Klasse-C-Netz wird durch die Bits 110 am Anfang gekennzeichnet.
110nnnnnn.nnnnnnnn.nnnnnnnn.xxxxxxxx

Es ergeben sich 2097152 Netze mit jeweils 254 Hosts.

11000000.00000000.00000000.xxxxxxxx
     192        0        0
11011111.11111111.11111111.xxxxxxxx
     223      255      255

Dieses Netz ist durchaus für den Privatgebrauch oder für eine kleine Firma geeignet.

Klasse-D-Netz
Das Klasse-D-Netz wird durch die Bits 1110 am Anfang gekennzeichnet. Dieses Netz hat eine Spezialfunktion und wird für einen Rundspruch an bestimmte Rechnergruppen verwendet, einen sogenannten Multicast.
1110mmmm.gggggggg.gggggggg.gggggggg

Es ergeben sich 268435456 Gruppen.

11100000.gggggggg.gggggggg.gggggggg
     224
11101111.gggggggg.gggggggg.gggggggg
     239

Klasse-E-Netz
Das Klasse-E-Netz wird durch die Bits 11110 am Anfang gekennzeichnet. Es dient für zukünftige Reservierungen.
11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr

Es ergeben sich 268435456 Varianten.

11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr
     240
11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr
     247

Dynamische Adressenzuweisung
Feste IP-Adressen muß man beantragen. Da dies auch ein Kostenfaktor ist, gibt es die Möglichkeit IP-Adressen nur zeitweilig zu vergeben. Zum Beispiel sind niemals alle Nutzer eines Online-Dienstes gleichzeitig eingeloggt. Durch die dynamische Zuordnung von IP-Adressen über einen DHCP-Server (Dynamic Host Configuration Protokoll) benötigt man nur so viel Adressen, wie maximal Rechner online sind. Es ergeben sich auch andere Vorteile in der Verwaltung eines Netzwerkes. Die IP-Adressen können zentral verwaltet werden.
Teilnetze
Das Subnetting erlaubt einer Organisation, den Rechnerteil des ihr zugewiesenen Adreßraumes auf mehrere separate und logische Netzwerke zu unterteilen. Dies ermöglicht die Netzwerkmaske (engl. network mask).

Ein Beispiel einer Netzwerkmaske:

11111111.11111111.11111111.00000000
     255.     255.     255.       0

Überall wo eine Eins steht wird der Netzwerkteil der IP-Adresse maskiert. Wo Nullen sind, wird aus der IP-Adresse die Host-Adresse gefiltert.

nnnnnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
     255.     255.     255.       0

Beispielsweise wird dann diese IP-Adresse wie folgt aufgeteilt.

     192.     168.       1.       2
|_________________________||______|
        Netz-Adresse       Host-Adr.

Die Netzwerkadresse
Die Netzwerkadresse hat immer die kleinste mögliche Hosts-Adresse in dem Netzwerk. In dem Beispiel wäre das folgende Zahlenkombination:

     192.     168.       1.       0

Diese Adresse kann keinem Rechner zugeordnet werden.

Die Broadcast-Adresse
Die Broadcast-Adresse dient für Mitteilungen an alle Rechner. Diese Adresse ist die letzte Adresse des Netzwerkes. In unserem Beispiel:

     192.     168.       1.     255

Auch dieses Adresse steht für keinen Computer in diesem Netzwerk zur Verfügung.

IP-Adressen für ein lokales Netzwerk
IP-Adressen mit 192.168 am Anfang stehen nur für lokale Netzwerke zur Verfügung. Im Internet dürfen sie nicht auftauchen. Wer ein lokales Netz plant, sollte diese Adressen verwenden. So z. B.:

Netzwerk:   192.168.  1.  0
Netmask:    255.255.255.  0
Broadcast:  192.168.  1.255
erster PC:  192.168.  1.  1
zweiter PC: 192.168.  1.  2
dritter PC: 192.168.  1.  3
...
letzter PC: 192.168.  1.254

Wer ein zweites Netzwerk aufbauen will, verwende als Netzwerk-Adresse 192.168. 2. 0. Natürlich müssen alle anderen Adressen auch eine 2 im dritten Oktett erhalten. Ausgenommen ist die Netzmaske. Diese ist auch hier 255.255.255. 0.

Über Router können dann die Netzwerke untereinander bzw. an das Internet verbunden werden. Die Router sind oft auch Linux-PCs. Sie steuern welche Pakete in das jeweils andere Netz dürfen.

IP-Adresse für das loopback
Der Befehl ifconfig hat uns ja schon die IP-Adresse für das loopback-Interface gezeigt.

/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
          RX packets:32 errors:0 droped:0 overruns:0
          TX packets:32 errors:0 droped:0 overruns:0
/# _

Das ich eines Rechner wird also mit 127.0.0.1 adressiert. An Hand der Netzmaske von 255.0.0.0 sehen wir, daß für jedes ich eines Rechner ein Klasse-A-Netz reserviert wurde. Dieser Adressbereich darf auch nur intern verwendet werden.

IP-Test

Um zu testen ob die Schichten bis hier funktionieren, kann der Befehl ping verwendet werden. ping überprüft die Verbindung zu einem Rechner bzw. Interface, gibt Antwort-Laufzeit eines Päckchens an.

Dieser Befehl ist sehr wichtig bei der Erkennung und Beseitigung von Netzwerkfehlern. Dieser Befehl ist auch in dem DOS-Fenster unter Windows vorhanden. Viele Mausschieber kennen ihn nicht. Wenn das Netzwerk nicht funktioniert - dies kann bei Windows öfter auftreten - krauchen manche schon unter dem Tisch herum, um die Netzwerkkabel zu checken. Ein ping auf den anderen Rechner zeigt hier oft eine intakte Verbindung an. Also erspart man sich schon mal den Blick unter den Tisch. Der Fehler muß dann in den höheren Schichten liegen (ZugangsPaßwort, große Netzlast, ...).

Wie sieht ein ordentlicher ping aus? Als erstes pingen wir die IP-Adresse des loopback-Interfaces an.

/# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.2 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=0.1 ms
[Strg] [C]
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.129/0.173/0.289 ms
/# _

Abbrechen kann man den Befehl mit [Strg] [C]. Wie man sieht wurden Pakete empfangen. Alles ist in Ordnung. Einen anderen Rechner können wir ohne Netzwerkkarte oder Modem natürlich nicht anpingen.

Wir können aber einen Fehler simulieren, indem wir das entsprechende Interface deaktivieren. Wir wissen ja schon wie das geht.

/# ifconfig lo down
/# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
ping: sendto Network is unreachable
ping: wrote 127.0.0.1 64 chars, ret=-1
ping: sendto Network is unreachable
ping: wrote 127.0.0.1 64 chars, ret=-1
ping: sendto Network is unreachable
ping: wrote 127.0.0.1 64 chars, ret=-1
ping: sendto Network is unreachable
ping: wrote 127.0.0.1 64 chars, ret=-1
[Strg] [C]
--- 127.0.0.1 ping statistik ---
4 packets transmitted, 0 packets recived, 100% packets loss
/# _

Das sieht traurig aus. Das Netzwerk ist unerreichbar (engl. unreachable) und von den gesendeten (engl. transmitted) Paketen wurden 0 empfangen (engl. received). Ein Verlust (engl. loss) von 100 %. Wir bringen das schon in Ordnung.

/# ifconfig lo up
/# ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.2 ms
 ...

TCP bzw. UDP (Transportschicht)

Die beiden wichtigsten Protokolle die in der Transportschicht ihre Arbeit tun, sind das User Datagramm Protokoll (UDP) und das Transmission Control Protokoll. Beide Protokolle setzen auf dem IP-Protokoll auf.

Das UDP stellt ein verbindungsloses Protokoll dar. Es stellt im Gegensatz zum TCP keine Sicherheitsmechanismen zur Verfügung. Der Verlust von Datenpaketen wird den Anwendungsprogrammen nicht mitgeteilt. Ein Erkennen und Beseitigen von solchen Fehlern wird der Intelligenz der Anwendungen überlassen. Aus diesem Grund arbeiten die meisten UDP-Anwendungen nur in kleineren Netzwerken, da bei solch komplexen Netzen wie dem Internet die Wahrscheinlichkeit eines Datenverlustes entschieden größer ist. UDP wird daher seltener als TCP angewendet.

Das Gegenstück zum UDP stellt das TCP dar. TCP stellt eine duplexfähige virtuelle Verbindung her. D.h., das daß TCP-Protokoll einen verbindungsorientierten Dienst zur Verfügung stellt. Am Beginn jeder TCP-Sitzung wird eine Verbindung zwischen den Rechnern aufgebaut. Während der TCP-Sitzung kommt eine Sicherungstechnik mit dem Namen: "positive acknowledgement with transmission" (positive Bestätigung mit Quittung) zum Einsatz. Damit ist es möglich den Verlust von Datenpaketen zu erkennen, und einen Neuversand zu veranlassen. Aus diesem Grund ist das TCP verbreiteter in seinem Einsatzbereich. Gleichzeitig wird durch den erhöhten Verwaltungsaufwand der Overhead jeder Datei entsprechend größer.

Die auf einen System verfügbaren Internet-Protokolle sind übrigens in der Datei /etc/protocols aufgelistet. Diese Datei gibt es auch unter Windows NT (c:\winnt4\system32\drivers\etc\protocol) Diese Datei bedarf normalerweise keiner Änderung.

Port-Nummern

Wenn Anwendungen wie Web-Server und Web-Browser über das Netzwerk kommunizieren, müssen sie sich entweder TCP oder UDP verwenden. Meist ist das TCP. An IP-Pakete kommen sie gar nicht heran, und das aus gutem Grund. Denn IP-Pakete werden an Netzwerk-Hosts, also Rechner, versandt, nicht an Netzwerk-Anwendungen. Wenn mehrere Anwendungen auf einen Host ablaufen, fehlt deshalb die eindeutige Identifikation, also ob ein Paket an den Web-Server oder an den Email-Server gerichtet ist.

Diese Unterscheidung schaffen UDP und TCP durch die Einführung der sogenannten Ports, (engl. für Hafen, Öffnung), die durch eine 16-Bit-Zahl verkörpert werden. Genau wie IP-Pakete vor dem eigentlichen Nutzdaten einen Kopf tragen, erhalten auch UDP- und TCP-Pakete einen solchen Vorspann. Die wichtigste Information darin: der Port bei den ein Paket beim Empfänger gehen soll, und der Port, von dem es stammt. Trifft ein UDP- oder TCP-Paket ein, kann die Netzwerksoftware an der Portnummer genau erkennen, zu welcher Anwendung es gehört, und die Daten dorthin weiterleiten.

Die Portnummern zwischen 0 und 1024 sind bekannten Diensten wie ftp oder www fest zugeordnet. Wenn man eine WWW-Adresse eingibt wie http://www.linux.org, weiß der der Browser dadurch bereits, daß er sich an den Port 80 des Rechners wenden muß. Mann kann aber auch http://www.linux.org:80 schreiben.

Hier einige Ports.

  Anwendungen  
 ftp-Daten ftp telnet smtp  dns   www
  Transport
     20     21   23    25    53   80
 
TCP              UDP
  Netzwerk  
  Physikalisch  

Die Datei /etc/services listet alle Netzwerkdienste mit deren Port-Nummern auf. Diese Datei gibt es auch unter Windows NT (c:\winnt4\system32\drivers\etc\services).

/# less /etc/services
tcpmux              1/tcp                   # rfc-1078
echo                7/tcp
echo                7/udp
discard             9/tcp   sink null
discard             9/udp   sink null
systat             11/tcp   users
daytime            13/tcp
daytime            13/udp
netstat            15/tcp
qotd               17/tcp   quote
chargen            19/tcp   ttytst source
chargen            19/udp   ttytst source
ftp-data           20/tcp
ftp                21/tcp
telnet             23/tcp
smtp               25/tcp   mail
time               37/tcp   timserver
time               37/udp   timserver
rlp                39/udp   resource        # resource location
name               42/udp   nameserver
whois              43/tcp   nicname         # usually to sri-nic
domain             53/tcp
domain             53/udp
mtp                57/tcp                   # deprecated
bootps             67/udp                   # bootp server
bootpc             68/udp                   # bootp client
tftp               69/udp
rje                77/tcp
finger             79/tcp
www                80/tcp   http            # WorldWideWeb HTTP
www                80/udp                   # HyperText Transfer Protocol
link               87/tcp   ttylink
supdup             95/tcp                   # BSD supdupd(8)
hostnames         101/tcp   hostname        # usually to sri-nic
iso-tsap          102/tcp
x400              103/tcp                   # ISO Mail
x400-snd          104/tcp
csnet-ns          105/tcp
pop-2             109/tcp                   # PostOffice V.2
pop-3             110/tcp                   # PostOffice V.3
sunrpc            111/tcp
sunrpc            111/tcp   portmapper      # RPC 4.0 portmapper UDP
sunrpc            111/udp
sunrpc            111/udp   portmapper      # RPC 4.0 portmapper TCP
auth              113/tcp   authentication
sftp              115/tcp
uucp-path         117/tcp
nntp              119/tcp   usenet          # Network News Transfer
ntp               123/tcp                   # Network Time Protocol
ntp               123/udp                   # Network Time Protocol
netbios-ns        137/tcp   nbns
netbios-ns        137/udp   nbns
netbios-dgm       138/tcp   nbdgm
netbios-dgm       138/udp   nbdgm
netbios-ssn       139/tcp   nbssn
NeWS              144/tcp   news            # Window System
snmp              161/udp
snmp-trap         162/udp
exec              512/tcp                   # BSD rexecd(8)
biff              512/udp   comsat
login             513/tcp                   # BSD rlogind(8)
who               513/udp   whod            # BSD rwhod(8)
shell             514/tcp   cmd             # BSD rshd(8)
syslog            514/udp                   # BSD syslogd(8)
printer           515/tcp   spooler         # BSD lpd(8)
talk              517/udp                   # BSD talkd(8)
ntalk             518/udp                   # SunOS talkd(8)
efs               520/tcp                   # for LucasFilm
route             520/udp   router routed   # 521/udp too
timed             525/udp   timeserver
tempo             526/tcp   newdate
courier           530/tcp   rpc             # experimental
conference        531/tcp   chat
netnews           532/tcp   readnews
netwall           533/udp                   # -for emergency broadcasts
uucp              540/tcp   uucpd           # BSD uucpd(8) UUCP service
new-rwho          550/udp   new-who         # experimental
remotefs          556/tcp   rfs_server rfs  # Brunhoff remote filesystem
rmonitor          560/udp   rmonitord       # experimental
monitor           561/udp                   # experimental
pcserver          600/tcp                   # ECD Integrated PC board srvr
mount             635/udp                   # NFS Mount Service
pcnfs             640/udp                   # PC-NFS DOS Authentication
bwnfs             650/udp                   # BW-NFS DOS Authentication
listen           1025/tcp   listener RFS remote_file_sharing
nterm            1026/tcp   remote_login network_terminal
ingreslock       1524/tcp
tnet             1600/tcp                   # transputer net daemon
nfs              2049/udp                   # NFS File Service
irc              6667/tcp                   # Internet Relay Chat
dos              7000/tcp   msdos

Jedes Port öffnet den Rechner und macht ihn zugänglicher. Oft ist das erwünscht und notwendig. Ein Web-Server muß den Port 80 offen haben ansonsten kann keiner HTML-Dateien von ihm anfordern. Jedes offene Port ist aber auch ein potentielles Sicherheitsloch. Es sollten nur nur benötigte Dienste und deren Ports angeboten werden. Es sollten auch nur die entsprechenden Programme dafür installiert sein.

Hacker können aber auch Programme in das System einschleusen, die zusätzliche Ports öffnen. Ein Beispiel ist Subseven (http://subseven.slak.org). Diese Programm ermöglicht die volle Kontrolle über einen Windows9x-Rechner. Viel Spaß!

Viele Internet-Provider bietet als Service die Frontpage-Extensions an. Mit Hilfe des Programm Frontpage soll man dann angeblich sehr schnell Website erstellen können, die sich aber dafür sehr langsam laden lassen. Mit Hilfe der Frontpage-Extensions werden auf dem Webserver zusätzliche Ports geöffnet. Diese weisen erhebliche Sicherheitslücken auf. Mehr dazu unter dieser Adresse: http://www.insecure.org.

Hacker benutzen Port-Scanner, um offene Ports festzustellen. Wir können das auch.

/# nmap 127.0.01
Scanning ports (host 127.0.0.1) wait ...
localhost [127.0.0.1] 113 (auth) open
/# _

Es ist nur das Port zur Autentifizierung offen. Das System scheint also nicht angreifbar zu sein. Das können wir ändern. Wir starten den Telnet-Server (Port: 23). Damit kann sich jeder in unseren Rechner einloggen. Das geht natürlich nur wenn wir eine richtige Netzwerkverbindung haben.

/# setup -f server
Do you want to change server/daemons setup? (y/n): y
Do you want to start XWindow server at any boot? (y/n): Enter
Do you want start atd daemon running? (y/n): Enter
Do you want start RING server running? (y/n): Enter
Do you want start SERIAL server running? (y/n): Enter
Do you want start DIALIN_SERVER running? (y/n): Enter
Do you want start FAX_SERVER running? (y/n): Enter
Do you want start TELNET_SERVER running? (y/n): y
Do you want start INETD_SERVER running? (y/n): Enter
Do you want start VCM_SERVER running? (y/n): Enter

Nun scannen wir die Ports noch einmal.

/# nmap 127.0.01
Scanning ports (host 127.0.0.1) wait ...
localhost [127.0.0.1] 113 (auth) open
localhost [127.0.0.1] 23 (telnet) open
/# _

Unser Rechner ist nun offen wie ein Scheunentor. Jeder könnte sich bei einer bestehenden Netz-Verbindung einloggen, Festplatten mounten oder formatieren ...

Anwendungsprogramme

Wir gehen später noch auf Telnet und anderen Anwendungen wie Email, WWW, ... ein. Wir kommen damit zur obersten Schicht. Als ein Beispiel von möglichen Anwendungen betrachten wir kurz den Namens-Service.

Der Namens-Service

Da die Handhabung der IP-Adressen sehr umständlich ist, hat sich die Einführung eines zusätzlichen Adressverwaltungssystemes notwendig gemacht. Hierbei handelt es sich um das sogenannte Domain-Name-Konzept. Dabei werden den IP-Adressen Domain-Namen zugeordnet. Ein Name wie http://linux.org läßt sich doch weit einfacher merken als http://192.168.1.1, oder? Zur Verknüpfung zwischen IP-Adresse und Domain-Name werden Domain-Name-Server (DNS) eingesetzt. Die Herstellung dieser Verknüpfung erfolgt meist in mehreren Stufen. So wird die Adresse von XXX@AAA.BBB.de wie folgt ermittelt. Zuerst geht eine Anfrage an den ".de"-DNS. Dieser schickt eine Anfrage an den BBB-Server. Vom BBB-Server bekommt er dann im Normalfall die vollständige IP-Adresse übergeben.

/etc/hosts

Wir können noch nicht auf einen Domain-Name-Server zugreifen. In kleinen Netzen ist dieser auch oft nicht verfügbar. Um trotzdem die Namen auflösen zu können, dient die Datei /etc/hosts. Diese enthält pro Zeile eine IP-Nummer und ein oder mehrere Host-Namen.

/# less /etc/hosts

Wir sehen, daß sie die Nummer 127.0.0.1 unter anderem mit localhost auflöst. Damit können wir lokalen Rechner auch folgendermaßen anpingen:

/# ping localhost

Wenn wir ein Netzwerk einrichten, können wir jeder vergebener IP-Adresse hier mindestens einen Rechner-Namen zuordnen. Allerdings müssen wir dies auf jeden Rechner tun. Eine zentrale Verwaltung gibt es nur mit einem DNS-Server. Unter Windows gibt es übrigens auch hosts-Dateien.

Wir können unserem loopback-Interface auch noch einen anderen Namen geben.

/# vi /etc/hosts

Wir ergänzen die Zeile 127.0.0.1 localhost me

127.0.0.1 localhost me meinpc

Jetzt können wir auch meinpc anpingen.

/# ping meinpc

 
Na, das wa doch nicht sooo kompliziert. Oder?

[Zurück] [Home] [Weiter]