研究测试TCP断开和异常的各种情况,以便于分析网络应用(比如tconnd)断网的原因和场景,帮组分析和定位连接异常掉线的问题,并提供给TCP相关的开发测试人员作为参考。
各个游戏接入都存在一定的掉线问题,而且有的游戏项目的掉线比例还比较高,现在互娱自研游戏的网络接入基本上都用的是tconnd和ProtocalHandler组件(该组件请参考附件的《TSF4G_ProtocalHandler开发指导手册》),因此参与其掉线原因分析和研究。
在参与A项目的掉线问题研究分析过程中,tconnd增加了玩家每个连接的流水日志和ProtocalHandler增加了每个连接的Qos上报日志,通过这些日志记录了每一次连接的断开原因和相关统计数据,其中包括了连接异常断开时TCP的底层错误码。
通过对tconnd的流水日志和ProtocalHandler的Qos日志进行统计分析,发现连接异常断开时TCP的错误码大部分是“104: Connection reset by peer”(Linux下)或“10054: An existing connection was forcibly closed by the remote host”(Windows下),单纯从错误码本来来说,大家都明白是“网络被对端重置了”,但究竟什么情况下会导致这种情况呢?因此就对TCP的各种关闭情况做了进一步的测试研究。
本文深入研究TCP异常关闭的各种情况,涉及服务器只接收不发送消息、接收并回应消息的测试,分析网络应用断网原因,探讨TCP错误码如"104"和"10054"的产生条件。测试结果显示,异常关闭可能由客户端程序退出、忘记关闭Socket或程序崩溃导致,影响服务器接收和发送消息。通过改进客户端程序的崩溃问题,可显著降低游戏掉线率。
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



