免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2633 | 回复: 5
打印 上一主题 下一主题

[网络子系统] linux收到rst包,断链不干净 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-01 14:32 |只看该作者 |倒序浏览
问题描述:
1、客户端client运行在windows,服务端svr运行在linux.
2、client与svr正常建立链接1000个;
3、在运行正常后,ctl+c停掉client;
4、在client所在windows上,发现全部断链;在linux查看链接,发现还有部分链接显示是正常的:netstat 显示是ESTABLISHED,而且也的确没触发上层的断链流程;
5、在windows、linux同时抓包,可以发现windows发送的断链包是rst(不是fin);在linux下抓包,那些未断链端口,没有收到rst包;
问题:windows的client异常关闭,所有发送rst包;那么,linux有些rst包没有收到,导致linux没有完全断链;这个现象是正常的吗?有rst包丢弃机制?如果是正常的,怎么规避这个问题?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2016-03-01 16:29 |只看该作者
回复 1# knull

问题:windows的client异常关闭,所有发送rst包;那么,linux有些rst包没有收到,导致linux没有完全断链;这个现象是正常的吗?有rst包丢弃机制?如果是正常的,怎么规避这个问题?

1、这个不正常,linux收到rst包后会断掉连接的

2、但是不能完全依赖这个,因为可能存在client直接掉电没来得及发送rst的情况,可以通过keepalive机制来探测链接是否正常

   

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
3 [报告]
发表于 2016-03-01 16:40 |只看该作者
瀚海书香 发表于 2016-03-01 16:29
回复 1# knull

问题:windows的client异常关闭,所有发送rst包;那么,linux有些rst包没有收到,导致li ...


谢谢回复;
    我两端抓包,可以看到,client发送rst包了;linux抓包显示没收到rst包;
    linux没断链,就是因为没收到rst包

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
4 [报告]
发表于 2016-03-01 17:52 |只看该作者
windows发了1000个rst?
linux收到了多少rst?

论坛徽章:
2
技术图书徽章
日期:2014-04-15 16:30:27金牛座
日期:2014-06-06 16:20:49
5 [报告]
发表于 2016-03-02 10:35 |只看该作者
nswcfd 发表于 2016-03-01 17:52
windows发了1000个rst?
linux收到了多少rst?

谢谢回复;
这个情况是不一定的;有些时候,有100多个没断,有些时候,有10几个;(这个是通过netstat统计的,没法通过抓包来统计)
netstat查看某个未断链端口,然后到抓包中查看该端口,发现windows是发送rst包了,但是linux是没有收到rst包

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
6 [报告]
发表于 2016-03-02 12:35 |只看该作者
看起来是由于报文没有到达linux的原因?

可以在ctrl+c之前,在windows端和linux端同时开启tcpdump/wireshark,pcap-filter使用
tcp[tcpflags] & (tcp-rst) != 0
专门过滤tcp rst报文。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP