解决一个错误封禁的问题的过程和思路

来源:互联网 发布:java中并且符号 编辑:程序博客网 时间:2024/04/26 21:35

遇到一个问题:

网关有应用封禁功能,在测试的时候,发现某个封禁使正常的功能受到了影响,需要找到是哪个包躺枪了。

wireshark抓包之后,面对一堆包很头疼,不知道如何下手。而且异常显示的包也很多,黑底的很多。

后来,同事找到了,给我看,我才发现了规律,由于其中有包被丢掉了,会导致接收端接收tcp的时候有hole,这样导致的现象就是,会不断的有 Dup Ack发出去,提醒对方重发这个包。以这个为特征,就找到了源头的发。提示是:TCP Previous segment not captured.

我们来分析一下前后的序列号特征:

前一个包:seq 83371 ack 1945 len 1460 收到的回复包: seq 1945 ack 85231

然后到了hole的下一个包:seq 86691 ack 1945 len 1460

明显的,中间缺了一个 seq 是 85231的包。

后面的就不断的有Dup Ack的包发出来:seq 1945 ack 85231


也就是说,一直没有收到这个包。


现在知道有个包没有收到,但是不知道具体是哪个包。所以就抓了一个正常的包,把 seq是83371的包里面的应用数据找了十个字节,ctrl+F 搜索hex在正常的包里面。


找到了这个包,下一个包就是出事的那个包,就可以分析到底是哪个特征导致的包被drop掉了

0 0
原创粉丝点击