Как я могу получить MAC-адрес из HTTP-запроса? - PullRequest
25 голосов
/ 22 июля 2010

Может ли кто-нибудь дать мне несколько советов по выбору MAC-адреса пользователя из HTTP-запроса?

Пользователи будут вне моей сети.

Ответы [ 3 ]

40 голосов
/ 22 июля 2010

Это зависит от настроек вашей сети.Но, вероятно, нет.

Вот краткое обновление по Ethernet и IP.MAC-адрес является уникальным адресом сетевой карты.Он используется для определения того, для какого пользователя в сегменте сети пакет.Вы можете использовать ARP, чтобы получить MAC-адрес для IP-адреса. Но это работает, как и ожидалось, только если вы находитесь в одном сегменте сети .

Итак, вопрос в том, что такое сегмент сети?Это зависит от технологии, которую вы используете, но вот общие случаи.Вся беспроводная сеть является сетевым сегментом.Каждый пользователь в сети может общаться через Ethernet с любым другим пользователем.В проводных сетях это зависит от аппаратного обеспечения.Если у вас старый добрый BNC или концентратор, у вас есть один сегмент сети со всеми видами использования.Снова каждый пользователь может общаться с любым другим.С коммутатором в сети сегмент сети - это только кабель, соединяющий вас с коммутатором.Здесь вы можете общаться только с коммутатором через Ethernet .Каждому другому пользователю нужен как минимум IP-адрес.

Жаль, что в большинстве ситуаций с HTTP, основанным на TCP / IP, вы на 99,99% никогда не находитесь в одном сегменте сети с вашим пользователем.Вы можете использовать ARP, но получите только MAC-адрес первого прыжка.Лучше, в зависимости от вашего оборудования, вы можете даже не быть в IP-сети, основанной на Ethernet;Банкомат например ...

2 голосов
/ 22 июля 2010

Я не думаю, что есть способ сделать это в ASP.NET.
MAC - это свойство пакета TCP, а на уровне HTTP нет пакетов или MAC (например, один HTTPзапрос может быть собран из нескольких пакетов TCP).

Вы можете попробовать использовать анализатор пакетов (например, WireShark) для захвата пакетов TCP, а затем проанализировать их для извлечения MAC-адресов и сопоставить их с запросами HTTP.

В любом случае, вы не получите никаких полезных данных, если пользователь не находится в том же сегменте сети, что и ваш сервер.

UPD.Как было отмечено в комментариях, я перепутал сетевые слои.MAC-адрес является свойством фрейма Ethernet , а не пакета TCP.
Однако вывод все еще верен.

0 голосов
/ 22 июля 2010

Это невозможно, если только вы не собираетесь создавать компонент ActiveX, в этом случае он будет работать только в IE.

...