特定のポートがフィルタリングまたはファイアウォールされていることをどのように検出するかを知りたいので、nmapソースコードを読んでいました。私はcでソケットを使用した経験があり、単純なポートスキャナーを作成しました。これは簡単です-接続が成功するとポートが開き、そうでない場合は閉じられます(RSTが返されるため)。ただし、ファイアウォールで保護されたポートの場合、RST パケットが返されず、ポート スキャナーは永遠に「待機」します。
誰かがこのトピックの経験がある場合は、実際のスキャンとポート状態の決定が行われる nmap コードの部分を教えてください。または、少なくともこの問題に対処する利用可能な他のコードがあるかどうか教えてください。