Netzwerkkommunikation oder: wie Knoten reden

Network-Layer

Wir haben nun gesehen, wie Daten über einen Link übertragen werden. Ein Netzwerk ist das aber noch nicht. Wie werden nun Daten in einem Netzwerk über mehrere Links versendet und welchen Weg nehmen sie? Das wird in der Netzwerkschicht geregelt. Hier werkelt das Internet Protocol(IP)…

InternetProtocol(IP)

RFC 791

Genauer: IPv4. Das Internet Protocol transportiert ein Datagramm durch ein Netzwerk. Dabei werden ggf. Pakete fragmentiert, d.h. wenn ein Paket von 2000 Byte Größe über einen Link, der eine maximale Paketgröße(MTU) von 1500 Byte hat, versendet werden soll, wird es von IP in zwei kleinere aufgeteilt(fragmentiert) und ganz am Ende wieder zusammengesetzt.
Damit IP weiß, wohin nun ein bestimmtes Paket verschickt werden soll, erhält jeder Netzwerkknoten eine so genannte IP-Adresse. Diese ist 32 Bit lang(es gibt also theoretisch 2^32=4294967296 verschiedene IP-Adressen) und wird meist byteweise dezimal geschrieben, wobei die einzelnen Bytes durch Punkte voneinander getrennt sind. z.B. 127.0.0.1
Da es sich hierbei um eine lesbare Darstellung von einzelnen Bytes handelt, kann jede der 4 Zahlen Werte aus dem Bereich von 0 bis 255 annehmen.

Routing und Forwarding

Nun wissen wir also schon, dass jeder Knoten durch die IP-Adresse adressiert werden kann. Wie aber werden die Datagramme zugestellt? Wie finden sie den Weg durch das Internet zu ihrem Bestimmungsort? Dafür gibt es das so genannte Routing. Das lässt sich in etwa vergleichen mit der Planung einer Urlaubsreise. Besser den Zug nehmen? Oder fliegen? Oder doch mit dem Auto fahren? Wo Zwischenstopps machen? Wie kommt man am schnellsten ans Ziel? Darum kümmern sich die Routing-Algorithmen. Das Routing ist bei IP dezentral organisiert. D.h. es gibt kein zentrales „Reiseunternehmen“, welches die konkrete Route plant. Ebenso wenig weiß Host A auf welchem Weg nun genau sein Paket zu Host B geschickt wird. Jeder Knoten kennt nur seine direkte Umgebung. Mit dieser tauscht er Informationen aus: „Ich kenne einen Weg da und da hin.“ – „Ätsch… ich kenn aber einen schnelleren!“. Um nun die ganzen Informationen zu verwalten, führt jeder Router eine Routing-Tabelle. Dort steht dann drin, welche IPs in welcher „Richtung“, d.h. über welchen Link, zu erreichen sind. Kommt nun ein Paket für eine bestimmte IP an, schaut der Router nach, welcher Link nun der richtige ist und leitet das Paket entsprechend weiter. Dieses Weiterleiten, nennt sich Forwarding. Deshalb heißen die Routing-Tabellen auch eigentlich Forwarding-Tabellen. Es geht hier ja schließlich nur um das Weiterleiten, nicht um die komplette Route durchs Netz, da sich diese erst indirekt durch das Forwarden der Pakete durch die Router ergibt.
Das Routing geschieht also völlig dezentral ohne ohne Einflussnahme des Quell- oder Zielhostes. Es kann sogar sein, dass ein Paket einen ganz anderen Weg nimmt, als ein anderes, welches an die selbe Adresse gesendet wird, da sich die Routing-Tabellen ständig den Gegebenheiten(Neue Links, Links werden schneller, langsamer, mache sind überlastet oder fallen ganz aus) anpassen…

Subnetze und Subnetzmaske

Damit nun das Routing nicht gar zu kompliziert wird, werden größere Netze in kleineren Subnetzen organisiert. Das ist in etwa so, wie bei der Briefpost. Es werden da ja auch nicht einfach alle Haushalte willkürlich durchnummeriert, sondern das gesamte Bundesgebiet ist in Postleitzahlbereiche, Städte und Ortschaften, sowie in Straßen eingeteilt.
Im Internet befinden sich derzeit fast eine halbe Milliarde Hosts. Die IPs der einzelnen Knoten sind auf ganz ähnliche Weise, wie die Postleitzahlen mehr oder in Etwa mit der geographischen Position verknüpft. So erhält jeder Provider, der mehr oder weniger für ein gewisses Gebiet verantwortlich ist, von seinem (übergeordneten) Provider einen gewissen Adressbereich, den er wiederum unterteilt und an seine Kunden weitergibt.
Somit ist eine IP-Adresse in einen Subnetz-Teil und einen Host-Teil aufgeteilt. Beispiel:
192.168.1.1
binär:
11000000.10101000.00000001.00000001
In diesem Fall bilden die ersten 8 Bit den Subnetz-Teil und die restlichen 24 den Host-Teil. d.h. in diesem Subnetz können theoretisch 2^24 = 16777216 Rechner verwaltet werden.
Ursprünglich gab es für unterschiedlich große Subnetze so genannte Netzklassen, so ist der Netz-Teil eines Klasse-A-Netzes 8 Bit groß und beginnt mit einer binären 0. d.h. ursprünglich waren alle IP-Adressen im Bereich von 0.0.0.0 bis 127.255.255.255 in 128 Klasse-A-Netze zu je 16777214 Hosts unterteilt. Der Bereich von 128.0.0.0 bis 191.255.255.255(beginnend mit binär 10) war B-Klasse-Netzen mit 16Bit-Netzanteil und der Bereich 192.0.0.0 – 223.255.255.255(beginnend mit binär 110) C-Klasse-Netzen mit 24-Bit Netzanteil(und demnach 8Bit Hostanteil, d.h. theoretisch 256 möglichen Hosts). Darüber hinaus gab es noch D- und E-Netze für spezielle Verwendungszwecke.
Wie gesagt: Ursprünglich. Das System erwies sich mit der Zeit als zu unflexibel. Mittlerweile kann die Länge des Subnetz-Teils frei bestimmt werden und ist auch nicht mehr an bestimmte IP-Bereiche gebunden. Damit nun aber jeweils klar ist, wie groß das Subnetz ist, benötigt man eine Zusatz-Information: Die Subnetzmaske. Diese ist ähnlich, wie die IP-Adresse ein 32Bit-Wert. Alle Stellen, an denen eine binäre 1 steht, gehören zum Subnetzbereich. Alle mit einer binären 0 zum Hostbereich Beispiel:

1
2
IP-Adresse: 192.168.1.1
Subnetzmaske: 255.255.255.0

binär:

1
2
IP-Adresse:   11000000.10101000.00000001.00000001
Subnetzmaske: 11111111.11111111.11111111.00000000

Das bedeutet nun, dass die ersten 24-Bit das Subnetz-Bestimmen und die letzten 8 den Host. Schreibweisen dafür gibt es zwei: 1. Dezimal, wie die IP-Adresse auch und 2. als Anzahl der Subnetz-Bits hinter der eigentlichen IP-Adresse:
192.168.1.1/24

Broadcast

Oben war nun des öfteren von „theoretisch möglichen“ IP-Adressen die Rede. Der Grund hierfür ist, dass es bestimmte „besondere“ IP-Adressen mit speziellen Bedeutungen gibt. Ein Beispiel hierfür sind die Broadcast-Adressen. Möchte man, dass sich alle Hosts in einem Subnetz angesprochen fühlen, so schickt man seine Pakete an die Broadcast-Adresse des Subnetzes. Diese setzt sich aus dem Subnetz-Anteil und lauter Einsen als Hostanteil zusammen. Somit wäre z.B. 192.168.1.255 die Broadcast-Adresse für das Subnetz 192.168.1.0/24. Im Übrigen bezeichnen lauter Nullen als Host-Anteil im Allgemeinen das Subnetz selbst. Jedoch kann diese Adresse theoretisch(wie die Broadcast-Adresse auch) auch frei vergeben werden, sofern das die verwendeten Betriebssysteme unterstützen.
Die Adresse 255.255.255.255 ist eine weitere zusätzliche Broadcast-Adresse. Diese bezieht sich immer auf das aktuelle Subnetz. Das ist wichtig um auch ohne Kenntnis der Subnetzmaske einen Broadcast ausführen zu können…

Loopback-Adressen

Eine weitere besondere IP-Adresse ist die Loopback-Adresse oder genauer: die Loopback-Adressen. Damit sich auch Programme, die auf ein und dem selben Rechner laufen, auf einfache Weise unterhalten können, bezeichnen die Adressen 127.0.0.1 – 127.255.255.254 immer das eigene System.

Private IP-Adressen

Darüber hinaus gibt es noch so genannte „private IP-Adressen“. Diese werden im Internet nicht geroutet und sind dadurch nur lokal (z.B. in einem LAN) gültig. Im Einzelnen sind das die IP-Bereiche 10.0.0.0/8(traditionell ein A-Netz), 172.16.0.0/12(traditionell 16 B-Netze) und 192.168.0.0/16(mit traditionell 256 Klasse-C-Netzen).
Wenn man ein kleines Privates LAN einrichtet, so wird dabei meist ein Klasse-C-Subnetz im letztgenannten Bereich verwendet.
Eine Sonderstellung innerhalb der privaten IP-Adressen hat der Bereich 169.254.0.0/16. Siehe hierzu: http://de.wikipedia.org/wiki/Private_IP-Adresse#Link_Local

Es gibt noch weitere „besondere“ IP-Adressen, das hier waren jetzt aber zuerst einmal die wichtigsten…

IPv6

IPv4 ist zwar weit verbreitet, d.h. es wird im gesamten Internet genutzt, jedoch hat es einen entscheidenden Nachteil: Die Adressen werden mit der Zeit knapp. Und zwar so knapp, dass man schon längst Workarounds, wie NAT(siehe unten) benötigt um nicht größte Probleme zu bekommen. Die neue Version von IP, IPv6, soll dieses Problem beheben. Bei IPv6 sind nämlich die Adressen nicht 32bit, sondern mit 128Bit 4 mal so lang. Das hört sich jetzt auf den ersten Blick nicht sooo sonderlich viel mehr an, aber wir haben es hier mit exponentiellem Wachstum zu tun. Was heißt das nun konkret? Waren unter IPv4 2^32 = 4294967296 = ca 4 Mrd. IP-Adressen theoretisch möglich, so sind es bei IPv6 2^128 = 3,4 * 10^38.
Damit bietet IPv6 genügend Adressen um jedes Sandkorn auf der Erde separat anzusprechen. Oder anders ausgedrückt: Auf einen Quadratmillimeter Erdoberfläche fallen ca. 667 Billiarden IPv6-Adressen. Das sollte also eine Zeit lang reichen… 😉
Da nun IPv6Adressen deutlich länger sind als IPv4-Adressen, schreibt man sie auch nicht mehr dezimal, sondern hexadezimal, wobei die 128 Bit in 8 Blöcke zu je 16 Bit aufgeteilt sind. Jeder Block ist mit einem Doppelpunkt von den anderen getrennt. Somit könnte eine IPv6-Adresse folgendermaßen aussehen:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344

Ansonsten haben sich auch noch ein paar andere Dinge geändert:
– statt dem Broadcast werden nun Multicasts verwendet
– keine Fragmentierung mehr
– …
Für Genaueres siehe: http://de.wikipedia.org/wiki/Ipv6

ICMP

RFC 792

Das Internet Control Message Protocol kurz ICMP ist ein weiteres Protokoll, das der Netzwerkschicht zugerechnet wird. Anders als IP dient es aber nicht dazu, Nutzdaten zu versenden, sondern ist ein internes Meldesystem für Informations- und Fehlermeldungen, die im Allgemeinen die Netzwerkschicht betreffen. Beispielsweise wird so gemeldet, dass das Ziel nicht erreichbar ist oder, wenn der Header eines IP-Datagramms beschädigt ist. Daneben wird ICMP auch von Diagnoseprogrammen, wie Ping und Traceroute benutzt.

TTL

Damit unzustellbare Pakete nicht andauernd weitergereicht werden und so nur noch das Netzwerk zumüllen, erhält jedes IP-Datagramm eine so genannte TTL(Time To Live). Jeder Router soll die TTL laut RFC 791 pro Sekunde, die das Paket auf dem Router verweilt, um 1 verringern. Beträgt die Verweildauer weniger als eine Sekunde, so wird die TTL trotzdem um 1 verringert. Pakete mit einer TTL von 0 werden verworfen. Bei einem initialen TTL-Wert von 255(128 und 64 sind ebenfalls gebräuchlich) darf ein IP-Datagramm also maximal 4,25 Minuten leben.

Standardgateway

Jetzt wissen wir also schon, was eine IP-Adresse und eine Subnetzmaske ist. Zum Vollständigen Einrichten einer Netzwerkverbindung fehlt nur noch der Standard-Gateway. Wer das schon einmal gemacht hat, hat da wohl meist den „Router“ eingetragen. Nun wissen wir aber auch warum: Das ist die IP für die Default-Route. Wenn eine Verbindung zu einer unbekannten IP aufgebaut werden soll, dann wird zuerst mal davon ausgegangen, dass sich diese außerhalb des eigenen Subnetzes befindet(was auch meistens der Fall ist: Das Subnetz ist überschaubar, also sollte der Weg zu den anderen Host dort bekannt sein. Alles unbekannte ist meist irgendwo „im Internet“.) und der Router ist eben meist die einzige Möglichkeit uns dem eigenen Subnetz herauszukommen, sozusagen „das Tor zur Außenwelt“.

DHCP

Möchte man nun die ganzen IP-Adressen nicht selbst eintragen müssen, was insbesondere in großen Netzwerken sehr viel Arbeit wäre(man müsste immer eine Liste führen welcher Rechner, welche IP-Adresse hat, welche noch frei sind, etc.), so kann man sich das Netzwerk selbst konfigurieren lassen. Dies übernimmt dann das Dynamic Host Configuration Protocol(DHCP). Der „Router“ hat dann meist einen DHCP-Server laufen, der entsprechende Listen führt und immer, wenn ein neuer Client dazu kommt, diesem eine freie IP-Adresse zuteilt. um nun einen DHCP-Server in einem unbekannten Netz zu finden, sendet, wie oben beschrieben der Client einfach einen Broadcast auf 255.255.255.255. Der DHCP-Server meldet sich darauf beim Client und diesem IP, Subnetzmaske und Standardgateway(und DNS-Server, s.u.) mit.

Kapitel: | Zurück | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Weiter |

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert