struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
Dans cette structure, quelle est exactement la signification adresse famille représentée par sa_family
?
Cela signifie-t-il que les protocoles tels que TCP/UDP ont des "adresses"? Eh bien, les protocoles peuvent être des numéros d’identification et non des adresses, je pense.
Quoi qu'il en soit, si oui, sur quelle base leurs familles ont-elles été divisées?
Le format et la taille de l'adresse sont généralement spécifiques à un protocole.
sockaddr
est utilisé comme base d'un ensemble de structures d'adresses qui agissent comme une union discriminée, voir http://www.retran.com/beej/sockaddr_inman.html . Vous examinez généralement le sa_family
, puis vous transmettez à la structure d'adresses spécifique de la famille d'adresses appropriée.
TCP et UDP n'ont pas d'adresse spécifique, mais le niveau IP a des tailles d'adresses différentes pour IPv4 et IPv6.
Voir également:
Je l'ai découvert en essayant de dupliquer la méthode jnetpcap getHardwareAddress () en C/C++. L'adresse MAC est contenue, lorsque sa_family est 17 (0x11, AF_PACKET), en octets 10-15.