it-swarm.it

Comprensione struct sockaddr

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

In questa struttura qual'è esattamente il significato famiglia di indirizzi rappresentato da sa_family?

Significa che i protocolli come TCP/UDP hanno "indirizzi"? Bene, i protocolli possono essere numeri di identificazione e non indirizzi, credo.

In ogni caso, se sì, allora su quali basi sono state divise le loro famiglie?

15
Aquarius_Girl

Il formato e la dimensione dell'indirizzo sono solitamente specifici del protocollo.

sockaddr è usato come base di un insieme di strutture di indirizzi che si comportano come un'unione discriminata, vedi http://www.retran.com/beej/sockaddr_inman.html . In genere si guarda il sa_family e quindi si esegue il cast sulla struttura di indirizzo specifica della famiglia di indirizzi appropriata.

TCP e UDP non hanno indirizzi specifici come tali, ma il livello IP ha diverse dimensioni di indirizzo per IPv4 e IPv6.

Guarda anche: 

19
Len Holgate

L'ho scoperto quando ho provato a duplicare il metodo jnetpcap getHardwareAddress () in C/C++. L'indirizzo MAC è contenuto quando sa_family è 17 (0x11, AF_PACKET), nei byte 10-15.

0
Jerry Miller