解决一个错误封禁的问题的过程和思路 - Go语言中文社区

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


遇到一个问题:

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

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掉了

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/sjx1989/article/details/48339985
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-04 16:45:33
  • 阅读 ( 905 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢