今天接到工程人员一研发协助,由经过我们平台的TCP代理,数据10次有8次不通。经过抓包最终发现,平台与被代理服务器总是三次握手无法成功,抓包现象大概为:SYN---》SYN,ACK---》RST。开始手足无措,因为三次握手是内核负责完成的,不涉及到应用程序。随后测试平台的网络连接状况,却是正常的。又证明平台是好的,这时分析RST出来原因:当接受到SYN,ACK时,如果此时连接已被应用程序关闭,是不是会导致如上现象。
马上写一简单测试程序,发现正是如此,原因找到。再找程序相关代码bug,就轻松了。