Порядок отправки «Frame Control field» данных кадра 802.11?

Ниже приведен битовый формат для поля FC для данных QoS:

00|01|0001  01000010

Первые 2 бита представляют версию, следующие 2 бита типа, следующие 4 бита подтипа, с ToDS = 0, FromDS = 1, защитный бит = 1.

Итак, в каком порядке вышеприведенные данные передаются через интерфейс в эфир? (т.е. слева направо или справа налево)

Я вижу, что проволочная акула перехватывает данные как & quot;8842& quot; (в последнем сегменте, где отображаются необработанные пакетные данные).

Но если я напишу следующий код для печати данных поля 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);
}

Выход:

FC = 4288

Таким образом, мой второстепенный вопрос, не должен ли он печатать8842 вместо4288?

Update: Я обновляю вопрос, чтобы быть более ясным в отношении моих сомнений.

Скажем, я хочу отправить пакет данных QoS, чье поле FC имеет следующий формат:

00|01|0001  01000010

Итак, я должен написать:

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

Или же

mac_header->fc = 0x4211

Или же

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

Или же

mac_header->fc = 0x8842

Мой маленький порядковый номер.

Ответы на вопрос(3)

Ваш ответ на вопрос