struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
この構造では、正確には何を意味していますかアドレスファミリsa_family
?
TCP/UDPのようなプロトコルに「アドレス」があるということですか?まあ、プロトコルはアドレスではなく識別番号にすることができると思います。
とにかく、はいの場合、家族は何に基づいて分割されていますか?
通常、アドレスの形式とサイズはプロトコル固有です。
sockaddr
は、差別化された共用体のように機能する一連のアドレス構造のベースとして使用されます。 https://beej.us/guide/bgnet/html/multi/sockaddr_inman.html を参照してください=。通常、sa_family
その後、適切なアドレスファミリの特定のアドレス構造にキャストします。
TCPとUDPには、それらに固有のアドレスはありません。むしろ、IPレベルには、IPv4とIPv6の異なるサイズのアドレスがあります。
こちらもご覧ください:
C/C++でjnetpcap getHardwareAddress()メソッドを複製しようとしたときに、これを見つけました。 MACアドレスは、sa_familyが17(0x11、AF_PACKET)の場合、バイト10〜15に含まれています。