记一个诡异的TCP挥手乱序问题
原文中文,约14800字,阅读约需36分钟。发表于: 。TCP 四次挥手是超经典的网络知识,但是网络中的异常状况千奇百怪,说不定会“偷袭”到标准流程的盲区。本文从技术视角,将排查过程记录下来,既是对整个过程的小小总结,将事情彻底完结掉,也是对 TCP 实现的一些细节的学习记录。
本文探讨了TCP连接关闭过程中的问题,通过抓包分析和状态转移监控,确定问题出现在server对乱序的ack和fin包的处理上。经过内核源码分析,发现问题可能出现在对ack的检查上,最终通过修改内核代码验证了假设,确认了问题原因。同时,文章也解释了close()和shutdown()接口的区别,以及server在收到ack后立刻转移为TIMEWAIT状态的原因。