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 169<br />

Als problematisch stellt sich bei der Speicherung heraus, daß sich, je nach<br />

Betriebssystem <strong>und</strong> Prozessor, diese maschinennahe Darstellung von System<br />

zu System unterscheiden kann. Man unterscheidet bei gängigen Systemen<br />

nämlich zwischen zwei verschiedenen Darstellungsformen für Multibyte-<br />

Werte: der Speicherung im Big-Endian- <strong>und</strong> im Little-Endian-Format. 12 Die<br />

rechnertypische Art der Speicherung wird Maschinendarstellung oder Host<br />

Byte Order genannt.<br />

Da<strong>mit</strong> die maschinennah gespeicherten IP-Adressen von allen Rechnersystemen<br />

<strong>und</strong> Netzwerkkomponenten auf die gleiche Art <strong>und</strong> Weise interpretiert<br />

werden, hat man sich darauf geeinigt, IP-Adressen im Big-Endian-Format<br />

zu speichern. Diese Art der Darstellung entspricht demnach exakt unserer<br />

Diskussion der IP-Adressen aus den Abschnitten 4.2.2 <strong>und</strong> 4.2.3. Die maschinennahe<br />

Darstellung im Big-Endian-Format wird Netzwerkdarstellung oder<br />

Network Byte Order genannt.<br />

Adreßumwandlungen <strong>mit</strong> inet pton() <strong>und</strong> inet ntop()<br />

Für die Umwandlung einer in Textdarstellung vorliegenden IP-Adresse steht<br />

seit IEEE Std 1003.1-2001 die Funktion inet_pton() zur Verfügung. Die<br />

Funktion konvertiert die übergebene IPv4- oder IPv6-Adresse in eine 32 Bit<br />

bzw. 128 Bit lange IP-Adresse in Netzwerkdarstellung. Als Eselsbrücke kann<br />

mansicheinprägen, daß die Funktion eine IP-Adresse aus der Präsentationsdarstellung<br />

( ”<br />

p“) in die Netzwerkdarstellung ( ”<br />

n“) transformiert, also ”<br />

p → n“<br />

bzw. ”<br />

p to n“. Das passende Gegenstück bildet die Funktion inet_ntop(),<br />

welche eine IP-Adresse aus der Netzwerkdarstellung in die Präsentationsdarstellung<br />

wandelt.<br />

#include<br />

<br />

const char *inet_ntop( int af, const void *src,<br />

char *dst, socklen_t size );<br />

int inet_pton( int af, const char *src, void *dst );<br />

Beide Funktionen erwarten als erstes Argument af die Adreßfamilie der zu<br />

verarbeitenden Adresse. Die Konstante AF_INET steht dabei für eine IPv4-<br />

Adresse während AF_INET6 eine IPv6-Adresse anzeigt.<br />

12 Die Bezeichnung Big-Endian weist darauf hin, daß bei der Darstellung von<br />

Multibyte-Werten das ”<br />

dicke Ende“ zuerst kommt, d. h. die Speicherung der Daten<br />

von den höherwertigen Bytes zu den niederwertigen Bytes erfolgt. Im Gegensatz<br />

dazu erfolgt die Speicherung im Little-Endian-Format beginnend <strong>mit</strong> den<br />

niederwertigen Bytes hin zu den höherwertigen Bytes.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!