これが私がnetcatでこれを測定した方法です:
私のUnixホスト(Mac OS X Darwin)では、ファイアウォールはありません(または、Windowsファイアウォールでnetcat "nc"実行可能ファイルがUDPポートでリッスンできるWindowsマシンでは)、リモートクライアントから提供される可変遅延でUDPサーバーを実行します。
WINHOST=10.116.140.69
mkfifo f
nc -u -p 2222 $WINHOST 6666 < f | \
(while read secs; do for sec in $secs; do echo sleep $sec 1>&2; sleep $sec; echo SLEPT $sec; echo SLEPT $sec 1>&2; done; done) > f
私のWindowsホスト(Windows 7 Professional SP1 64ビット)であるWindowsファイアウォールでは、シェルとネットキャットを提供するためにcygwinがインストールされており、UDPクライアントをインタラクティブに実行します。
UNIXHOST=192.168.181.1
nc -u -p 6666 $UNIXHOST 2222
cygwinを使用する必要はありません。Windows netcatは正常に動作するはずですが、コマンドラインは異なる場合があります。
次に、そのクライアントに一連のテスト間隔を入力し、サーバーがスリープしてから応答するのを観察し、クライアントが応答を受け取るかどうかを観察します。これらは機能しました:1、2、10、60、120、180。その後、これは失敗しました:240。180から240の間の二分探索を続行します。
例1:クライアント側で、次のように入力します。
10
60
120
180
240
そして、最大180の要求/応答遅延が機能するのに対し、240は機能しないことに注意してください。
例2:クライアント側で、次のように入力します。
180
181
182
182
そして、最大181の要求/応答遅延が機能するのに対し、182は機能しないことに注意してください。
例3:クライアント側で、次のように入力します(すべて同じ行に):
180 180 180 181 181 181 182 182 182 183 183 183
これは、クライアントから1つのUDP要求を生成し、次に180、181、182、または183秒間隔で区切られた一連の応答を生成します。最大181の要求/応答遅延が機能し、さらに、最大181秒間隔での継続的な応答(新しい要求なし)も機能することが観察されました。
したがって、ファイアウォールホールには、非アクティブが初期応答の遅延であるか、その後の追加トラフィックの遅延であるかに関係なく、非アクティブタイマーがあります。
複数のマシンでの結果:
- そのWindows7Professional SP1 64ビットデスクトップでは、UDP応答ホールが181秒間開いています。2つのシステムは別々のネットワーク上にあるため、2つのシステム間のネットワークファイアウォールも測定している可能性がありますが、ファイアウォールではなくルーティングされていると思います。いずれにせよ、このシステムではWindowsファイアウォールの穴は少なくとも181秒です。
- 別のWindows7Professional SP1 64ビットラップトップ、同じネットワークセグメント(ファイアウォールが介在しないことは間違いありません)、UDP応答ホールは64秒間開いています。
さまざまなOSレベルとファイアウォール構成で他のWindowsマシンで同様の測定値を確認したいと思います。