05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.2 IP-Namen <strong>und</strong> IP-Adressen 173<br />

Als erstes testen wir unser Programm <strong>mit</strong> einer ungültigen Adresse. Die Reaktion<br />

ist unmißverständlich, das Programm verweigert wie erwartet seine<br />

weitere Arbeit:<br />

$ ./bitwise blabla<br />

ungültige Adresse: blabla<br />

Als nächstes kommt eine normale IPv4-Adresse an die Reihe. Unser Programm<br />

erkennt die Form einer IPv4-Adresse, springt in den entsprechenden Teil der<br />

Verarbeitung <strong>und</strong> stellt die Adresse in Binärdarstellung dar. Die Ausgabe der<br />

einzelnen Bytes erfolgt in Network Byte Order, also vom hochwertigsten Byte<br />

(ganz links) zum niederwertigsten Byte (ganz rechts):<br />

$ ./bitwise 192.168.1.2<br />

IPv4 Adresse: 192.168.1.2<br />

11000000 10101000 00000001 00000010<br />

IPv4 Adresse: 192.168.1.2<br />

Auch <strong>mit</strong> der unspezifizierten IPv6-Adresse gibt es keine Probleme. Überraschend<br />

ist bestenfalls, daß die Rückübersetzung aus der Netzwerkdarstellung<br />

in die Präsentationsform die kompakte Kurzschreibweise liefert:<br />

$ ./bitwise ::<br />

IPv6 Adresse: ::<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

IPv6 Adresse: ::<br />

Dies gilt selbstverständlich auch für Adressen, die ursprünglich nicht in der<br />

für IPv6 typischen Kurzform abgefasst sind. Als Beispiel sehen wir uns<br />

die Loopback-Adresse an, die beim Programmaufruf anstatt in der Kurzform<br />

(::1) inausführlicher Notation geschrieben ist:<br />

$ ./bitwise 0:0:0:0:0:0:0:1<br />

IPv6 Adresse: 0:0:0:0:0:0:0:1<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000001<br />

IPv6 Adresse: ::1<br />

Auch die IPv6-Adressen <strong>mit</strong> eingebetteter IPv4-Adresse werden ohne weiteres<br />

Zutun von inet_ntop() erkannt <strong>und</strong> in der für diese Adressen intuitiven<br />

gemischten Schreibweise ausgegeben. Bei der nachfolgend getesteten Adresse<br />

::ffff:c0a8:102 handelt es sich um eine IPv4-gemappte IPv6-Adresse:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!