65536 個のポートすべてに対してさまざまなポート スキャンを実行すると、どれくらいの時間がかかりますか?

65536 個のポートすべてに対してさまざまなポート スキャンを実行すると、どれくらいの時間がかかりますか?

現在使用中Nマッププログラムの一部でローカル ネットワークをマップしたいのですが、すべてのポートでさまざまなポート スキャンを実行するのにどのくらいの時間がかかるのでしょうか?

ポートが開いているかどうかを確認するために送信されるタイムアウトと平均パケット サイズはどれくらいですか (確認のためにパケットが送信される場合)。また、これらとその他の要因に基づいてスキャンにかかる時間に相関関係はありますか。

これらをグラフで表し、できればこれらの結果もテストできればと思います。

一般的に、UDP ポート スキャンはコネクションレスであり、使用されるリソースがはるかに多いため、TCP よりも時間がかかることはわかっています。

答え1

リンク速度、デュプレックス、最小パケット サイズ、ラウンド トリップ時間、ターゲット ホストの待ち時間、侵入検知/防止システムの有無、特定のスキャン タイプに必要なラウンド トリップ数、リンクのビジー状態など、多くの要因が関係する可能性があります。

そこで、スキャナ マシンとターゲットが同じギガビット イーサネット上にあると仮定し、65536 ポートのスキャンにかかる理論上の最小時間を推定します。GigE は常に全二重で、最小フレーム サイズは 64 バイトです。必須のフレーム間ギャップを計算した後、最大フレーム レートは 1 秒あたり 1,488,000 最小サイズ フレームです。TCP Syns、Syn-Ack、(空の) Ack、Fins、および Rsts はすべて最小サイズ フレームです。現在使用している GigE では、RTT は 0.3 ミリ秒 (300 マイクロ秒) なので、ターゲット ホストは Syns に対して、同じ 0.3 ミリ秒の遅延内で Syn-Ack または Rst のいずれかで応答すると仮定します。さらに、どちらかで応答すると仮定します。つまり、任意のタイムアウトを待つ必要がある「フィルターされた」ポートは存在しないと仮定します。

したがって、すべてのポートにTCP Synsを送信するのにかかる時間は次のとおりです: 65,536 / 1,488,000 = 44ms

GigEは全二重なので、後続のSynが送信されると最初の応答が届き始めますが、最後のSynの送信と最後の応答の間に1RTT待つ必要があります。そのため、1RTT、つまり0.3msを追加して、合計で44.3ミリ秒

2 回の往復が必要なスキャンがあったとしても、すべてのネットワーク トラフィックは 1 秒未満で完了します。

ターゲット ホストが一部のポートの Syns に応答しない場合は、独自のアルゴリズムで「応答なし」タイムアウトを設定する時間を自分で選択する必要があります。ただし、これは RTT のように考えることができます。10 秒のタイムアウトを使用するとします。すべての Syns を 44 ミリ秒で送信することはできますが、そのポートから応答が返される可能性が低いと判断するには、最後の Syn の送信から 10 秒待つ必要がある場合があります。したがって、2^16 個のポートすべてが応答せず、タイムアウトが 10 秒の場合でも、合計時間は 44 ミリ秒 + 10 秒 = 10.044 秒になります。

関連情報