36

HTTP リクエストからユーザーの MAC アドレスを取得する方法を教えてください。

ユーザーは私のネットワークの外から来ます。

4

3 に答える 3

53

ネットワークの設定によって異なります。しかし、おそらくいいえ。

ここでは、イーサネットと IP について簡単に復習します。MAC アドレスは、ネットワーク カード固有のアドレスです。これは、パケットがネットワーク セグメント上のどのユーザー向けであるかを識別するために使用されます。ARP を使用して、IP アドレスの MAC アドレスを取得できます。ただし、これは同じネットワーク セグメント上にいる場合にのみ期待どおりに機能します

問題は、ネットワーク セグメントとは何かということです。使用するテクノロジーによって異なりますが、一般的なケースを次に示します。ワイヤレス ネットワーク全体がネットワーク セグメントです。ネットワーク上のすべてのユーザーは、イーサネットを介して他のすべてのユーザーと話すことができます。有線ベースのネットワークでは、これはハードウェアによって異なります。古き良き BNC またはハブを使用している場合は、1 つのネットワーク セグメントであらゆる用途に使用できます。繰り返しますが、各ユーザーは他のユーザーと話すことができます。ネットワーク内にスイッチがある場合、ネットワーク セグメントはスイッチに接続する唯一のケーブルです。ここでは、イーサネット経由でのみスイッチと通信できます。他のすべてのユーザーには、少なくとも IP が必要です。

残念なことに、TCP/IP 上に構築された HTTP のほとんどの状況では、99.99% がユーザーと同じネットワーク セグメントにいることはありません。ARP を使用できますが、最初のホップの MAC アドレスしか取得できません。ハードウェアによっては、イーサネットに基づく IP ネットワークに接続していない場合もあります。例えばATM...

于 2010-07-22T13:39:29.737 に答える
2

ASP.NET でそれを行う方法はないと思います。
MAC は TCP パケットのプロパティであり、HTTP レベルではパケットや MAC はありません (たとえば、1 つの HTTP 要求が複数の TCP パケットから構成される場合があります)。

パケット スニファー (WireShark など) を使用して TCP パケットをキャプチャし、それらを分析して MAC を抽出し、それらを HTTP 要求にマップすることができます。

とにかく、ユーザーがサーバーと同じネットワークセグメントにいない限り、有用なデータは得られません.

アップデート。コメントで指摘されたように、ネットワーク層を混同しました。MAC アドレスはTCP パケットではなく、イーサネット フレームのプロパティです。
ただし、結論はまだ正しいです。

于 2010-07-22T13:20:38.663 に答える
0

これは、ActiveX コンポーネントを作成するつもりでない限り、不可能です。その場合、IE でのみ動作します。

于 2010-07-22T13:08:50.093 に答える