7

重複の可能性:
管理者権限がなくても ping が機能するのはなぜですか?

TCP/IP Raw ソケットに関するMSDNの記事から:

... タイプ SOCK_RAW の一部のソケットは、多くの予期しないデータグラムを受信する可能性があることを理解することが重要です。たとえば、PING プログラムはタイプ SOCK_RAW のソケットを作成して、ICMP エコー要求を送信し、応答を受信することができます....

この一節は、ICMP ping を実行するには、Windows プラットフォームで raw ソケットを使用する必要があることを示唆しています。ただし、同じ記事には次のようにも書かれています。

注: タイプ SOCK_RAW のソケットを使用するには、管理者権限が必要です。raw ソケットを使用する Winsock アプリケーションを実行しているユーザーは、ローカル コンピューターの Administrators グループのメンバーである必要があります。そうでない場合、raw ソケット呼び出しはエラー コード WSAEACCES で失敗します。Windows Vista 以降では、ソケットの作成時に raw ソケットへのアクセスが強制されます。以前のバージョンの Windows では、他のソケット操作中に raw ソケットへのアクセスが強制されていました。

pingもちろん、他のホストの管理者になる必要はありません。それでping.exe、特別な扱いを受けますか、生のソケットを使用しますか、それとも他に何か不足していますか?

4

1 に答える 1

5

Uwe がコメントしたように、ping生のソケットは使用しません。IcmpSendEchoまたはIcmpSendEcho2と呼ばれるエコー要求を送信する特定の API を使用します。

Dependency Walkerを使用c:\windows\system32\ping.exeして自分で確認できます。

于 2012-07-11T18:39:22.037 に答える