TCP/IP und Routing Grundwissen

Aus Linupedia.org
Version vom 25. Oktober 2006, 14:18 Uhr von TomcatMJ (Diskussion | Beiträge) (Subneting: Typokorrektur)
Wechseln zu: Navigation, Suche

Autor: Martin Breidenbach

Eine TCP/IP-Adresse besteht aus vier Bytes (0..255) und sieht zum Beispiel so aus:

192.168.0.17

d.h. die uebliche Schreibweise ist dass man die vier Bytes durch Punkte voneinander trennt.

Ein Geraet erhaelt seine TCP/IP-Adresse entweder dadurch dass sie manuell eingetragen wird, oder sie wird zentral von einem Server vergeben, der die Protokolle BOOTP oder DHCP unterstuetzt bzw. entsprechende Dienste installiert hat.

Zwei Geraete die TCP/IP verwenden koennen nun entweder direkt miteinander kommunizieren (weil sie im Netzwerk direkt miteinander verkabelt sind *UND* im selben IP-Subnetz liegen) oder muessen ueber einen Router (in diesem Zusammenhang auch oft Gateway genannt) miteinander kommunizieren. Dazu unterteilt man die Adressbereiche in Subnetze. Zwei Geraete die im selben Subnetz liegen koennen miteinander direkt kommunizieren. Liegen sie nicht im selben Subnetz dann muessen die Datenpakete ueber ein Gateway gesendet werden.

Die Entscheidung, ob zwei TCP/IP-Adressen im selben Subnetz liegen, wird ueber die Subnetzmaske gefaellt. Beide Adressen werden durch ein logisches AND mit der Subnetzmaske verknuepft. Kommt dabei dasselbe heraus liegen sie im selben Subnetz.

Bei der am haeufigsten verwendeten Subnetzmaske 255.255.255.0 bedeutet das: wenn die ersten drei Bytes von zwei IP-Adressen identisch sind dann liegen sie im selben Subnetz.

Wenn man nun einen Rechner mit mehreren Netzwerkkarten hat (und sei das 'normale' Netzwerkkarte und WLAN) so sollte man die auch fuer unterschiedliche Subnetze konfigurieren sonst kommt das Routing durcheinander.

Nun will ich auf die Funktion der Subnetzmasken etwas detaillierter eingehen.

Kurzer Exkurs ins binaere Rechnen

Die AND-Operation funktioniert so:

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Die Byte-Werte der TCP/IP-Adresse werden wie folgt in Binaerwerte umgerechnet:

Jede Stelle einer Binaerzahl steht fuer eine Zweierpotenz (so wie wir ueblicherweise Zehnerpotenzen im Dezimalsystem verwenden):

1234 dezimal = 1*1000 + 2*100 + 3*10 + 4*1 = 1*10^3 + 2*10^2 + 3*10^1 + 4*10^0

1010 binaer = 1*8 + 0*4 + 1*2 + 0*1 = 1*2^3 + 0*2^2 + 1*2^0 + 0*2^0

147 dezimal = 1*128 + 0*64 + 0*32 + 1*16 + 0*8 + 0*4 + 1*2 + 1*1 =10010011 binaer


Subnetzmasken

Hier ein Link mit einer Grafik die die verschiednen Subnetzmasken veranschaulicht:

http://shorewall.net/pub/shorewall/contrib/IPSubNetMask.html


Subnetze, Beispiel 1

Adresse 1 : 192.168.000.001
Adresse 2 : 192.168.000.002
Adresse 3 : 192.168.001.001
Subnetzmaske : 255.255.255.000

Adresse 1 : 192.168.000.001 AND 255.255.255.000 = 192.168.000.000
Adresse 2 : 192.168.000.002 AND 255.255.255.000 = 192.168.000.000
Adresse 3 : 192.168.001.001 AND 255.255.255.000 = 192.168.001.000

Die ersten beiden Adressen liegen also im selben Subnetz.

Subnetze, Beispiel 2

Adresse 1 : 192.168.000.001
Adresse 2 : 192.168.000.002
Adresse 3 : 192.168.000.033
Adresse 4 : 192.168.000.034
Subnetzmaske : 255.255.255.224

Adresse 1 : 192.168.000.001 AND 255.255.255.224 = 192.168.000.000
Adresse 2 : 192.168.000.002 AND 255.255.255.224 = 192.168.000.000
Adresse 3 : 192.168.000.033 AND 255.255.255.224 = 192.168.000.032
Adresse 4 : 192.168.000.034 AND 255.255.255.224 = 192.168.000.032

Die ersten beiden Adressen und die letzten beiden liegen jeweils im selben Subnetz.

Die Subnetzmaske legt also die Groesse eines Subnetzes fest (und umgekehrt). Die erste und die letzte Adresse eines Subnetzes koennen nicht fuer Geraete verwendet werden, da sie fuer die Adressierung des Subnetzes selbst und Broadcasts verwendet werden (Broadcasts sind Pakete die 'an Alle' gesendet werden). Bei einer Subnetzmaske von Maske 255.255.255.0 waeren dies die .0 und .255, es stehen also 256-2=254 Adressen zur Verfuegung. Im Beispiel 2 (255.255.255.224) sind das 32-2=30 Adressen.

Schreibweise 192.168.0.1/24 fuer Subnetzmasken

Eine unter Unix/Linux beliebte Schreibweise fuer IP-Adressen und Subnetzmasken besteht darin dass man einfach die Anzahl der Einser der Subnetzmaske hinter der Adresse angibt: 192.168.1.1/24 ist also 192.168.1.1 mit einer Subnetzmaske aus 24 Einsen, also 255.255.255.0

Subneting und Superneting

Subneting

Unter Subneting versteht man die Aufteilung eines gegebenen IP-Netzwerkbereichs in kleinere Segmente. Dies kann notwendig werden aufgrund der nachträglichen räumlichen Aufteilung eines vorhandenen Netzwerks durch z.B. Abteilungsumzug oder durch spätere Umstrukturierung der physikalischen Gegebenheiten innerhalb des Netzwerks, z.B. aufgrund nachträglicher Erweiterung des Netzwerks um per Lichtwellenleiter oder WLAN angebundene Stationen ohne Erweiterung des bereits zur Verfügung stehenden Adressraums. Dazu wird normalerweise dann ein Teil des Hostanteils des Adressraums dem Netzwerkanteil zugeordnet, wodurch sich die Subnetmaske ändert und natürlich auch weitere Netzwerk und Broadcastadressen in Erscheinung treten die so vorher noch nicht vorhanden waren.

So werden beispielsweise im Beispielnetzwerk 192.168.3.0 aus der Subnetmaske 255.255.255.0 mit der Netzwerkadresse 192.168.3.0 und der Broadcastadresse 192.168.3.155 zwei Teilnetzwerke mit den Netzwerkadressen 192.168.3.0 (Teilnetzwerk A) und 192.168.3.128 (Teilnetzwerk B) sowie den Broadcastadressen 192.168.3.127 (Teilnetzwerk A) und 192.168.3.255 (Teilnetzwerk B) mit der jeweiligen Subnetzmaske 255.255.255.128.

Subneting wird realisiert durch bitweise Erweiterung "nach rechts", was klar wird, sobald man die binäre Schreibweisen der Subnetzmaske betrachtet:


Subnetzmaskenbeispiele
Dezimale Langdarstellung Binärdarstellung Kurzschreibweise
255.255.255.0 11111111 11111111 11111111 00000000 /24
255.255.255.127 11111111 11111111 11111111 10000000 /25
255.255.255.192 11111111 11111111 11111111 11000000 /26
255.255.255.224 11111111 11111111 11111111 11100000 /27
255.255.255.240 11111111 11111111 11111111 11110000 /28
255.255.255.248 11111111 11111111 11111111 11111000 /29
255.255.255.252 11111111 11111111 11111111 11111100 /30
255.255.255.254 11111111 11111111 11111111 11111110 /31


Da im Beispiel in der letzten Tabellenzeile die ersten 31 der 32 Bit der IPv4 Adresse als Netzwerkanteil definiert wurden, ist dieses Beispiel real nicht für wirkliche Netzwerke zu gebrauchen, da nur noch Platz für die Netzwerkadresse und die Boradcastadresse bleiben, nicht jedoch für eine gültige Hostadresse in diesem "Netzwerksegment". De Facto gibt es diese Netzwerkmaske jedoch auch in der Anwendung, nämlich bei einigen Punkt-zu-Punkt Protokollanwendungen wie manchen DSL-Anbindungsarten oder Modemnutzungen, nicht jedoch zur direkten Kommunikation zwischen Rechnern(=Hosts).

Superneting

Das Superneting hingegen dient der Erweiterung von Netzwerkadressräumen bzw. dem Zusammenfassen von Netzwerksegmenten. Dabei wird die Subnetzmaske "nach links" erweitert.


Subnetzmaskenbeispiele
Dezimale Langdarstellung Binärdarstellung Kurzschreibweise
255.255.255.0 11111111 11111111 11111111 00000000 /24
255.255.254.0 11111111 11111111 11111110 00000000 /23
255.255.252.0 11111111 11111111 11111100 00000000 /22
255.255.248.0 11111111 11111111 11111000 00000000 /21
255.255.240.0 11111111 11111111 11110000 00000000 /20
255.255.224.0 11111111 11111111 11100000 00000000 /19
255.255.192.0 11111111 11111111 11000000 00000000 /18
255.255.128.0 11111111 11111111 10000000 00000000 /17

Das Standardgateway

Wenn ein Geraet ein anderes ansprechen will das in einem anderen Subnetz liegt dann schickt es das TCP/IP-Datenpaket zu einem Gateway (im OSI-Schichtenmodell ist das ein Router). Dieses Gateway wurde so konfiguriert dass es selber weiss wie es das Datenpaket weiterzuleiten hat so dass es am Empfaenger ankommt.

Meistens gibt es innerhalb eines Subnetzes ein Standardgateway (oder auch default gateway).

Beispiel:

Vorhanden ist ein Server mit zwei Netzwerkkarten (A und B). Ausserdem gibt es einen ISDN-Router der eine Verbindung zu einem Internet-Zugangsprovider darstellt. Mit Karte A sind 10 Rechner verbunden, mit Karte B 27 Rechner und der ISDN-Router.

Segment A umfasst 11 Adressen (10+Server), Segment B 29 (27+Router+Server). Die Groesse der Subnetze sollte also 32 oder mehr sein. Angenommen der Internet-Provider weist einen Adressbereich von 64 Adressen zu, beginnend mit 195.130.37.0. Dann kann eine moegliche Konfiguration so aussehen:

- Der Adressbereich wird in zwei Haelften geteilt (.0-.31 und .32-.63) - Die Arbeitsplatz-PCs schicken Pakete deren Empfaenger nicht in ihrem Subnetz liegt zum Server - Der Server 'weiss' wie er die beiden Subnetze anzusprechen hat. Alles unbekannte soll er zum ISDN-Router schicken. - Dem ISDN-Router muss mitgeteilt werden dass er Pakete mit Empfaenger im Subnetz 'A' zum Server schickt der sie dann weiterleitet. Dies geschieht durch den Eintag einer 'Statischen Route'. Wie dies genau geschieht haengt von der Software des ISDN-Routers ab, jedenfalls wird ihm mitgeteilt dass Pakete an das Subnetz 195.130.037.000 mit der Maske 255.255.255.224 an die Adresse 195.130.037.033 (Karte B im Server) weitergeleitet werden muessen.

Karte A im Server: 195.130.037.001, Subnetzmaske 255.255.255.224, default gateway leer Karte B im Server: 195.130.037.033, Subnetzmaske 255.255.255.224, default gateway 195.130.037.034 (der ISDN-Router) ISDN-Router : 195.130.037.034, Subnetzmaske 255.255.255.224, default gateway Adresse des Routers beim Provider PC im Netz 'A' : 195.130.037.002, Subnetzmaske 255.255.255.224, default 195.130.037.001 (Karte im Server) PC im Netz 'B' : 195.130.037.035, Subnetzmaske 255.255.255.224, default 195.130.037.033 (Karte im Server)

Tests mit PING

Ob das TCP/IP-Routing funktioniert kann man mit dem PING-Befehl testen, der ueblicherweise immer installiert wird wenn man TCP/IP-Protokoll installiert. Die Verwendung ist einfach, PING <Zieladresse>. Um im obigen Beispiel zu testen ob ein PC im Subnetz A den ISDN-Router ansprechen kann wuerde man auf dem PC einfach PING 195.130.037.034 eingeben. Wenn eine Antwort kommt dann hat es geklappt.

Wenn der Test fehlschlägt dann kann das auch daran liegen daß einer der beteiligten Router den Rückweg nicht kennt.


Class A/B/C Subnetze

Abhaengig von ihrer Groesse bezeichnet man Subnetze oft als Class A, B oder C: Class A Subnetzmaske 255.0.0.0 Class B Subnetzmaske 255.255.0.0 Class C Subnetzmaske 255.255.255.0


GAW hat Folgendes geschrieben:

Die Klasseneinteilung in A, B und C ist ganz genau genommen nur noch historisch bedingt und das schon ziemlich lange (1996). Heute leben wir im Zeitalter der klassenlosen IP's (CIDR gesprochen ceider). Aus diesem Grund muß die Netzwerkmaske ja angegeben werden. Trotzdem wenden viele Systemadmins noch diese Begriffe an und wählen Netzmasken die den traditionen Einteilungen entsprechen.

Die seltsamen Zahlenkombinationen dieser ehemaligen Klassen lassen sich besser verstehen wenn man die ip Adresse des ersten Byte binär betrachtet.

Klasse A beginnt mit einer 0: von bis 00000000 - 01111111 0-127 (127 ist allerdings reserviert für Loopbackadressen)

Klasse B beginnt mit einer 10 von bis 10000000 -10111111 128 - 191

Klasse C beginnt mit einer 110: von 11011111 - 11011111 192 - 223

Es gibt noch zwei weitere Klassen: Klasse D beginnt mit 1110:

11100000 - 11101111 224 - 239

Diese Klasse dient für Multicastaufrufe. Das bedeutet es lassen sich verschiedene IP-Adressen und einer Adresse gemeinsam ansprechen. Allerdings müssen die zwischenliegenden Router das unterstützen.

Die letzte Klasse E die mit 1111 ist reserviert, das stammt noch aus den Zeiten als der Vorläufer vom Internet vom Militär geponsort wurde

Neben den schon genannten privaten Adressen sind noch die firmeneigenen Adressen zu nennen, die sich MS-System selber geben, wenn sie weder eine IP-Numer mit DHCP erhalten noch die IP-Adresse per Hand eingerichtet wurde. Dieses Verfahren bezeichnet MS als APIPA Automatic Private IP Adressing. Die entsprechenden Adressen sind bei der IANA eingetragen und daher ebenfalls private Adressen und zwar im folgenden Bereich:

169.254.0.1 bis 169.254.255.254/16.

weitere spezielle Adressen:

Loopback-Netz:

127.0.0.0

Loopback-Host:

127.0.0.1

alle Adressen:

0.0.0.0


TomcatMJ hat Folgendes geschrieben:


Private Klasse D Multicast-Netzwerke

(die aber wohl kaum jemand zuhaus haben wird*G*): 224.0.0.0 - 224.0.0.255

Quelle: http://www.iana.org/assignments/multicast-addresses

Wer sich für die genaue Adressraumvergabe interessiert kann ja unter http://www.iana.org nachschauen. Dort sind einige Interessante Dokumente zum Thema IP-Adressräume (IPv4 und IPv6) zu finden (Auflistung diese Dokumente: http://www.iana.org/ipaddress/ip-addresses.htm)

Reservierte Adressbereiche fuer private Netze

Für den Fall dass man TCP/IP-Protokoll verwenden muss, aber nicht über einen reservierten offizielen Adressbereich verfügt, gibt es reservierte private Adressen die nicht im Internet verwendet werden bzw. seitens Anschlußprovidern schon nicht ins Internet geroutet werden dürfen. Diese Bereiche sind:

Class IP-Bereich maximal zulässige Subnetmaske
A 10.0.0.0 255.0.0.0
B 172.16.0.0 - 172.31.0.0 255.240.0.0
C 192.168.0.0 - 192.168.255.0 255.255.0.0
D 224.0.0.0 - 224.0.0.255 255.255.255.0

Ein Spezialfall ist der Sogenannte "Link Local Block", der dann benötigt wird, wenn ein DHCP-Server nicht erreichbar ist und das Betriebssystem sich selbst Adressen suchen soll, wie es z.B. im oben bereits erwähnten APIPA Verfahren von Microsoft-Systemen genutzt wird:

IP-Bereich maximal zulässige Subnetmaske
169.254.0.0 - 169.254.255.255 255.255.0.0

Quelle: RFC 3330 Abschnitt Special-Use IPv4 Addresses

P.S. Kommentare, Verbesserungsvorschlaege, Korrekturen und Hinweise wie man den Kram verstaendlicher machen koennte jederzeit erwuenscht.

P.P.S. Teile von GAW und TomcatMJ

eingefügt von --Yehudi 15:18, 7. Sep 2006 (CEST)


TCP/IP-Netzwerke und Internetzugang