免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xingplay
打印 上一主题 下一主题

服务器自动断开socket连接(问题已更新) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-09-15 16:37 |只看该作者
问题有了新发现,但仍然很疑惑

server好像是有一个超时断连机制,因此连接关闭的过程是正常的,现在的问题是为何在超时之前,client一直没有收到rsp msg

用ethereal抓了下包,发现在server端本来应该是iSNS协议的消息被解析成了TCP包

本来应该是iSNS msg的数据段,在ethereal中看到被解析成了TCP包的TCP segment data

这是为什么呢?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
12 [报告]
发表于 2009-09-15 18:11 |只看该作者
没看明白。做一次交互过程的抓包,贴上来。

论坛徽章:
0
13 [报告]
发表于 2009-09-15 20:41 |只看该作者
........ 看来俺的表达很有问题啊,现在身边没有测试环境,我再说一次大概情况吧:

从某client主机connect到一台开了iSNS服务的server(windows2008自带的iSNS server),连接成功后发送一条注册消息,并在该socket上调用recv()等待server的rsp消息

但client一直没有收到rsp,而是因为超时导致server主动关闭了socket

用ethereal在server上抓包,从数据包分析窗口看,ethereal把本该是iSNS注册消息的的数据包解析成了TCP包

换句话说,本来正确的协议解析是“ETHERNET:IP:TCP:ISNS”,但在ethereal中解析成了“ETHERNET:IP:TCP”,iSNS的数据段被挂在了TCP包的TCP segment data域下

好像ethereal是根据特定端口来判断TCP上一层的协议的,而我用ethereal解析其它iSNS软件发出的注册包则没有问题,这是怎么回事呢?

即使我的注册msg格式写错了,也应该是在TCP的上一层协议(即iSNS)中报错,而不是直接被当做TCP包的一部分吧?

而且从server的回复消息看,也是回的TCP ACK,而不是iSNS对应的rsp消息

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
14 [报告]
发表于 2009-09-15 21:58 |只看该作者
这个和Ethereal没有关系。他只是抓包而已。

另外我说的同网段试试,你测试过了吗。

论坛徽章:
0
15 [报告]
发表于 2009-09-15 22:05 |只看该作者
同网段试过了,一样的结果

我也觉得问题不在ethereal,但ethereal的解析是不是就反应了server端对数据包的解析?

即server认为自己收到的是一个普通TCP包,因此没有把其中iSNS协议的相关数据转发给上一层协议

如果是这样的话,那有什么原因会造成server解析不出TCP包中的上层协议数据呢?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
16 [报告]
发表于 2009-09-15 22:36 |只看该作者
不是的了。ETHEREAL只是各分析软件,他不能识别的数据包格式,不代表服务器也识别不了。譬如一些私有的协议ETHEREAL肯定识别不了。这个不要太关心,一个工具而已。

另外照你所说,就不是网络的问题了。是应用的问题。暂时不要从网络方面查了。从应用下手了。不是网络技术的范畴了。

论坛徽章:
0
17 [报告]
发表于 2009-09-15 23:16 |只看该作者
你说的可能性我之前也有考虑过,但看了server之后回的消息,是一条TCP ACK,而且查看其内容,也没有iSNS协议的数据段内容(如果有的话,client端的recv应该会收到东西,对吧?)

而且我已经验证过,ethereal是可以识别出iSNS协议的,所以我现在仍然觉得问题是出在server端没有正确的识别出正确的协议格式

另外明天有空我把抓包的结果贴上来

[ 本帖最后由 xingplay 于 2009-9-15 23:18 编辑 ]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
18 [报告]
发表于 2009-09-15 23:22 |只看该作者
哦。这些都和网络自身无关了。

论坛徽章:
0
19 [报告]
发表于 2009-09-16 09:24 |只看该作者
在server端抓的包,请见附件。

No.6消息就是我发送的iSNS消息,但没有得到正确解析,而且No.7回的也是TCP ACK

iSNS_log.txt.rar (2.22 KB, 下载次数: 10)

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
20 [报告]
发表于 2009-09-16 09:51 |只看该作者
说过了不是网络的问题了。发到对应的板块吧。

如果你确信ethereal能够识别该协议,而你的不能识别的话,哪么只能从程序代码方面入手了,看看那些字段置位错误。无能为力了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP