¿Cómo puedo obtener una dirección MAC de una solicitud HTTP?

¿Puede alguien darme algunos consejos sobre cómo elegir la dirección MAC del usuario a partir de una solicitud HTTP?

Los usuarios serán de fuera de mi red.

Depende de la configuración de tu red. Pero probablemente no.

Aquí hay una breve actualización sobre Ethernet e IP. La dirección MAC es una dirección única de la tarjeta de red. Se usa para identificar para qué usuario en el segmento de red se encuentra un paquete. Puede usar ARP para obtener una dirección MAC para una dirección IP. Pero esto funciona como se espera solo si se encuentra en el mismo segmento de red .

Entonces la pregunta es, ¿qué es un segmento de red? Depende de la tecnología que use, pero aquí están los casos comunes. Una red inalámbrica completa es un segmento de red. Todos los usuarios de la red pueden hablar a través de Ethernet con cualquier otro usuario. En redes basadas en cables, esto depende del hardware. Si tiene un buen BNC o un concentrador, tiene un segmento de red con todos los usos. De nuevo, cada usuario puede hablar con cualquier otro. Con un interruptor en la red, un segmento de red es solo un cable que lo conecta al conmutador. Aquí solo puede hablar con el interruptor a través de Ethernet . Todos los demás usuarios necesitan al menos IP.

Lástima que la mayoría de las situaciones con HTTP, que se basa en TCP / IP, usted está 99.99% nunca en el mismo segmento de red que su usuario. Puede usar ARP, pero solo obtendrá la dirección MAC del primer salto. Es mejor, dependiendo de su hardware, es posible que ni siquiera esté en una red IP basada en Ethernet; Cajero automático, por ejemplo …

No creo que haya una forma de hacerlo en ASP.NET.
MAC es una propiedad de un paquete TCP, y en el nivel HTTP no hay paquetes o MAC (por ejemplo, una única solicitud HTTP puede ser ensamblada de varios paquetes TCP).

Podría intentar usar un detector de paquetes (como WireShark) para capturar paquetes TCP, y luego analizarlos para extraer los MAC y asignarlos a las solicitudes HTTP.

De todos modos, no obtendrá datos útiles a menos que el usuario esté en el mismo segmento de red que su servidor.

UPD. Como se señaló en los comentarios, mezclé las capas de red. La dirección MAC es una propiedad del marco Ethernet , no un paquete TCP.
La conclusión sigue siendo correcta, sin embargo.

Esto no es posible, a menos que tenga la intención de crear un componente ActiveX, en cuyo caso solo funcionará en IE.