Порядок отправки «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
Мой маленький порядковый номер.