Networking Windows 7或Vista TCP行为更改

Networking Windows 7或Vista TCP行为更改,networking,windows-7,tcp,windows-vista,Networking,Windows 7,Tcp,Windows Vista,各种分辨率 显示此问题的客户端计算机已安装Trend Micro Security。此安全套件将服务或驱动程序放置在系统中每个网络适配器的顶部。一旦这个遗留应用程序重新开始工作,我就不再费心进一步调试了 更新1 我在Win7上禁用了TCP窗口缩放自动调整 在Windows 7上,如果我拔下直接连接到服务器的以太网电缆,断开大约5秒钟后就会发生,但客户端进程崩溃。服务器上的netstat向客户端报告两个不再有效的TCP连接,因为客户端进程没有正常关闭连接 在物理断开连接后,将服务器置于这种奇怪的状

各种分辨率

显示此问题的客户端计算机已安装Trend Micro Security。此安全套件将服务或驱动程序放置在系统中每个网络适配器的顶部。一旦这个遗留应用程序重新开始工作,我就不再费心进一步调试了

更新1

我在Win7上禁用了TCP窗口缩放自动调整

在Windows 7上,如果我拔下直接连接到服务器的以太网电缆,断开大约5秒钟后就会发生,但客户端进程崩溃。服务器上的netstat向客户端报告两个不再有效的TCP连接,因为客户端进程没有正常关闭连接

在物理断开连接后,将服务器置于这种奇怪的状态后,如果我重新启动客户端进程,它将在连接到服务器时挂起(如原文所述)

如果我在XP端执行物理断开连接,断开连接的速度会比在Win7上更快。XP上的某些保持活动的值或行为是不同的。虽然ssh已经停止(通过Putty),但是ssh连接在XP上的终止速度也比在Win7上快

原创

我有一个传统的TCP客户机/服务器应用程序,只有当客户机是Windows 7计算机时,它才会使服务器出错

服务器是运行2.6.11的嵌入式Linux

Windows 7客户端连接一段时间后,最终会进入一种状态,在这种状态下,客户端会在一两秒钟后断开连接

一旦服务器处于此状态,如果我立即连接Windows XP客户端,则XP客户端也无法连接

我无法通过单独连接XP客户机使服务器进入错误状态

我想知道从Vista或Windows 7开始对TCP/IP堆栈做了哪些更改,以便更好地调试遗留代码


我还想知道我可以在Linux服务器上运行哪些命令来更好地帮助我理解连接失败的原因。

也许你能做的最好的事情是在Linux下启动
tcpdump
wireshark
,并分析Windows XP和Windows 7发送的TCP SYN。Wireshark允许您一点一点地了解发送的TCP选项。。。例如,这是您从debian lenny box创建TCP连接时看到的:

Transmission Control Protocol, Src Port: 58456 (58456), Dst Port: 23 (23), Seq: 0, Len: 0
    Source port: 58456 (58456)
    Destination port: 23 (23)
    Sequence number: 0    (relative sequence number)
    Header length: 40 bytes
    Flags: 0x02 (SYN)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...0 .... = Acknowledgment: Not set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..1. = Syn: Set
        .... ...0 = Fin: Not set
    Window size: 5840
    Checksum: 0x8b77 [correct]
        [Good Checksum: True]
        [Bad Checksum: False]
    Options: (20 bytes)
        Maximum segment size: 1460 bytes
        SACK permitted
        Timestamps: TSval 136991740, TSecr 0
        NOP
        Window scale: 6 (multiply by 64)
我的怀疑是,您将看到RFC1323窗口缩放的差异,但我手头没有XP机器来验证这一点

在这个回答中,我给出了如何在linux下分析TCP连接的详细回答。。。
我还怀疑存在窗口缩放问题。我现在找不到链接,但当Vista第一次出现时,有人抱怨说某些路由器出了问题(我记得贝尔金斯)。他们将其归结为Vista(以及Windows7)默认更改的一个窗口大小的问题。路由器会挂断,需要每隔几分钟重置一次

您可以发出一些命令来关闭窗口缩放,看看问题是否消失。

编辑:


尝试在windows 7上禁用IPv6。关于如何做到这一点。对于IPv4,它的作用应该与windows XP相同。在两个系统上加载wireshark并比较差异

谢谢您的准确命令。我试过了,但问题仍然存在。那么它可能与窗口缩放无关。
netsh interface tcp set global autotuninglevel=disabled