¿Cómo identifica los marcos UDP que faltan en un disector de Wireshark personalizado?Disector de Wireshark: ¿cómo identificar las tramas UDP perdidas?
He escrito un disector personalizado para el CQS feed (reference page). Uno de nuestros servidores se abre al recibir este feed. Según Wireshark, algunos marcos UDP nunca se reciben. Sé que los marcos fueron enviados porque todos nuestros otros servidores están libres de huecos.
Un marco CQS consiste en varios mensajes, cada uno con su propio número de secuencia. Mi disector personalizada proporciona los siguientes datos para Wireshark:
cqs.frame_gaps - the number of gaps within a UDP frame (always zero)
cqs.frame_first_seq - the first sequence number in a UDP frame
cqs.frame_expected_seq - the first sequence number expected in the next UDP frame
cqs.frame_msg_count - the number of messages in this UDP frame
Y estoy mostrando cada uno de estos valores en las columnas personalizadas, como se muestra en esta captura de pantalla: wireshark screenshot http://img692.imageshack.us/img692/9484/wiresharkcqs.jpg
He intentado añadir código a mi disector que simplemente guarda el último número de secuencia procesada (como un estático local) y marca los espacios vacíos cuando el disector procesa un marco donde current_sequence != (previous_sequence + 1)
. Esto no funcionó porque el disector se puede llamar en orden de acceso aleatorio, dependiendo de dónde haga clic en la GUI. Entonces puede procesar el fotograma 10, luego el fotograma 15, luego el fotograma 11, etc.
¿Hay alguna forma de que mi disector sepa si el marco que venía antes (o el que sigue) falta?
El disector está escrito en C.
(Véase también una companion post on serverfault.com)
No he tocado esto en mucho tiempo, pero sospecho que esta es la respuesta. No me di cuenta de que los paquetes fueron disecados dos veces. –