WindowsのデフォルトのTCP接続タイムアウトはどれですか?


回答:


23

Windowsでは、初期接続のデフォルトは72秒ですが、確立された接続の値は動的です。レジストリ設定は、この記事で定義されています。

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

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

TcpInitialRTT:新しい接続の初期タイムアウト設定を定義します。この秒数は、接続がタイムアウトする前に再送信するたびに2倍になります。デフォルトは3です。

TcpMaxConnectRetransmissions:接続がタイムアウトするまでの再送信の数を定義します。デフォルトは5です。


これらを変更した後に特定の接続を再確立するだけで、再起動する必要はありませんか?Windows 7が短時間の停止で既存の接続をプロアクティブにドロップするのを防ぐために、どれを変更する必要があるか知っているでしょうか?私はTcpMaxDataRetransmissions16に変更しようとしました(デフォルトは5になるはずです)が、私のPuTTYは、短時間の停止でも接続を非常に高速にドロップしますが、OS Xおよび同じネットワーク上のsshはそれらを正常に保ちます。superuser.com/questions/529511/…–
cnst

3
実際に、再起動した後に機能しました!Windowsでは何も変わりません!再起動する必要があるようで、再起動せずにレジストリを編集するだけでは、古い接続でも新しい接続でも設定は効果がありません!
cnst

9

通常、「接続タイムアウト」は、ホストへの初期接続を作成するためのタイムアウトを指します。多くのシステム(Windows 7を含む)では、この値は、接続が確立された後の進行中の通信のタイムアウトとは別の設定を使用して構成されます。この回答は、XPとは異なるWindows 7の「初期接続」シナリオに対応しています。

Windows 7の場合、接続タイムアウト設定の調整をサポートするには2つの修正プログラムが必要です。新しい設定は、「netsh」コマンドで構成できます。

2786464ホットフィックス記事から:

注Windows 7およびWindows Server 2008 R2では、TCP最大SYN再送信(JH:MaxSynRetransmissions)値は2に設定されており、構成できません。初期タイムアウト値の3秒の制限(JH:InitialRTO)により、TCP 3ウェイハンドシェイクは21秒のタイムフレーム(3秒+ 2 * 3秒+ 4​​ * 3秒= 21秒)に制限されます)。

最初の修正プログラムは、再試行設定をデフォルト値の2から変更できる「MaxSynRetransmissions」設定を追加します。2番目は、初期RTO値をデフォルトの3000ms(yes、ミリ秒)から変更できる「InitialRto」設定を追加しますが、 3000msより短いもの; 増やすことはできません。状況によっては、「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が使用されます。個別にインストールする必要がありますが、簡単に実行できます。

追加リンク/賞賛:


2

TcpInitialRTTおよびTcpMaxConnectRetransmissionsは、VistaおよびWindows 2008に存在しない場合があります。このMicrosoft文書にはそれらが含まれていません。 http://download.microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc

これは、少なくともTcpInitialRTTがなくなったことを意味しますが、信頼性はわかりません。 http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE


1

私があなたの質問を正しく理解していれば、あなたは次のことを言っています:

TcpTimedWaitDelay

このキーは、TCP / IPが閉じられた接続を解放してそのリソースを再利用できるようになるまでに経過する必要がある時間を決定します。クローズとリリースの間のこの間隔は、TIME_WAIT状態または最大セグメント有効期間(2MSL)の2倍の状態として知られています。この間、クライアントとサーバーへの接続を再度開くと、新しい接続を確立するよりも費用がかかりません。このエントリの値を減らすことにより、TCP / IPは閉じられた接続をより速く解放し、新しい接続により多くのリソースを提供できます。実行中のアプリケーションが迅速なリリース、新しい接続の作成、またはTIME_WAIT状態の複数の接続によって引き起こされる低スループットのための調整を必要とする場合、このパラメーターを調整します。

正確なキーは次のとおりです。HKEY_LOCAL_MACHINE\ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay

Win2008以降を使用している場合は設定しなくてもかまいませんが、デフォルトは10進数で240(つまり、240秒または4分)です。別の値を使用してレジストリにキーを追加でき、再起動後に有効になります(運用環境のWindows Server 2008R2でテスト済み)。これは、最新のネットワークの品質を考えると、ばかばかしいほど高い価値です。

Windowsがサポートできる接続の最大数を使い果たし、サーバー上のすべてのネットワークサービスを定期的に停止するサーバー上で、文字通り1か月未満前にアプリケーションを実行していました。netstat -aで16,000以上の接続。サーバーへのRDPを管理する場合でも。値を10進数の30(30秒)に設定すると、問題は解決しました-同時接続が10,000未満(アプリが急速に開閉するため)で、スループットの問題はありません。


Windows Server 2012および2016では、正確なキーはHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay
Vincent

このレジストリの編集には再起動が必要であると想定しても安全ですか?
ビンセント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.