Reihenfolge des Sendens von "Frame Control Field" -Daten eines 802.11-Frames?

Unten ist das Bitformat für das FC-Feld für QoS-Daten aufgeführt:

00|01|0001  01000010

Die ersten 2 Bits stellen die Version dar, der nächste 2-Bit-Typ, der nächste 4-Bit-Subtyp mit ToDS = 0, FromDS = 1, Protection-Bit = 1.

In welcher Reihenfolge werden die oben genannten Daten über die Funkschnittstelle gesendet? (d. h. von links nach rechts oder von rechts nach links)

Ich sehe, dass der Wireshark die Daten fängt als "8842"(im letzten Segment, in dem die Rohdaten des Pakets angezeigt werden).

Aber wenn ich den folgenden Code schreibe, um FC-Felddaten zu drucken:

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);
}

Die Ausgabe ist:

FC = 4288

Meine zweite Frage ist also, ob es nicht gedruckt werden soll8842 anstatt4288?

Aktualisieren: Ich aktualisiere die Frage, um klarer zu werden, woran ich zweifle.

Angenommen, ich möchte ein QoS-Datenpaket senden, dessen FC-Feld das folgende Format aufweist:

00|01|0001  01000010

Also muss ich schreiben:

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

Oder

mac_header->fc = 0x4211

Oder

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

Oder

mac_header->fc = 0x8842

Meins ist eine kleine Endian-Maschine.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage