SelfLinux Linux im Netzwerk TCP/IP Abschnitt 2 | SelfLinux-0.13.0

| TCP/IP | Autor Formatierung GPL

#### 2 Adressierung im IP

Jeder Host im Netzwerk erhält eine eindeutige Adresse, die sogenannte IP-Adresse oder IP-Nummer. Das 'IP' in der Bezeichnung deutet darauf hin, daß hierfür das Internet Protocol zuständig ist.

In der aktuellen Version von TCP/IP wird jedem Rechner eine 32 Bit lange Adresse zugeordnet, die der besseren Lesbarkeit halber in der Form xxx.xxx.xxx.xxx geschrieben wird. Hierbei werden die einzelnen Bytes durch Punkte getrennt. So sind IP-Adressen von 0.0.0.0 bis 255.255.255.255 möglich. Für die Verwendung durch Hosts nicht alle Nummern nutzbar, einige z.B. sind für die Netzadresse oder sogenannte Broadcasts reserviert. Mehr dazu weiter unten.

Eine typische IP-Adresse könnte nun lauten 141.89.64.1 (ist in diesem Fall der Nameserver der Universität Potsdam). In Binärschreibweise wäre dies 10001101 1011001 1000000 00000001 Eine IP-Adresse gliedert sich nun in einen vorderen und einen hinteren Teil. Der vordere Teil stellt die Netzadresse dar, der hintere Teil die Host-Adresse. Die IP-Adresse bezeichnet das Netz, in dem sich ein Rechner befindet und seine Nummer in diesem Netz. Die Trennung dieser beiden Teile kann prinzipiell an jedem Bit der Adresse erfolgen. Dazu benötigt man aber noch die sogenannte Netzmaske. Diese Netzmaske ist genauso lang wie die IP-Adresse und wird bis zu einem bestimmten Bit mit Einsen gefüllt. Der Rest wird auf Null gesetzt. Alle Bits in der IP-Adresse, die in der Netzmaske belegt sind, zählen dann zum Netzanteil, der Rest zum Hostanteil.

Lassen wir der Theorie einige Beispiel folgen und zwar in der nächsten Abbildung:

Beispiel

    [1]		Binär					Dezimal
    IP-Adresse	10001101 1011001 01000000 00000001	141.89.64.1
    Netzmaske	11111111 1111111 00000000 00000000      255.255.0.0
                    ---------------- ----------------       ------- ---
    		    Netz-ID	    Host-ID	 	  Netz	Host

    [2]		Binär					Dezimal
    IP-Adresse	00111010 00010001 10000011 00101100	58.17.131.43
    Netzmaske	11111111 11111111 11111111 00000000     255.255.255.0
                    ------------------------ --------       ------- ---
    		    Netz-ID	         Host-ID	 Netz	Host

    [3]		Binär					Dezimal
    IP-Adresse	01111011 00000101 01100100 00000010	123.5.100.2
    Netzmaske	11111111 11111111 11110000 00000000     255.255.240.0
                    ------------------------ --------       ------- ---
    		    Netz-ID	         Host-ID	 Netz	Host

Im ersten Beispiel verwenden wir als Netmask 255.255.0.0, d.h. die ersten 16 Bit der Adresse sind dem Netzteil vorbehalten, hier 141.89, die restlichen 16 Bit werden zur Adressierung des Hosts in diesem Netz verwendet, dazu bleiben 254*254, also gut 64.516 Möglichkeiten - praktisch können also über 64.000 Hosts in diesem Netz adressiert werden. Die Adresse 141.89.0.0 ist für das Netzwerk selbst reserviert, die Adresse 141.89.255.255 bezeichnet die sogenannte Broadcast-Adresse: Pakete an diese Adresse werden an alle Stationen im Netz verschickt.

Doch fahren wir mit unseren Beispielen fort. Beispiel Nummer zwei beschreibt den Host 58.17.131.43 mit der Netmask 255.255.255.0. Hier sind also 24 Bit für den Netz- und 8 Bit für den Hostanteil reserviert. Theoretisch kann es in diesem Netz maximal 254 Hosts geben. Adresse dieses Netzwerk ist 58.17.131.0, Broadcasts gehen an 58.17.131.255.

Das dritte Beispiel zeigt nun, dass man sich bei der Netzmaske keinesfalls auf ganze Bytes beschränken muß. Bei dieser Adresse macht der Netzanteil 20 Bit aus, der Hostanteil 12 Bit. Die Netzadresse ist hier 123.5.6.0 (bis zum 20. Bit), Broadcasts gehen an 123.5.112.255 (Alle Bits ab dem 21. sind auf 1 gesetzt).

Die verschiedenen Netzmasken lassen sich in verschiedene Klassen unterteilen: Class-A-Netz haben die Netmask 255.0.0.0, Class-B-Netze die Netmask 255.255.0.0 und Class-C-Netze die Netmask 255.255.255.0. Netze mit anderen Netmasks bezeichnet man als Subnetze.

Man sieht, dass eine Netzmaske mit "1" beginnen und mit "0" aufhören muß. Eine Netzmaske "11111111000000011111110000000" macht keinen Sinn, da der Netzwerkanteil hier nicht geschlossen auftauchen würde; es gibt ja zwei Grenzen zwischen Netz- und Hostanteil! Eigentlich beschreibt die Netzmaske also eine Grenze an einer bestimmten Bitposition. Diese Grenze kann man auch einfach als eine Zahl angeben. Dazu zählt man einfach die "1". Aus "1111111111111111111110000000" bzw. 255.255.255.0 wird dann kurz "24" und aus 255.255.0.0 wird dann "16". Üblich ist folgende Notation: man schreibt die kurze Netzmaske durch einen Schrägstrich getrennt hinter eine Netzwerkadresse. Aus 141.89.0.0, Netzmaske 255.255.0.0 wird dann kurz 141.89.0.0/16 oder noch kürzer 141.89/16 (durch die Netzmaske ist ja klar, daß hinter der Netzwerkadresse nur noch "0" kommen können).

Heute verwendet man jedoch weitgehend CIDR, Classless Internet Domain Routing. Das heißt, man ist nicht mehr auf Netzklassen A, B und C festgelegt, sondern kann auch kleinere Netze verwenden. Dadurch werden Netzmasken wie zum Beispiel 255.255.255.252, kurz 30 verwendet, die ein Netz mit lediglich 4 IP Adressen bezeichnet, das kleinste sinnvolle Netz (2 IP ist wenig sinnvoll, da ja die erste [kleinste] Adresse das Netzwerk, und die größte für Broadcast reserviert ist, so dass hier keine [0] Adresse nutzbar wäre). Bei Standleitungen bekommt man in Deutschland häufig 8 IP Adressen, Netzmaske ist demzufolge 255.255.255.248, kurz 29. Von diesen sind dann 6 nutzbar.

Das Kopfrechnen ist hier unübersichtlich. Bei der Netzmaske in Langform erhält man die Zahl der IP Adressen, in dem man schaut, wieviel zwischen Netzmaske und 255.255.255.255+1 übrig bleibt. Das + 1 kommt daher, dass die letzte Position selbst auch Teil des Netzes ist: 256-252=4, 256-248=8. Mit der kurzen Netzmaske ist das etwas anders. Man subtrahiert diese zunächst von 32 und erhält die Anzahl der Bits für den Hostanteil (also die möglichen Adressen): 32-30=2, 32-29=3. Um von Bits auf mögliche Werte zu kommen, muß man nun (wie immer) "zwei hoch Bit" rechnen, also 2^2=4, 2^3=8. Man kommt hier natürlich auf das gleiche Ergebnis, wie wenn man die Langform verwendet.

Bei der Kurzform kann man übrigens keine ungültigen Netzmasken angeben, bei der Langform hingegen schon. Man überlege sich die Netzmaske 255.255.255.127. Vielleicht ist das auf den ersten Blick nicht erkennbar, aber binär ist das ja "1111111 111111 111111 0111111". Man sieht eine "0" in der "Mitte". Diese Netzmaske kann man gar nicht in Kurzform schreiben. Genauer gesagt, ist diese Angabe überhaupt keine Netzmaske.

Natürlich kann man sich IP-Adressen nicht einfach ausdenken, denn die Netzwerke, mit denen man Daten austauschen möchte, müssen diese Adresse ja erreichen können, also den Weg zu dieser Adresse finden. Wählt man sich über einen Internet Provider in das Internet ein, so erhält man von diesem beispielsweise eine Adresse zugewiesen (man bekommt meistens bei jeder Anwahl eine neue und nennt diese Adressen daher "dynamisch"). Mietet man sich eine Standleitung, erhält man in der Regel gleich mehrere IP-Adressen. Diese Adressen "gehören" meistens weiterhin dem Provider, jedoch wird der Endkunde meistens in einer öffentlich zugänglichen Datenbank eingetragen.

#### 2.1 Adressen für private Netze

Nun wollen wir mit unserem Netz aber gar nicht fest an das Internet angebunden sein. Dann steht uns die Wahl der Netzadressen im Grunde genommen frei, dies kann aber später zu Problemen führen. Stellen wir uns vor, wir möchten ein Netzwerk mit der Adresse 141.89.0.0 aufbauen. Soweit kein Problem, unsere Rechner bekommen IP-Nummern von 141.89.1.1 bis 141.90.254.254 mit Netzmaske 255.255.0.0 und alles sollte funktionieren. Wenn dieses Netzwerk allerdings irgendwann in das Internet eingebunden wird kommt es zwangsläufig zu Konflikten mit Hosts irgendwo da draußen.

Abhilfe schaffen hier die sogenannten privaten Adressräume. Hierbei handelt es sich um Bereiche von IP-Adressen die im Internet nicht geroutet werden (dürfen) und für LANs frei verwendet werden können. Diese werden in RFC 1918 definiert. Im einzelnen sind dies:

- 1 Class-A-Netz 10.0.0.0 ... 10.255.255.255
- 16 Class-B-Netze 172.16.0.0 ... 172.31.255.255
- 256 Class-C-Netze 192.168.0.0 ... 192.168.255.255

Da heute "classless" geroutet wird (CIDR), notiert man diese meistens:

- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16

Letzteres zum Beispiel kann man sich dann in 256 C-Netze oder in 512 Netze mit je 128 Adressen oder auch in verschiedene unterschiedlich große aufteilen.