Windows'taki varsayılan TCP connect zaman aşımı hangisidir?


28

Windows'taki varsayılan TCP connect zaman aşımı hangisidir? Yapılandırmak için bir kayıt defteri anahtarı var mı yoksa dinamik olarak ayarlanmış mı?

Yanıtlar:


23

Windows'ta, ilk bağlantılar için varsayılan değer 72 saniye olmasına rağmen, kurulan bağlantılar için değer dinamiktir . Kayıt defteri ayarları bu makalede tanımlanmıştır:

http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services: \ Tcpip \ Parametreler

TcpInitialRTT : Yeni bağlantılar için başlangıç ​​zaman aşımı ayarlarının ne olduğunu tanımlar. Bir bağlantı zaman aşımına uğramadan önce her yeniden iletişinde bu sayı saniye olarak ikiye katlanır. Varsayılan olarak 3.

TcpMaxConnectRetransmissions : Bir bağlantıyı zaman aşımına uğratmadan önce yeniden gönderim sayısını tanımlar. Varsayılan olarak 5.


Bunları değiştirdikten sonra yalnızca belirli bir bağlantıyı yeniden kurmak gerekir, yeniden başlatmak gerekmez, değil mi? Windows 7'nin var olan bağlantıları kısa kesintilerde proaktif olarak durdurmasını engellemek için hangisinin değiştirilmesi gerektiğini biliyor musunuz? TcpMaxDataRetransmissions16'ya değiştirmeyi denedim (varsayılan değer 5 olmalı), ancak PuTTY'm hala kısa kesintilerde bağlantıları çok hızlı bir şekilde keserken, OS X ve aynı ağ da ssh onları oldukça iyi durumda tutuyor. superuser.com/questions/529511/...
cnst

3
Aslında, yeniden başlattıktan sonra işe yaradı! Windows'ta hiçbir şey değişmiyor! Yeniden başlatmanız gerekiyor gibi görünüyor ve kayıt defterini yeniden başlatmadan düzenlerseniz, ayarın eski veya yeni bağlantılar üzerinde bir etkisi olmaz!
Ocak'ta

9

Genellikle "connect timeout" bir ana bilgisayara ilk bağlantıyı oluşturmak için zaman aşımına karşılık gelir. Birçok sistemde (Windows 7 dahil), bu değer bir bağlantı kurulduktan sonra devam eden iletişim için zaman aşımından ayrı ayarlar kullanılarak yapılandırılır. Bu cevap, XP'den farklı olan Windows 7 için "ilk bağlantı" senaryosuna yöneliktir.

Windows 7 için, connect zaman aşımı ayarlarını değiştirmeyi desteklemek için iki düzeltme gerekir. Yeni ayarlar 'netsh' komutuyla yapılandırılabilir.

2786464 Düzeltme makalesinden:

Not Windows 7 ve Windows Server 2008 R2'de, TCP maksimum SYN yeniden iletimi (JH: MaxSynRetransmmission) değeri 2 olarak ayarlanmıştır ve yapılandırılamaz. İlk zaman aşımı değerinin 3 saniyelik sınırı nedeniyle (JH: InitialRTO), TCP üç yollu el sıkışma 21 saniyelik bir zaman dilimiyle sınırlıdır (3 saniye + 2 * 3 saniye + 4 * 3 saniye = 21 saniye ).

İlk düzeltme, yeniden deneme ayarının 2 varsayılan değerinden değiştirilmesine olanak sağlayan bir 'MaxSynRetransmissions' ayarı ekler. İkinci RTD değerini varsayılan değerlerden (evet, milisaniye cinsinden) değiştirmeye izin veren 'InitialRto' ayarı ekler. 3000ms'den kısa bir şey; arttırılamaz. Durumunuza bağlı olarak, yalnızca 'MaxSynRetransmissions' düzeltmesine ihtiyacınız olabilir.

Her iki düzeltmeyi yükleyin, yeniden başlatın ve ardından Yönetici olarak bir komut penceresi açın. Daha sonraki netsh komut çağrıları için daha fazla yeniden başlatma gerekmez.

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

Not: Windows telnet gerçek bağlantı zaman aşımı referansı için kullanılır. Ayrı ayrı yüklenmesi gerekir, ancak yapılması kolaydır.

Ek bağlantılar / şerefler:



1

Sorunuzu doğru anladıysam, atıfta bulunduğunuz:

TcpTimedWaitDelay

Bu anahtar, TCP / IP kapalı bir bağlantıyı açıp kaynaklarını yeniden kullanmadan önce geçmesi gereken süreyi belirler. Kapatma ve bırakma arasındaki bu aralık, TIME_WAIT durumu veya maksimum segment ömrü (2MSL) durumunun iki katı olarak bilinir. Bu süre zarfında, müşteri ile sunucu arasındaki bağlantıyı yeniden açmak, yeni bir bağlantı kurmaktan daha az masraflıdır. Bu girişin değerini azaltarak, TCP / IP kapalı bağlantıları daha hızlı serbest bırakabilir ve yeni bağlantılar için daha fazla kaynak sağlayabilir. Çalışan uygulamanın hızlı bırakılmasını, yeni bağlantıların oluşturulmasını veya TIME_WAIT durumundaki birden fazla bağlantının neden olduğu düşük verim nedeniyle bir ayarlama gerektiriyorsa bu parametreyi ayarlayın.

Tam anahtar: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay

Win2008 veya daha yenisini kullanıyorsanız, ayarını yapmamış olabilirsiniz, ancak varsayılan değer 240 ondalıktır (240 saniye veya 4 dakikadır). Anahtarı kayıt defterine farklı bir değerle ekleyebilirsiniz ve yeniden başlatmanın ardından geçerli olur (Windows Server 2008R2'de bir üretim ortamında test edilmiştir). Bu, modern ağların kalitesi göz önüne alındığında saçma bir değerdir.

Kelimenin tam anlamıyla bir aydan daha az bir süre önce, Windows'un bu sunucudaki her ağ hizmetini düzenli aralıklarla destekleyebildiği ve öldürdüğü maksimum bağlantı sayısını kullanan bir sunucuda çalışıyordum. Netstat'taki 16.000'den fazla bağlantı - a, RDP'yi sunucuya bile yönettiğinizde. Değeri 30 ondalık (30 saniye) olarak belirledik ve işte, sorun çözüldü - 10.000'den az eşzamanlı bağlantıdan (uygulama hızla açılıp kapandığından beri) ve iş çıkışı sorunu olmadı.


Windows Server 2012 ve 2016'da, anahtarın tamamı HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay
Vincent

Bu kayıt defteri düzenlemesinin yeniden başlatma gerektirdiğini varsaymak güvenli midir?
Vincent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.