偶尔,windows / .net应用程序会忽略tcp fin标志

我遇到了一个我无法解决的网络问题.在几台运行 Windows 8.1并与linux http服务器tcp连接通信的计算机上,在Windows端悬挂而不是正确关闭.

响应后[碎片化为少数,由Windows确认,tcp包] linux服务器 – 10.14.11.59 – 发送一个包含FIN和ACK标志的tcp包.

这是由Windows机器确认的 – 10.14.10.195 – 数据包只设置了ACK标志.

在Windows机器上,linux重新发送带有FIN和ACK标志的数据包 – 由于某种原因仍然保持连接打开;具有RST标志的数据包永远不会被Windows机器发送.

如果发生这种情况,Windows应用程序会等待并最终超时.这种情况随机发生在10-50%的尝试之间.

两台机器之间的流量未经过滤;基于主机的防火墙已关闭.为了避免潜在的问题,我已经在Linux和Windows上禁用了tcp offloading.另外在Windows上运行以下内容并重新启动机器:

netsh int tcp set global chimney=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global RSS=disabled

数据包捕获:here.

任何想法将不胜感激!

我们发现在客户端计算机上运行的eset端点安全性是罪魁祸首.

禁用防火墙功能还不够;但卸载它完全解决了问题.

我的同事找到了类似问题的描述here;显然升级到最新版本的eset也解决了这个问题.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...