¿Orden de enviar los datos del "campo de control de cuadro" de un cuadro 802.11?
A continuación se muestra el formato de bits para el campo FC para datos de QoS:
00|01|0001 01000010
Los primeros 2 bits representan la versión, el siguiente tipo de 2 bits, el siguiente subtipo de 4 bits, con ToDS = 0, FromDS = 1, bit de protección = 1.
Entonces, ¿en qué orden se envían los datos anteriores a través de la interfaz en el aire? (es decir, de izquierda a derecha o de derecha a izquierda)
Veo el wirehark capturando los datos como "8842"(en el último segmento donde se muestran los datos de paquetes sin procesar).
Pero, si escribo el siguiente código para imprimir datos de campo 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);
}
La salida es:
FC = 4288
Así que mi pregunta secundaria es, ¿no debería imprimir8842 en lugar de4288?
Actualizar: Estoy actualizando la pregunta para aclarar cuál es mi duda.
Supongamos que deseo enviar un paquete de datos de QoS cuyo campo FC tenga el siguiente formato:
00|01|0001 01000010
Entonces, si tengo que escribir:
mac_header->fc = 0x1142 /* value if read from left to right */
O
mac_header->fc = 0x4211
O
mac_header->fc = 0x4288 /* value if read from right to left */
O
mac_header->fc = 0x8842
La mía es una pequeña máquina endiana.