飞信分析之三:断线的真相

http://hi.baidu.com/nathan2007/blog/item/ee7daecbc44f4ffd53664f59.html

 

飞信分析之三:断线的真相
2007年03月08日 22:31作者:nathan

飞信老是断线,这点互联网上很多用户都有提及。我待的地方就老断,一说是跟网络有关系,一说是飞信本身有问题。近一两天跟踪看了看,发现断得可真是恐怖,一天断20-30次的都有。可有一次在家通过ADSL上呢,好象又还好。难道是时间的关系?


但白天碰到的多次断线我感觉是服务器的问题,理由是通过Sniffer,我明确地看到了服务器端发过来的TCP RST的包,也就是说服务器对这个TCP连接做了CLOSE的操作。

让我们看看sniffer记录了什么,来看一次断线的记录(这是OmniPeek的PacketVisualizer Data):
.....
9451 12:46:48.661 > IP L= 40 TCP .A.... S= 4522 L= 0 10994=A W=64367 TCP Invalid Checksum
9452 12:46:51.181 << IP L= 119 TCP .AP... 4522=A L= 79 S= 10994 W=65402
9453 12:46:51.182 >> IP L= 115 TCP .AP... S= 4522 L= 75 11073=A W=64288 TCP Invalid Checksum
9454 12:46:51.343 < IP L= 40 TCP .A.... 4597=A L= 0 S= 11073 W=65327
9455 12:53:38.501 > IP L= 98 TCP .AP... S= 4597 L= 58 11073=A W=64288 TCP Invalid Checksum
9456 12:53:38.532 < IP L= 40 TCP ...R.. L= 0 S= 11073 W= 0

从记录中我们看到,12:53:38,客户机发了9455号包到服务器,而服务器回了一个RST包(9456号包),从TCP的序列号看,通信过程都是正常的,否则RST包的Sequence就不会是11073了。9455的包的内容是:
R fetion.com.cn SIP-C/2.0
F: 565248767
I: 1
Q: 4 R

这是一个向SIP Proxy Server注册的SIP请求。我猜测是客户端有几分钟没收到服务器的任何消息(通常服务器在不停地给客户端发presence消息),客户端就向服务器发起一个注册请求,这时服务器应该将所有用户列表向飞信的客户端返回,然而,服务器却回了一个字:滚!;) 然后,飞信就痛苦地开始了重新登录过程,然后你的好友就看到你又缓缓地从他屏幕的右下角慢慢地爬了上来,冤啊。


一个半天可以记录到10多次这样的断线,每次均是以如此方式结束:客户端发一个请求到服务器,服务器回以RST。是网络问题吗?我想应该不是,TCP的交互过程是正常的,MSN也是同时用TCP连着的,它也不断。我认为是飞信服务器的用户状态机处理有问题,莫名其妙地把活动的用户给干掉了。:)

飞信自己应该知道这种情况的啊,Fetion本身的日志文件中是这么记录的:
....
<Summary>通信层异常</Summary>
<Detail>System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
....


可怜的飞信。


类别:飞信协议分析 | | 添加到搜藏 | 分享到i贴吧 | 浏览(9890) | 评论 (3)

上一篇:Fetion分析之二:服务器地址从何... 下一篇:断线问题解决啦?

已有1人分享了这篇文章:fbabcd
Ta的转贴


最近读者:
li_ying8108 icejoywoo gaofeizhou_vip solar2ain 5tmusic singyueyang pen_xian myuxang


网友评论:
1 网友:spor 2008年03月21日 16:45 | 回复
平台有安全机制,达到阈值就会被踢下来。 飞信机器人/PC端及手机端协议,需合作联系qq:631352529


2 网友:TK 2008年04月02日 11:34 | 回复
说话人多,或者发送太快,也掉线,有没有解决的?


3
张博控 2009年09月28日 11:26 | 回复
除了发
R fetion.com.cn SIP-C/2.0
F: 565248767
I: 1
Q: 4 R
还要发
S fetion.com.cn SIP-C/2.0/r/n"
F: 111111111
I: 4
Q: 1 S
N: GetContactPermission
L: 1111

<args><permissions all="1" objects="all" /></args>

来维持在线状态。


另外:怎样切换在线状态?光SetPresence似乎没用哦

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值