💡
原文中文,约1500字,阅读约需4分钟。
📝
内容提要
最近测试发现,项目中的ProxySvr从DatStore模块下载数据偶现失败。通过抓包分析发现,直接原因是ProxySvr收到了RST包,导致下载数据失败。解决方法是将TCP连接改成短连接,并优化网络框架中的TCP连接处理。通过抓包分析连接的建立和释放过程来找到问题所在。
🎯
关键要点
- ProxySvr从DatStore模块下载数据偶现失败,错误码提示网络错误。
- 抓包分析显示ProxySvr收到RST包,导致下载失败。
- TCP连接建立需三次握手,断开需四次挥手,RST包产生的场景包括服务端口未监听、网络被拦截、socket提前关闭等。
- 通过Wireshark分析抓包文件,发现客户端未处理服务端的FIN请求,导致继续使用已关闭的TCP连接。
- ProxySvr发送OPTIONS请求时使用短连接,发送GET请求时使用长连接,导致连接处理异常。
- 解决方法是将TCP连接改为短连接,避免使用同一长连接处理不同请求。
- 网络框架应在收到FIN标识时及时关闭连接,并反馈异常日志。
- 应用层需考虑请求类型与连接策略,结合业务场景调整连接方式。
- 遇到网络连接异常时,优先通过抓包分析连接过程,找出问题原因。
➡️