解决一个错误封禁的问题的过程和思路
2015-09-10 10:40
190 查看
遇到一个问题:
网关有应用封禁功能,在测试的时候,发现某个封禁使正常的功能受到了影响,需要找到是哪个包躺枪了。
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掉了
网关有应用封禁功能,在测试的时候,发现某个封禁使正常的功能受到了影响,需要找到是哪个包躺枪了。
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掉了
相关文章推荐
- ssh连接超慢解决
- 【Unity3D】3D角色换装++ Advance
- eclipse设置maven加载国内镜像
- 求一个数阶乘的位数
- mysql数据库MyISAM与InnoDB比较与选择
- 专访Tiny框架创始人悠然:好的软件设计是“品”出来的
- 大小端字节序
- 后缀表达式 转 表达式树
- 2.Ionic 环境搭建(ios创建环境运行)
- 通用List查询
- 【Unity3d】3d角色换装实现原理及步骤
- iPhone开发之导航控制器的预习——UINavigationController导航控制器的学习
- Android HttpURLConnection.getContentLength() 等于 -1
- 学习STL,实现一个单链表的迭代器
- UIViewController生命周期
- Hibernate annotations
- jquery validate验证插件
- HTML5的崛起之路
- HDU 5430 Reflect
- 【1】基于TQ2440的MP3设计——【4、U-Boot 移植与改写】