HTTP リクエストからユーザーの MAC アドレスを取得する方法を教えてください。
ユーザーは私のネットワークの外から来ます。
ネットワークの設定によって異なります。しかし、おそらくいいえ。
ここでは、イーサネットと IP について簡単に復習します。MAC アドレスは、ネットワーク カード固有のアドレスです。これは、パケットがネットワーク セグメント上のどのユーザー向けであるかを識別するために使用されます。ARP を使用して、IP アドレスの MAC アドレスを取得できます。ただし、これは同じネットワーク セグメント上にいる場合にのみ期待どおりに機能します。
問題は、ネットワーク セグメントとは何かということです。使用するテクノロジーによって異なりますが、一般的なケースを次に示します。ワイヤレス ネットワーク全体がネットワーク セグメントです。ネットワーク上のすべてのユーザーは、イーサネットを介して他のすべてのユーザーと話すことができます。有線ベースのネットワークでは、これはハードウェアによって異なります。古き良き BNC またはハブを使用している場合は、1 つのネットワーク セグメントであらゆる用途に使用できます。繰り返しますが、各ユーザーは他のユーザーと話すことができます。ネットワーク内にスイッチがある場合、ネットワーク セグメントはスイッチに接続する唯一のケーブルです。ここでは、イーサネット経由でのみスイッチと通信できます。他のすべてのユーザーには、少なくとも IP が必要です。
残念なことに、TCP/IP 上に構築された HTTP のほとんどの状況では、99.99% がユーザーと同じネットワーク セグメントにいることはありません。ARP を使用できますが、最初のホップの MAC アドレスしか取得できません。ハードウェアによっては、イーサネットに基づく IP ネットワークに接続していない場合もあります。例えばATM...
ASP.NET でそれを行う方法はないと思います。
MAC は TCP パケットのプロパティであり、HTTP レベルではパケットや MAC はありません (たとえば、1 つの HTTP 要求が複数の TCP パケットから構成される場合があります)。
パケット スニファー (WireShark など) を使用して TCP パケットをキャプチャし、それらを分析して MAC を抽出し、それらを HTTP 要求にマップすることができます。
とにかく、ユーザーがサーバーと同じネットワークセグメントにいない限り、有用なデータは得られません.
アップデート。コメントで指摘されたように、ネットワーク層を混同しました。MAC アドレスはTCP パケットではなく、イーサネット フレームのプロパティです。
ただし、結論はまだ正しいです。
これは、ActiveX コンポーネントを作成するつもりでない限り、不可能です。その場合、IE でのみ動作します。