关于用户掉线问题的原因分析

关于用户掉线问题的原因分析

吴旻

泰岩网络工作室

 

很少参加每周的三方会议。昨天因为需要我解释一个投诉,听了半场。其中争论最多,也是近期投诉最严重的问题,就是用户掉线问题。

市场上C/S架构的产品很多,掉线问题的原因也多种多样。根据我以前做内网安全产品及网络通信的开发经验,掉线问题的原因大体上分如下几类:

一、服务端或客户端本身的BUG

这类问题一般来说比较好解决,纯代码的问题,总是很容易通过调试方式解决。产品越成熟,这样的问题就会越少。当然不排除有些BUG隐藏的很深,很难发现。不过,多数情况通过模拟方式,都可以解决。比如,我们假设服务器可能有问题,那就再写一个简单的服务端程序,只简单模拟一下登录过程的几个协议,就可以找到问题的原因了。

二、网络硬件问题

这类问题有时也不好排查,因为网络的节点很多。比如某个交换机坏掉了,或者某根网线没插牢,造成时断时续。这类问题的特点是带有普遍性,一出问题,大家都出问题,或者一个软件出问题,别的软件也同时出问题。

三、防火墙问题

涉及到防火墙,事情的难度会变得很大。市场上的防火墙种类很多,而且都越来越倾向于“主动防御”,所以哪怕你没做什么“坏事”,也难保它“怀疑”你有可能做坏事而把你过滤掉。防火墙的策略多是“有罪推定”,它怀疑你有问题,你就是有问题。

四、适应性问题

这个事情是软件开发人员经常忽略掉的一个很严重很严重的大事情!KFC进入中国这么多年,也依然在努力寻求本地化的经营策略,比如提供有米饭的午餐。在美国很成功的只提供汉堡,到中国就必须考虑米饭在中国饮食习惯中的重要地位。

我们在机房的部署上,会选择多地多机房部署,这就是一种本地化策略,让用户就近连接,保障网络的稳定,避免跨网络带来的各种问题。但我们C/S架构的通信协议,一般都只有一套长相。也就是说,这些通信数据包工可能正常通过99%的网络防火墙,但没法保证所有产品的防火墙都不会过滤掉你的数据包。

从前,有些公司禁用IM即时聊天工具,后来,IM公司就提供了网络版的,因为多数公司都不会禁掉HTTP协议,聊天工具这个问题就这样解决掉了。

同理,我们的通信协议也可以是多种长相的。比如,有完全二进制的,也可以有长得像HTTP协议的,也可以有长得像FTP协议的,还可以有长得像POP3/SMTP协议的。后面几种协议,是大家公用的协议,所有的网络防火墙,一般都会放行的。

二进制协议,我们也可以有多种长相。难保我们的某个数据包,长得就像是病毒代码,但如果我们还能把它封装成几个不同长相的数据包,事情就好办多了。这种长相的数据包被过滤了,我们还会有其它长相的数据包可以通过。

我想,我们解决问题的思路还可以更宽广一些,手段也可以更灵活一些。但一切的前提还是要了解问题的根源在哪里,事情的本质是什么。仅就现象解决现象,我们很容易就陷入如下场景。

 

程序员:我们的代码没有问题,是网络的问题。

运维人员:我解决不了某某小区宽带防火墙问题,人家不理我们。

领导:难道这是我的问题?


你可能感兴趣的:(关于用户掉线问题的原因分析)