36

有人可以给我一些关于从 HTTP 请求中获取用户 MAC 地址的指示吗?

用户将来自我的网络之外。

4

3 回答 3

53

这取决于您的网络设置。但可能没有。

这是关于以太网和 IP 的简短复习。MAC地址是网卡的唯一地址。用于识别报文是针对该网段的哪个用户的。您可以使用 ARP 获取 IP 地址的 MAC 地址。但这只有在您位于同一网段时才能按预期工作

那么问题来了,什么是网段?这取决于您使用的技术,但这里是常见的情况。整个无线网络就是一个网段。网络上的每个用户都可以通过以太网与其他每个用户交谈。在基于有线的网络上,这取决于硬件。如果您有良好的旧 BNC 或集线器,那么您将拥有一个具有所有用途的网段。同样,每个用户都可以与任何其他用户交谈。对于网络中的交换机,网段只是将您连接到交换机的电缆。在这里,您只能通过以太网与交换机通话。每个其他用户至少需要 IP。

Too bad that most situations with HTTP, which builds on TCP/IP, you are 99.99% never in the same network segment as your user. You can use ARP, but will only get the MAC address of the first hop. It get's better, depending on your hardware, you may not even be on an IP network that is based on Ethernet; ATM for example...

于 2010-07-22T13:39:29.737 回答
2

我认为在 ASP.NET 中没有办法做到这一点。
MAC 是 TCP 数据包的属性,在 HTTP 级别上没有数据包或 MAC(例如,单个 HTTP 请求可能由多个 TCP 数据包组合而成)。

您可以尝试使用数据包嗅探器(如 WireShark)来捕获 TCP 数据包,然后分析它们以提取 MAC 并将它们映射到 HTTP 请求。

无论如何,除非用户与您的服务器在同一网段,否则您将不会获得任何有用的数据。

UPD。正如评论中所指出的,我混合了网络层。MAC 地址是以太网帧的属性,而不是 TCP 数据包。
然而,结论仍然是正确的。

于 2010-07-22T13:20:38.663 回答
0

这是不可能的,除非您打算创建一个 ActiveX 组件,在这种情况下它只能在 IE 上运行。

于 2010-07-22T13:08:50.093 回答