Windows中默认的TCP连接超时是哪个?


Answers:


23

在Windows中,该值对于已建立的连接而言是动态的,尽管初始连接的默认值为72秒。本文中定义了注册表设置:

http://technet.microsoft.com/zh-CN/library/cc739819(WS.10).aspx

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services:\ Tcpip \ Parameters

TcpInitialRTT:定义新连接的初始超时设置。每次重新传输之前,此数字(以秒为单位)都会加倍,直到超时为止。默认为3。

TcpMaxConnectRetransmissions:定义在超时之前重新传输的次数。默认为5。


更改这些名称后,只需重新建立给定的连接,而无需重新启动,对吗?您是否知道应该更改哪一个,以阻止Windows 7在短时间中断时主动断开现有连接?我曾尝试将其更改TcpMaxDataRetransmissions为16(默认值应为5),但是在短暂的中断中,我的PuTTY仍然会确实快速断开连接,而OS X和相同网络上的ssh可以使它们正常运行。superuser.com/questions/529511/...
CNST

3
实际上,它在我重新启动后仍然有效!Windows没有任何变化!似乎您必须重新启动,并且如果您仅编辑注册表而不重新启动,则该设置对旧连接或新连接都无效!
cnst 2013年

9

通常,“连接超时”是指用于创建与主机的初始连接的超时。在许多系统(包括Windows 7)中,使用连接超时后的单独设置来配置此值,以便在建立连接后继续进行通信。此答案解决了Windows 7与XP不同的“初始连接”方案。

对于Windows 7,需要两个修补程序才能支持调整连接超时设置。可以使用“ netsh”命令配置新设置。

从2786464修补程序文章:

注意在Windows 7和Windows Server 2008 R2中,TCP最大SYN重传(JH:MaxSynRetransmissions)值设置为2,并且不可配置。由于初始超时值(JH:InitialRTO)的3秒限制,TCP三向握手被限制为21秒的时间范围(3秒+ 2 * 3秒+ 4​​ * 3秒= 21秒)。

第一个修补程序添加了一个“ MaxSynRetransmissions”设置,该设置允许将重试设置从默认值2更改。第二个修补程序添加了“ InitialRto”设置,该设置允许将初始RTO值从默认值3000ms(是,毫秒)更改,但仅更改为短于3000毫秒的内容;它不能增加。根据您的情况,您可能仅需要“ MaxSynRetransmissions”修补程序。

安装两个修复程序,重新启动,然后以管理员身份打开命令窗口。后续的netsh命令调用不需要进一步的重新引导。

C:\Windows\system32>NET SESSION >nul 2>&1

C:\Windows\system32>IF %ERRORLEVEL% EQU 0 (ECHO Administrator PRIVILEGES Detected!) ELSE ( ECHO NOT AN ADMIN! )
Administrator PRIVILEGES Detected!

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:10:30.53
Connecting To 192.168.1.254...Could not open connection to the host, on port 23: Connect failed
14:10:51.60


C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=3
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 3
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:27:02.33
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
 Connect failed
14:27:47.41

C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=2
Ok.


C:\Windows\system32>netsh interface tcp set global InitialRto=1000
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 1000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.


C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:29:06.13
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
 Connect failed
14:29:13.20

注意:Windows telnet用于实际连接超时的参考。它需要单独安装,但是很容易做到。

其他链接/荣誉:



1

如果我正确理解了您的问题,则是指:

TcpTimedWaitDelay

此项确定TCP / IP释放封闭的连接并重用其资源之前必须经过的时间。关闭和释放之间的时间间隔称为TIME_WAIT状态或最大段生存期(2MSL)状态的两倍。在这段时间内,重新建立与客户端和服务器的连接比建立新连接要少。通过减小该条目的值,TCP / IP可以更快地释放关闭的连接,并为新的连接提供更多的资源。如果正在运行的应用程序需要快速释放,创建新连接或由于TIME_WAIT状态下的多个连接导致吞吐量低而进行调整,请调整此参数。

确切的密钥是:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay

如果使用的是Win2008或更高版本,则可能没有设置它,但是默认值为240小数(即240秒或4分钟)。您可以使用其他值将密钥添加到注册表中,并且该密钥将在重新启动后生效(在生产环境中的Windows Server 2008R2上进行了测试)。考虑到现代网络的质量,这是一个荒谬的高价值。

我有一个不到一个月前在服务器上运行的应用程序,该应用程序耗尽了Windows可以支持的最大连接数量,并定期杀死了该服务器上的所有网络服务。当您甚至设法将RDP连接到服务器时,netstat -a中的连接数超过16,000。我们将该值设置为30小数(30秒),瞧,问题已解决-少于10,000个并发连接(因为该应用程序正在快速打开和关闭它们)并且没有吞吐量问题。


在Windows Server 2012和2016中,确切的密钥似乎是HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay
Vincent

是否可以安全地假设此注册表编辑需要重新启动?
文森特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.