Kolejność wysyłania danych „Pole kontroli ramki” ramki 802.11?

Poniżej znajduje się format bitowy pola FC dla danych QoS:

00|01|0001  01000010

Pierwsze 2 bity reprezentują wersję, następny typ 2 bitów, następny podtyp 4 bitów, z ToDS = 0, FromDS = 1, Bit ochrony = 1.

Więc w jakiej kolejności powyższe dane są przesyłane przez interfejs w powietrzu? (tj. od lewej do prawej lub od prawej do lewej)

Widzę wireshark łapiący dane jako „8842„(w ostatnim segmencie, gdzie pokazuje surowe dane pakietowe).

Ale jeśli napiszę następujący kod, aby wydrukować dane pola FC:

struct mgmt_header_t {
    u_int16_t    fc;          /* 2 bytes */
    u_int16_t    duration;    /* 2 bytes */
    u_int8_t     addr1[6];    /* 6 bytes */  
    u_int8_t     addr2[6];    /* 6 bytes */  
    u_int8_t     addr3[6];    /* 6 bytes */  
    u_int16_t    seq_ctrl;    /* 2 bytes */
};
void my_callback(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
    int radiotapheader_length = (unsigned short int)(*(packet+2));
    struct mgmt_header_t *mac_header = (struct mgmt_header_t *)  (packet+radiotapheader_length);
    printf("FC = %X\n", mac_header->fc);
}

Dane wyjściowe to:

FC = 4288

Moje drugie pytanie brzmi: czy nie powinno to być drukowane8842 zamiast4288?

Aktualizacja: Aktualizuję to pytanie, aby mieć większą jasność co do moich wątpliwości.

Powiedzmy, że chcę wysłać pakiet danych QoS, którego pole FC ma następujący format:

00|01|0001  01000010

Więc powinienem napisać:

mac_header->fc = 0x1142 /* value if read from left to right */

Lub

mac_header->fc = 0x4211

Lub

mac_header->fc = 0x4288 /* value if read from right to left */

Lub

mac_header->fc = 0x8842

Mój jest małą maszyną endian.

questionAnswers(3)

yourAnswerToTheQuestion