TCP/IP の再送タイムアウトの最大値を変更する方法

適用対象: Windows 7 ProfessionalWindows 7 UltimateWindows 7 Enterprise

概要


発信セグメントが IP に渡されるたびに、TCP は再送タイマーを開始します。このタイマーがタイムアウトになる前に、特定のセグメント内のデータに対して受信確認を受信しなかった場合、その後、このセグメントは TcpMaxDataRetransmissions 値で指定された回数まで再送されます。このパラメーターの既定値は 5 です。

TCP 接続が確立されたときに、再送タイマーは 3 秒に初期化されます。ただし、このタイマーは、RFC793 に記載されているように、SRTT (Smoothed Round Trip Time) の計算を使用して接続の特性に合わせて動的に調整されます。特定のセグメントが再送されるたびに、その後、そのセグメントに対するタイマーは 2 倍になります。TCP は、このアルゴリズムを使用して、特定の接続で通常生じる遅延に応じた調整を自動的に行います。遅延の大きいリンク上の TCP 接続は、遅延の小さいリンク上の TCP 接続よりもタイムアウトになるまでの時間がはるかに長くなります。

既定では、再送タイマーが 240 秒になると、再送される必要があるすべてのセグメントの再送に対してその値が使用されます。これが、クライアントが低速リンクでタイムアウトするまでに時間がかかる原因となる可能性があります。

Windows 2000 の最新の Service Pack を入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

260910 最新の Windows 2000 Service Pack の入手方法

詳細


重要: このセクション、方法、またはタスクには、レジストリの変更方法が記載されています。レジストリを誤って変更すると、深刻な問題が発生することがあります。レジストリを変更する際には十分に注意してください。万一に備えて、編集の前にレジストリをバックアップしてください。問題が発生した場合でも、レジストリを復元できます。レジストリのバックアップ方法および復元方法の詳細については、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

TcpMaxDataRetransmissions レジストリ値は、TCP で同じデータ セグメントの再送が何度行われたら、接続を中断するかを指定します。この値は既定では構成されませんが、値を入力して既定の再試行回数を変更することができます。

Windows 7、Windows 2008 R2、Windows 2008、Windows 2000、Windows Vista、Windows 2003、および Windows XP では、次のサブキーを変更します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

値の名前: TcpMaxDataRetransmissions
データの種類: REG_DWORD (数値)
有効範囲: 0 ~ 0xFFFFFFFF
既定値: 5
説明: このパラメーターは、接続を終了する前に、TCP が個別のデータ セグメント (接続セグメント以外) を再送する回数を制御します。再送タイムアウトは、接続で再送が連続して行われるごとに 2 倍になり、応答が再開された時点でリセットされます。基本のタイムアウト値は、その接続で計測された往復時間によって動的に決定されます。

Windows には、初期再転送時間を制御する機構が用意されており、その後、再転送時間は動的に自動調節されます。初期再転送時間を変更するには、次のレジストリ キーの値を変更してください。

Windows 2003、Windows XP、および Windows 2000 では、次のサブキーを変更します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ID for Adapter

値の名前: TCPInitialRtt
データの種類: REG_DWORD
有効範囲: 300 ~ 65535 (10 進数のミリ秒数)
既定値: 0xBB8 (16 進数で表した 3000 ミリ秒)
説明: このパラメーターは、それぞれの新しい接続で TCP によって使用される初期再送タイムアウトを制御します。これは、接続要求 (SYN) と、各接続で送信される最初のデータ セグメントに適用されます。たとえば、"10 進数の値データ 5000" を指定すると、初期再転送時間は 5 秒に設定されます。

注: 初期タイムアウトの値は増やすことしかできません。値を減らす操作はサポートされていません。

Windows NT 4.0 では、次のキーを変更します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
値の名前:  InitialRttデータの種類:   REG_DWORD 有効範囲: 0-65535 (10 進数) 既定値:     0xBB8 (3000 10 進数) 
説明: このパラメーターは、それぞれの新しい接続で TCP によって使用される初期再送タイムアウトを制御します。これは、接続要求 (SYN) と、各接続で送信される最初のデータ セグメントに適用されます。

たとえば、"10 進数の値データ 5000" を指定すると、初期再転送時間は 5 秒に設定されます。

Windows Server 2008 R2 および Windows 7 の初期 RTO は、NetSH コマンド initialRTO を使用して制御できます。

必要条件および詳細については、以下のサポート技術情報番号をクリックしてください。
2472264 Windows Server 2008 R2 では、netsh コマンドを使用して一部の TCP 構成をカスタマイズできません。

再転送時間の詳細については、以下のサポート技術情報番号をクリックしてください。

232512 TCP/IP がパケットを通常よりも早く再送信することがある

223450 Windows NT に追加された TCP 初期再送タイマーの調整

関連情報については、Web で "RFC 793 (TCP Protocol Specification) " を検索し、セクション 3.7 を参照してください。