Kurzeinführung IPv4

Da ich gerade privat mal für eine E-Mail eine kurze Einführung in IPv4 geschrieben habe, dachte ich mir ich erweiter die noch ein wenig und stell sie auf den Blog. Bevor jemand fragt: Ja mir ist klar dass hier die meisten über alles bescheid wissen was ich hier mal eben schreibe.

Wir haben eine dynamische, geroutete (von Route, also dem Weg den "sich" die Daten durch das Netz suchen) Adresse. Ich könnte dir unsere aktuelle IP-Adresse geben aber das willst du sicher nicht wissen *g* Weil die sich alle 24 Stunden (oder wenn wir den Router neu starten) ändert, bringt das ja auch nicht viel.
Der Grund für die Änderungen ist, dass Provider für Freenet nur eine bestimmte Anzahl solcher Nummern gekauft haben. Wenn man sich also einwählt bekommt man irgendeine die gerade niemand anders hat, bei Modemverbindungen brauchte man dadurch z.B. nur ein Zehntel oder so der Menge, hätte man jedem eine fest zugewiesen.
Nachteil für die Nutzer ist dass wir nicht ohne weiteres sagen können "Ich kauf mir jetzt die Adresse foobar.de und lass die auf meine Adresse zeigen" die Adresse ändert sich ja ständig.
Nichtgeroutete Adressen sind dann die, die so definiert sind dass sie im Internet nicht weitergeleitet werden. Wenn also jemand in Timbuktu 192.168.230.123 eingibt kommt der nicht an meinen PC, auch wenn der diese Adresse hätte. Jeder darf also so viele nichtgeroutete Adressen vergeben wie er will. Daher haben wir auch hinter unserem Router solche Adressen für jeden Rechner, der Router leitet dann die Daten ins Interne und zurück jeweils über die eine Adresse die er sich vom Provider holt um.

Um die Sache mal etwas zu erweitern...

Nichtgeroutete Adressbereiche liegen zwischen folgenden Adressen:


  • 10.0.0.0 bis 10.255.255.255 -> Klasse A

  • 172.16.0.0 bis 172.31.255.255 -> Klasse B

  • 192.168.0.0 bis 192.168.255.255 -> Klasse C

  • 169.254.0.0–169.254.255.255


Die Klassen, die ich oben angegeben habe, beziehen sich auf die Menge der verfügbaren Adressen und welcher Block für Netzwerk oder für den einzelnen Client zählen. Die 4 Byte-Blöcke (jeweils eine Zahl von 0 bis 255) sind genau wie im Dezimalsystem nach Wertigkeit geordnet. Das bedeutet wenn man die IP-Adressen hochzählt folgt auf 0.0.0.1 0.0.0.2 und auf 0.0.0.255 die 0.0.1.0. Wenn ich also ein Klasse B-Netzwerk habe, beziehen sich die ersten beiden Byte (172.16.) auf das Netzwerk und die letzten beiden (.0.0) auf den jeweiligen Rechner.

Ich kann also in meinem privaten Class-B-Supernetzwerk (damit Class-B nötig ist, brauchen wir einige Geräte, das werden die wenigsten Privatpersonen mal eben rumstehen haben) ein Netz 172.16.0.0, ein Netz 172.17.0.0 und ein Netz 172.31.0.0 aufbauen (naja und halt noch ein paar andere Netzwerke, so 16*256 oder so).
In jedem dieser Netzwerke kann ich mir dann einen rechner .0.1, einen mit .0.2 und einen mit .0.3 usw. zuordnen. (Das macht 65.536 Clients für jedes dieser Netzwerke)

Für Class A steht mir als privates Netzwerk leider nur eins zur Verfügung... also alles was mit 10. anfängt. Dafür gleicht sich das mit 256^3 Rechnern in diesem Netzwerk mehr als aus. Klasse C im Gegensatz lässt mich 256 private Netzwerke bilden, jedes dafür "nur" mit 255 Rechnern. Das reicht aber für die meisten Privatpersonen durchaus aus, daher wird es meistens auch genutzt.

Das große Problem mit diesen IPv4 Adressen ist, dass wir nur 256^4 Adressen zur Verfügung haben. Diese 4.294.967.296 Adressen werden dann noch um die ganzen privaten Adressen reduziert (wie bereits bemerkt können wir sie ja im Internet nicht nutzen). Außerdem gehen noch Adressen für Loopback, Multicast und verschiedenste andere reservierte Blöcke weg.

Diese unglaublich hohe Zahl an Adressen scheint ziemlich groß, aus genau diesem Grund wurde sie auch als das IP-Protokoll erfunden wurde durchaus als ausreichend angesehen. Das Internet ist jedoch extrem angewachsen, heutzutage hat ja schon fast jedes Handy einen Internetzugang von 2-3 PCs pro Haushalt mal ganz abgesehen.
Jetzt können wir diese Adressen wie bereits ganz oben bemerkt mit einem Router und einem Netzwerk aus privaten Adressen für viel mehr Adressen verwenden (dieser Vorgang nett sich NAT, Network Adress Translation) doch dies hat einige Nachteile. Wenn z.B. jemand eine Verbindung von außen mit einer privaten Adresse aufbauen will geht das nur sehr schwierig. Dies wird jedoch nötig, will man einen Webserver betreiben oder ähnliche Dienste anbieten. Gut, einen Server betreiben ja nur wenige zuhause... doch was tun wir wenn wir jemandem anders eine Datei per Messenger senden wollen? Einer der beiden Gesprächspartner will also eine Adresse zum anderen aufbauen, wenn beide hinter einem NAT sitzen wird dies etwas schwierig. Es ist durchaus nicht unmöglich, doch es geht, kurz gesagt, beschissen umständlich.

IPv4-Adressen sind auch äußerst schlecht aufgeteilt. Die USA halten mal eben alleine 74% aller Adressen. Für den Rest der Welt bleibt dann der ganze Rest. Die ganze Bevölkerung in China hat z.B. weniger Adressen zur Verfügung als mal eben ein einzelner Anbieter in den USA. Da dies danach entschieden wurde, wann welche Region sich die Adressen gesichert hat, trifft es also mal wieder die ärmsten Teile der weltweiten Bevölkerung.

Wie bringen wir also immer mehr Rechner ans Netz? Wir steigern die Menge der Adressen! Das geht leider mit IPv4 nicht, also müssen wir das Protokoll komplett überarbeiten. Das wurde getan und das Ergebnis nennt sich IPv6 (jap, v5 wurde mal wieder vergessen)
Um die Frage nach der genauen Menge der Adressen bei IPv6 zu beantworten (und mir dazu die Rechnerei zu ersparen) bemühen wir mal kurz Wikipedia:

Eine IPv6-Adresse ist 128 Bit lang (IPv4: 32 Bit). Damit gibt es etwa 3,4 * 10^38 (340,28 Sextillionen = eine Zahl mit insgesamt 39 Stellen) IPv6-Adressen. IPv4 kann maximal 232 Adressen vergeben, also etwa 4,29 · 10^9.

Um das mal auf etwas besser vorstellbare Bereiche umzurechnen: Es handelt sich um ca. 655.570.793.348.866.943.898.599 Adressen pro Quadratmeter Erde, also mit Meeresfläche und allem. (Hey, ich sagte ETWAS besser vorstellbar, nicht viel besser.)

Weil die beiden Versionen v4 und v6 nicht kompatibel sind, können Systeme die nur eins von beidem verwenden leider auch nicht miteinander reden. Man kann allerdings beides parallel verwenden und dann sowohl auf v4 als auch auf v6-Server zugreifen. Weiterhin kann man die Protokolle über das jeweils andere "tunneln", sprich ich verpacke meine IPv6 Daten in v4-Daten, sende sie über ein v4-Netzwerk an einen v4-Server, dieser entpackt die Pakete und leitet sie über ein v6-Netzwerk an einen v6-Server weiter... oder halt umgekehrt.

Da driften wir dann aber auch schon in IPv6-Details ab, die ich wohl lieber in einem seperaten Post behandeln sollte. Das ganze ist eh schon zu einem halben Roman geworden. Sollten noch Fragen bestehen freue ich mich darauf sie, soweit möglich, in den Kommentaren zu beantworten.

Importierte/Alte Kommentare:

#704: 07.Oct.2008 09:10 von Markus

Hehe, schöner Artikel :-)
Schade, dass die Umrüstung auf IPv6 so dermaßen schleift... In meinem lokalen Netz ist schon alles eingerichtet und ich warte immer noch darauf, dass mein Provider (Versatel) endlich mal nen Upgrade fertigbringt -.-

PS: hat der 169er-Bereich eigentlich nen Namen? Also es ist ja dieses APIPA von Microsoft, aber wenn noch kein Name vergeben wurde würde ich für "Class D" (DAU) tendieren, denn damit bekommt jeder nen Netzwerk hin auch ohne jemals etwas von "IP" gehört zu haben lol

#705: 07.Oct.2008 09:10 von Dr. Azrael Tod

"link local" es ist eigentlich nur ein einzelnes, weiteres "Class B"-Netz

Für solche Probleme gibts ja auch zur Not noch V6-Tunnel, verwende ich gerne zum Testen.

Geschrieben von Dr. Azrael Tod
Later article
Kommunikation Teil 1
Older article
Fact-DB importiert