Grundsätzliches über den Umgang mit IP-Adressen


Was fast alle wissen, ist das die meisten Rechner einen Namen wie friju.dyndns.org haben, über den sie angesprochen werden können. Was viele wissen, ist das ein Computer diese Namen aber nicht direkt brauchen kann, sondern zuerst einen Namensserver befragen muss um eine sog. IP Adresse zu bekommen. Diese besteht dann aus 4 Zahlenblöcken die jeweils durch einen Punkt getrennt werden. Jeder Rechner der per TCP/IP vernetzt ist muss eine solche IP-Adresse haben und diese muss in dem Netzwerksegment einmalig sein.

Um dies sicherzustellen hat man sich darauf geeinigt die Adressen in verschiedene Bereiche einzuteilen.

So gibt es A-Klasse, B-Klasse, C-Klasse Netze. Sie unterscheiden sich durch die erste Zahl und legen fest in welchem Umfeld die Adresse benutzt werden darf. So gibt es z.B. Adressen die ausschließlich in privaten Netzwerken vorkommen dürfen.

Nichtsdestotrotz muss ein Computer diese Adresse in Binärform haben. Dies ist in der Natur der Sache: Computer kennen nun mal nur Nullen und Einsen.

Und dies bringt uns direkt zu den

Besonderheiten im Umgang mit IP-Adressen

Die IP-Adresse AAA.BBB.CCC.DDD wird folgendermaßen ins Binärformat umgerechnet:

Es wird aus AAA eine Binärzahl a', aus BBB eine Binärzahl b', aus CCC eine Binärzahl c' und aus DDD eine Binärzahl d' gebildet. Diese werden nun aneinander gereiht und bilden so eine Binäradresse.

Um dies zu veranschaulichen betrachten wir einfach eine Adresse wie sie in einem lokalen Netzwerk vorkommen kann:

192.168.100.111

Nun ist

192 ~ 11000000

168 ~ 10101000

100 ~ 01100100

111 ~ 01101111

Das wird nun aneinander gereiht !!!

11000000101010000110010001101111

DIES und nichts anderes ist die Adresse mit der der Rechner arbeitet.

Wenn man diese Adresse nun als Zahl auffasst, dann kann man Sie wieder ins Dezimalsystem umrechnen und erhält:

3232261231

Was passiert also nun wenn wir als Zieladresse nicht 192.168.100.111 sondern 3232261231 eingeben??

Wir erreichen dieselbe Zieladresse!!!

Nachdem wir nun den ersten Schock verdaut haben fragen wir uns warum dem so ist:

Der Punkt zwischen den Zahlen gibt bei einer herkömmlich angegebenen IP-Adresse an, dass die Adresse nach oben genannter Abbildungsvorschrift gebildet werden muss!

Wenn nun eine "normale" Dezimalzahl (ohne Punkte) eingegeben wird, dann wird er diese ebenfalls ins Binärformat wandeln, aber eben nach der Vorschrift die für eine normale Umrechnung von Dezimalzahlen gilt.

Da aber die Binärwerte identisch sind haben wir dasselbe Ergebnis und erreichen somit denselben Zielrechner.

Das führt uns zwangsläufig zu der Frage: Kann ich einem Rechner sonst noch ein Format "füttern" und worauf ist bei der Formatierung sonst noch zu achten?

Vorweg: Man kann, und man muss auf einiges achten!!

Doch betrachten wir einmal wie man einem Computer Zahlen klar machen kann:

Wer schon mal programmiert hat weiß das ein Computer Zahlen in beliebigen Formaten akzeptieren kann wenn man ihm nur klarmacht in welchem Format die Eingabe vorliegt.

Hierzu sollte man sich erst mal vor Augen führen, auf welche Art einem Client die Adresse übergeben wird.

Grundsätzlich gilt folgende Formatierung:

[Username[:Passwort]@]Adresse[:Portnummer][/Unterverzeichnisse]

Klingt kompliziert, ist es aber nicht. Alles was vor dem @-Symbol aufgeführt worden ist ist optional und dient lediglich der Userauthentizierung. Das @-Symbol selber ist ebenfalls Optional. Das heißt das folgende Konstruktionen möglich sind:

Adresse'

Username@Adresse'

Username:Paswort@Adresse'

Wobei Adresse' lediglich eine Substitution von Adresse[:Portnummer][/Unterverzeichnisse] sein soll.

Wird der Username, nicht aber das Passwort übergeben, so wird i.d.R. eine Eingabeaufforderung zum Eingeben des Passwortes gestartet.

Aber auch Adresse' muss nicht so aussehen wie oben angeführt.

Substituieren wir diesmal [Username[:Passwort]@]Adresse als Adresse'', so kann eine Zieladresse die einem Client übergeben wird folgendermaßen aussehen:

Adresse''

Adresse'':Portnummer

Adresse''/Unterverzeichnisse

Adresse'':Portnummer/Unterverzeichnisse

Und JEDER einzelne Teil wird von dem jeweiligen Client lediglich als eine Folge von Einsen und Nullen bearbeitet.

Und dies wirft die Frage auf WIE der String den man dem Client übergibt in die Binärzahl gewandelt wird.

Das @-Symbol ist hierbei ein wichtiges Symbol, ebenfalls der Doppelpunkt (':') oder der Slash ('/'). Denn diese signalisieren, das der vorangehende bzw. folgende Teil anders interpretiert werden muss als der bereits betrachtete.

Fangen wir nun mal bei der eigentlichen Adresse an. Also bei dem was nach dem @-Symbol und vor dem Doppelpunkt bzw. Slash kommt:

Wie oben schon gezeigt, kann diese als Dezimalzahl auch DWORD genannt, oder in der herkömmlichen Schreibweise Oktetschreibweise dargestellt werden. Möglich sind aber auch eine Darstellung als Oktalzahl oder als Hexadezimalzahl.

Um dem Browser nun klarzumachen, dass es sich um eine Oktaldarstellung handelt muss eine 0 vorangestellt werden. Im obigen Beispiel der Adresse 192.168.100.111 sähe dies nun folgendermaßen aus:

192 ist Oktal 300

168 ist Oktal 250

100 ist Oktal 144

111 ist Oktal 157

Eine Darstellung als Oktalzahl würde also folgendermaßen aussehen:

0300.0250.0144.0157

ABER: JEDE beliebige Anzahl vorangestellter Nullen (wobei es wie gesagt mindestens eine Null sein muss) funktioniert. D.h. auch folgende Adresse stellt die IP Adresse 192.168.100.111 dar:

00000000300.00000250.000000000000144.00157

Aber wie erwähnt ist auch eine Darstellung als Hexadezimalzahl möglich. Um klarzustellen, dass es sich um eine Hexadezimalzahl handelt muss nun ein 0x vorangestellt werden.

Um eine Hexadezimale Darstellung zu erhalten muss die IP-Adresse in Dezimale Form umgewandelt werden. Diese Zahl wird dann in eine Hexadezimale Zahl umgewandelt. Im bekannten Beispiel ergibt sich also

C0A8646F

als Wert. Die Adresse kann also nun als 0xC0A8646F dargestellt werden. Allerdings kann sie auch in folgender Form dargestellt werden:

0xC0.0xA8.0x64.0x6F

Anzumerken bleibt, das nicht jeder Client mit hexadzimalen Adressen klarkommt. Ferner kann man LINKS vom hexadezimalen Zahlenwert eine beliebige Hexzahl hinzuzufügen. Die Adresse

0xA23EC0A8646F

weist also auf dieselbe Adresse.

Nun noch eine Anmerkung zu der Dezimaldarstellung: Auch hier kann man die Darstellung "erweitern". Man kann jedes beliebige ganzzahlige Vielfache von 256^4=4294967296 addieren und die Zieladresse bleibt dieselbe.

Nun denn. Wem das bislang noch nicht abenteuerlich genug ist, der kann nun auch noch die Adresse aus einem wilden Mix der einzelnen Darstellungsmöglichkeiten erzeugen.

Hier einige Beispiele:

0xC0.0250.25711

0300.168.100.0x6F

192.0xC0A8.000000000144.111

Diese stellen ALLESAMT die Adresse 192.168.100.111 dar.

Doch damit nicht genug. Es gibt noch weitere Möglichkeiten eine Ziel URL für den Normalsterblichen unlesbar zu machen. Hierzu zu einem späteren Zeitpunkt mehr.



Kontaktadresse







Valid HTML 4.01!