wake-up-neo.com

Verstehen von struct sockaddr

struct sockaddr {
    unsigned short sa_family;   // address family, AF_xxx
    char           sa_data[14]; // 14 bytes of protocol address
};

Was genau ist in dieser Struktur die Bedeutung Adressfamilie durch sa_family dargestellt?

Bedeutet das, dass Protokolle wie TCP/UDP "Adressen" haben? Nun, die Protokolle können Identifikationsnummern sein, nicht Adressen, denke ich.

Wenn ja, auf welcher Grundlage wurden ihre Familien aufgeteilt?

15
Aquarius_Girl

Das Format und die Größe der Adresse ist normalerweise protokollspezifisch.

sockaddr wird als Basis für eine Reihe von Adressstrukturen verwendet, die wie eine diskriminierte Union wirken, siehe http://www.retran.com/beej/sockaddr_inman.html . In der Regel sehen Sie sich den sa_family an und dann in die spezifische Adressstruktur der entsprechenden Adressfamilie.

TCP und UDP haben keine eigenen Adressen, vielmehr hat die IP-Ebene unterschiedliche Adressgrößen für IPv4 und IPv6.

Siehe auch: 

19
Len Holgate

Ich habe dies herausgefunden, als ich versuchte, die Methode jnetpcap getHardwareAddress () in C/C++ zu kopieren. Die MAC-Adresse ist, wenn sa_family 17 (0x11, AF_PACKET) ist, in den Bytes 10-15 enthalten.

0
Jerry Miller