TCP/IP und Routing Grundwissen
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 übliche Schreibweise ist, dass man die vier Bytes durch Punkte voneinander trennt.
Ein Gerät erhält 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 unterstützt bzw. entsprechende Dienste installiert hat.
Zwei Geräte die TCP/IP verwenden, können nun entweder direkt miteinander kommunizieren (weil sie im Netzwerk direkt miteinander verkabelt sind *UND* im selben IP-Subnetz liegen) oder müssen über einen Router (in diesem Zusammenhang auch oft Gateway genannt) miteinander kommunizieren. Dazu unterteilt man die Adressbereiche in Subnetze. Zwei Geräte die im selben Subnetz liegen, können miteinander direkt kommunizieren. Liegen sie nicht im selben Subnetz, dann müssen die Datenpakete über ein Gateway gesendet werden.
Die Entscheidung, ob zwei TCP/IP-Adressen im selben Subnetz liegen, wird über die Subnetzmaske gefällt. Beide Adressen werden durch ein logisches AND mit der Subnetzmaske verknuepft. Kommt dabei dasselbe heraus liegen sie im selben Subnetz.
Bei der am häufigsten 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 für unterschiedliche Subnetze konfigurieren sonst kommt das Routing durcheinander.
Nun will ich auf die Funktion der Subnetzmasken etwas detaillierter eingehen.
Inhaltsverzeichnis
Kurzer Exkurs ins binäre 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 Binärwerte umgerechnet:
Jede Stelle einer Binärzahl steht für eine Zweierpotenz (so wie wir üblicherweise 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 binär = 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 binär
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 Größe eines Subnetzes fest (und umgekehrt). Die erste und die letzte Adresse eines Subnetzes können nicht für Geräte verwendet werden, da sie für 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 Verfügung. Im Beispiel 2 (255.255.255.224) sind das 32-2=30 Adressen.
Schreibweise 192.168.0.1/24 für Subnetzmasken
Eine beliebte Schreibweise für IP-Adressen und Subnetzmasken besteht darin dass man einfach die Anzahl der gesetzten Bits (=die Einser in der Binärdarstellung) der Subnetzmaske, die ja für den Netzwerkanteil der Adresse stehen, 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
Subnetting und Supernetting
Subnetting
Unter Subnetting 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.255 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 |
255.255.255.255 | 11111111 11111111 11111111 11111111 | /32 |
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".
Ähniches gilt für die letzte Subnetzmaske, die gar keinen Hostantei übrig lässt. De Facto gibt es diese /32 Netzwerkmaske jedoch auch in der Anwendung, nämlich bei einigen Punkt-zu-Punkt Protokollanwendungen wie manchen DSL-Anbindungsarten oder Modemnutzungen als sogenannte Single-Host-Route, nicht jedoch zur direkten Kommunikation zwischen real existierenden Rechnern(=Hosts).
Supernetting
Das Supernetting 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 Gerät 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 selbst weiß, wie es das Datenpaket weiterzuleiten hat, sodass es am Empfänger ankommt.
Meistens gibt es innerhalb eines Subnetzes ein Standardgateway (oder auch default gateway).
Beispiel:
Vorhanden ist ein Server mit zwei Netzwerkkarten (A und B). Außerdem 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 Größe 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 mögliche Konfiguration so aussehen:
- Der Adressbereich wird in zwei Hälften geteilt (.0 - .31 und .32 - .63) - Die Arbeitsplatz-PCs schicken Pakete deren Empfänger nicht in ihrem Subnetz liegt zum Server - Der Server 'weiß', 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 Empfänger im Subnetz 'A' zum Server schickt, der sie dann weiterleitet. Dies geschieht durch den Eintag einer 'Statischen Route'. Wie dies genau geschieht, hängt 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 müssen.
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 üblicherweise 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 würde 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
Abhängig von ihrer Größe 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
Klasseneinteilung der Netzwerkadressen früher und heute
(großenteils von GAW stammend)
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 traditionellen 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 anfängt, ist reserviert. Dies stammt noch aus den Zeiten als der Vorläufer vom Internet vom Militär geponsort wurde. Dieser Vorläufer hieß MIL-Net, im Gegensatz zum wissenschaftlichen Internetvorläufer ARPA-Net mit dem die meisten astronomischen Forschungsinstitute damals vernetzt waren als erste großflächige Vernetzung nicht-militärischer Organisationen.
Neben den schon genannten privaten Adressen sind noch die firmeneigenen Adressen zu nennen, die sich MS-System selbst 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
Private Klasse D Multicast-Netzwerke
224.0.0.0 - 224.0.0.255
Quelle: http://www.iana.org/assignments/multicast-addresses
Wer sich für die genaue Adressraumvergabe interessiert, der kann ja unter http://www.iana.org nachschauen. Dort sind einige Interessante Dokumente zum Thema IP-Adressräume (IPv4 und IPv6) zu finden (Auflistung dieser Dokumente: http://www.iana.org/ipaddress/ip-addresses.htm)
Reservierte Adressbereiche für private Netze
Für den Fall dass man TCP/IP-Protokoll verwenden muss, aber nicht über einen reservierten offiziellen 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 verständlicher machen könnte jederzeit erwünscht.
P.P.S. Teile von GAW und TomcatMJ
eingefügt von --Yehudi 15:18, 7. Sep 2006 (CEST)