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?
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:
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.