如何在自定义Wireshark解剖器中识别丢失的UDP帧?
我为CQS提要编写了一个自定义解剖器(参考页面).收到此Feed时,我们的服务器之一存在差距.根据Wireshark的说法,从未收到过一些UDP帧.我知道帧已经发送,因为我们所有其他服务器都没有间隙.
CQS帧由多个消息组成,每个消息具有其自己的序列号.我的自定义解剖器向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
我在自定义列中显示每个值,如此屏幕截图所示:wireshark screenshot http://img692.imageshack.us/img692/9484/wiresharkcqs.jpg
我尝试将代码添加到我的解剖器中,只需保存最后处理的序列号(作为本地静态),并在解剖器处理帧时标记间隙current_sequence != (previous_sequence + 1)
.这不起作用,因为可以按随机访问顺序调用解剖器,具体取决于您在GUI中单击的位置.所以你可以处理第10帧,然后是第15帧,然后第11帧,等等.
有没有办法让我的解剖器知道它前面的框架(或后面的框架)是否缺失?
解剖器用C语言编写.
(另请参阅serverfault.com上的配套文章)