Open Source im professionellen Einsatz

© Liona Toussaint, Fotolia

LPIC-1-Vorbereitung - Teil 14: Grundlagen von TCP/IP

Verkehrsregelung

,

Wenn das Netzwerk nicht funktioniert, ist solides Grundlagenwissen gefragt. Dieser Teil der LPI-Reihe beschäftigt sich mit dem TCP/IP-Stack, den IP-Adressen und ihrer Konfiguration.

Viele Geräte im Internet müssen eindeutig erreichbar sein. Das Ansprechen erfolgt auf technischer Ebene über IP-Adressen, einer 32 Bit langen Zahl, die zur besseren Lesbarkeit aus vier dezimale Zahlen von 0 bis 255 besteht. In der Sprache des Internets ist eine solche Zahl ein Oktett. Vier Oktette, getrennt durch Punkte, ergeben die Dotted-Quad-Notation. Ein Beispiel ist die IP-Adresse 192.0.2.67 aus dem per RFC für solche Zwecke vorgesehenen TEST-NET.

Die Angabe einer IP-Adresse reicht einem Computer bereits aus, um einen Kommunikationspartner ausfindig zu machen. Mit den IP-Namen des Domain Name System (DNS) wie zum Beispiel »www.linux-magazin.de« hat das übrigens nur wenig zu tun.

Die zentrale Registratur ICANN [1] hat ursprünglich monopolartig alle IP-Adressen vergeben, damit waren sie eindeutig und einmalig. Aus praktischen Gründen gibt es heute für fast jeden Kontinent eine eigne Regional Internet Registry (RIR). So vergibt das Réseaux IP Européens Network Coordination Centre (RIPE NCC) die Adressen für Europa und den Mittleren Osten, in Nordamerika ist die American Registry for Internet Numbers (ARIN) zuständig, weitere RIRs kümmern sich um den Rest der Welt [2]. In der Praxis verteilen sie Kontingente von Adressen an Internet Service Provider, die wiederum einzelnen Kunden ein Stück vom Kuchen abgeben.

Adressen und Netze

Um die Vielzahl der Adressen zu ordnen, sind die IP-Adressen hierarchisch in Netze und Unternetze angeordnet. Können zwei Geräte unmittelbar durch ein direktes Kabel, mit Hilfe eines Switch oder eines Hub, aber ohne zwischengeschalteten Router miteinander kommunizieren, so liegen sie in einem Segment. Damit nun ein sendendes Gerät herausfindet, ob der Kommunikationspartner im selben oder einem anderen Subnetz liegt, sind die 32 Bits jeder IP-Adresse in zwei Teile aufgeteilt: Der vordere Teil gibt das Segment an, der hintere Teil nummeriert die Geräte in diesem Subnetz durch.

Subnetze können unterschiedlich viele Geräte umfassen, daher muss zu jeder IP-Adresse vermerkt sein, wie groß ihr zugehöriges Segment ist. Praktisch legt dies die Netzmaske fest, die jenen Teil der IP-Adresse maskiert, der zum Subnetz gehört. Weil die Subnetzangaben immer im vorderen Teil der Adresse liegen, reicht es, die Anzahl der Bits zu notieren, die die Maske ausmachen.

Ein Beispiel verdeutlicht dies: Die IP-Adresse 192.0.2.67 sei Teil eines Segments, das aus 256 Adressen besteht (192.0.2.0 bis 192.0.2.255). 256 Adressen darzustellen, benötigt 8 Bits. Damit bleiben bei 32 Bits insgesamt noch 24 Bits für die Netzadresse übrig. Aus diesem Grunde würde die Adresse auch als 192.0.2.67/24 bezeichnet. Dies ist die heute übliche CIDR-Schreibweise (Classless Interdomain Routing). Zur Zeit der Altvorderen war die Größe der Netzmaske auf wenige Werte beschränkt, siehe Kasten "Die Legende von den Netzwerk-Klassen".

Die Legende von den
Netzwerk-Klassen

In der Kreidezeit des Internets gab es auch schon IP-Adressen und IP-Netze, allerdings waren die ersten 8 Bits für die Netze fest vergeben. Gegen 1981 kamen erste Zweifel auf, ob ein Internet mit maximal 256 Netzen eine Zukunft habe, und RFC 791 [6] wurde veröffentlicht. Das Dokument schlug die Aufteilung in A-, B- und C-Class-Netze mit Netzmasken von jeweils 8, 16 und 24 Bits vor.

Damit gab es zwar gut 2 Millionen C-Class-Netze, aber weltweit nur gut 16 000 B-Class- und nur 128 A-Class-Netze. Besonders die B-Classes gingen Ende der 1980er Jahre gefährlich zur Neige, sodass nach Auswegen gesucht wurde. Die Internet-Gemeinde hat 1992 RFC 1338 und ein Jahr später RFC 1519 auf den Weg gebracht, um das Classless Inter-Domain Routing (CIDR) einzuführen. Heute ist RFC 4632 [8] der dafür gültige Standard im Range einer Best Current Practice.

Auch wenn RFC 791 formal nie abgeschafft (superseded) wurde, spielt die Drei-Klassen-Gesellschaft in der Internet-Realität kaum noch eine Rolle. Umso hartnäckiger hält sich die Legende, dass beispielsweise ein 24-Bit-Subnetz ein Class-C-Netz sei, was aber faktisch überholt ist. Heute braucht der Netzwerk-Bereich einer IP-Adresse in keine Klasse zu passen.

Die Entscheidung, wie groß die Netzmaske innerhalb eines zugewiesenen Adressenblocks ist, liegt ganz im Ermessen des zuständigen Netzverantwortlichen. Weist er der Adresse 192.0.2.67 eine Netzmaske aus 28 Bits zu, gehören zum gleichen Segment nur noch die 24 = 16 Adressen von 192.0.2.64 bis 192.0.2.79. Die Netzmaske lässt sich wie eine IP-Adresse als 32-Bit-Zahl darstellen: Bits des Netzanteils sind alle auf 1 gesetzt, jene des Hostanteils auf 0. Dabei ergibt sich für ein /24-Netz die häufige Maske 255.255.255.0, bei einem /28-Netz hingegen 255.255.255.240. Diese Schreibweise für Masken ist notwendig, wenn der Admin das klassische Kommando »ifconfig« zur Konfiguration einer IP-Adresse verwendet.

LPI-Aufgabengruppen

Das Linux Professional Institute gliedert die Prüfungsfragen in Aufgabengruppen. Dieser Artikel erklärt Themen aus den Abschnitten:

  • 1.112.1: Grundlagen zu TCP/IP
  • 1.112.3: Netzkonfiguration

(Ein Objective 1.112.2 existiert nicht.)

Alle herhören: Broadcasts

Die Netzmaske legt also die Anzahl der adressierbaren IP-Adressen eines Netzwerks fest. Im obigen Beispiel stehen 8 Bits für die Hostadressen zu Verfügung, womit 256 Adressen möglich sind. Eine besondere Bedeutung kommt den Adressen zu, bei denen alle Host-Bits auf 0 gesetzt sind: Sie kennzeichnen Segmente in ihrer Gesamtheit und werden beim Routing zwischen einzelnen Subnetzen verwendet. Stehen alle Host-Bits auf 1, handelt es sich um die Rundruf-Adresse (Broadcast): So erreichen Pakete alle aktiven Geräte im Segment zugleich. Allerdings antworten heute aus Sicherheitsgründen nur wenige Systeme auf diese Anfragen. Kein Host darf die Netz- oder Broadcast-Adresse eines Subnetzes für sein eigenes Interface verwenden.

Ein verbreiteter Irrtum ist, dass Netzadressen stets durch eine Null im letzten Oktett oder Broadcast-Adressen durch eine 255 repräsentiert seien. Dies gilt nämlich nur bei den durch 8 teilbaren Subnetzen /8, /16 und /24, die allerdings häufig anzutreffen sind. Beispiele zur Berechnung von Adressen stehen im Kasten "Adressenarithmetik".

Adressenarithmetik

Auf den ersten Blick erscheint das Rechnen mit IP-Adressen und Netzmasken verwirrend. Darum ist es hilfreich, sich die Oktette als Binärzahlen vorzustellen. Die einzelnen Berechnungsschritte sind dann einfache, bitweise Logikoperationen. Die Berechnung der wichtigsten Angaben benötigt nur die IP-Adresse und die Länge der Netzmaske.

Netzmaske und Netzadresse berechnen

Wer die Länge der Netzmaske durch 8 teilt (mit Rest), erhält die Anzahl der führenden 255er-Blöcke, die jeweils acht gesetzte Bits darstellen. Für den Rest muss er nun die Maske konstruieren: Ein Rest von 1 entspricht 128, der Rest von 2 entspricht 128 + 64 und so weiter. Sind durch dieses Verfahren noch Oktette frei, werden sie nach rechts durch 0 aufgefüllt.

Beispiel: Eine Netzmaske hat 19 Bits: 19 geteilt durch 8 ergibt 2 mit Rest 3. Die Netzmaske beginnt also mit 255.255. Die Summe der ersten höchsten drei Zweierpotenzen in einem Oktett ist 128 + 64 + 32 = 224, die Netzmaske lautet also 255.255.224 und wird noch mit einer Null aufgefüllt, weil keine weiteren Bits zu verteilen sind: 255.255.224.0.

Eine IP-Adresse mit der Netzmaske logisch UND-verknüpft ergibt die Netzadresse. Sie ist immer die erste Adresse in ihrem Adressblock. Beispiel: Zu berechnen sei die Netzadresse der IP-Adresse 10.123.45.67/19. Jedes Oktett lässt sich einzeln miteinander UND-verknüpfen:

10 UND 255 = 10

123 UND 255 = 123
 45 UND 224 =  32
 67 UND   0 =   0

Die vier Teilergebnisse zusammengeführt ergeben die gewünschte Netzadresse 10.123.32.0/19 in CIDR-Schreibweise.

Broadcast-Adresse berechnen

Das Bestimmen der Broadcast-Adresse erfordert es, zusätzlich zu den Bits der IP-Adresse alle Bits des Hostanteils der Netzmaske zu setzen. Die folgende Rechnung negiert erst die Netzmaske (dreht jedes Bit um) und ODER-verknüpft sie dann mit der IP-Adresse:

NEG 255 ODER  10 =   0 ODER  10 =  10
NEG 255 ODER 123 =   0 ODER 123 = 123
NEG 224 ODER  45 =  31 ODER  45 =  63
NEG   0 ODER  67 = 255 ODER  67 = 255

Damit ergibt sich 10.123.63.255/19 für die Broadcast-Adresse, die alle Geräte erreicht.

Das kleinste mögliche Segment hat eine Netzmaske, die aus 30 Bits besteht: Die restlichen zwei Host-Bits können genau vier Adressen bilden. Davon ist eine die Netzadresse und eine die Rundruf-Adresse. So bleibt im Mini-Netz noch Platz für genau zwei Partner. Häufig benutzen Admins solche Segmente, um zwei größere Netze zu verbinden, und nennen sie daher Koppelnetze.

Das größte theoretisch vorkommende Netz besitzt nur eine 8-Bit-Subnetzmaske und kann damit gigantische 224-2 = 16 777 214 Geräte verwalten. Schade, dass es kaum einen Switch gibt, der in der Lage wäre, solche Mengen an Geräten auf einmal zu verwalten.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook