web-dev-qa-db-ja.com

struct sockaddrを理解する

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

この構造では、正確には何を意味していますかアドレスファミリsa_family

TCP/UDPのようなプロトコルに「アドレス」があるということですか?まあ、プロトコルはアドレスではなく識別番号にすることができると思います。

とにかく、はいの場合、家族は何に基づいて分割されていますか?

17
Aquarius_Girl

通常、アドレスの形式とサイズはプロトコル固有です。

sockaddrは、差別化された共用体のように機能する一連のアドレス構造のベースとして使用されます。 https://beej.us/guide/bgnet/html/multi/sockaddr_inman.html を参照してください=。通常、sa_familyその後、適切なアドレスファミリの特定のアドレス構造にキャストします。

TCPとUDPには、それらに固有のアドレスはありません。むしろ、IPレベルには、IPv4とIPv6の異なるサイズのアドレスがあります。

こちらもご覧ください:

20
Len Holgate

C/C++でjnetpcap getHardwareAddress()メソッドを複製しようとしたときに、これを見つけました。 MACアドレスは、sa_familyが17(0x11、AF_PACKET)の場合、バイト10〜15に含まれています。

0
Jerry Miller