MAC地址的唯一性

时间:2012-06-04 10:01:04

标签: c#-2.0

this related SO question,我不禁想知道MAC地址的唯一性。

MAC地址有多独特?

我正在使用它们半识别用户。我有一个网站,几乎所有设备(PC,Mac,iPhone,Android手机等)和任何操作系统的用户都可以点击通过HTTP请求。我使用IP地址和MAC地址的组合来识别唯一用户。

我认为可能存在以下情况:

  • 设备没有MAC地址(不太可能,当然,但无论如何)
  • 设备具有唯一的MAC地址
  • 设备具有多个唯一的MAC地址
  • 两个或更多设备具有相同的MAC地址

前三种情况是唯一的(第三种情况因为我只需要一个唯一的MAC地址)。对于第四种情况,这有多大可能?

那就是:给定100个随机用户(对于任何Windows操作系统可能是Windows用户),我可以期望有多少人拥有相同的MAC地址?通常是因为MAC地址的长度有限吗?或者它是否依赖于某种有目的的配置更改(MAC地址欺骗)?

我很好,MAC地址是半独特的,我只想清楚如何解释数据。

(我在针对.NET 2.0的链接问题中使用针对.NET 2.0的C#代码。)

3 个答案:

答案 0 :(得分:3)

这只适用于同一网络。

使用ARP在本地解析MAC地址,以便在硬件级别路由本地数据包。 ARP不是可路由的协议,不能跨子网解决。

如果您的网络服务器位于具有端口映射的路由器后面,并且所有传入的流量来自该路由器,则每个连接似乎都来自路由器的MAC地址,您将不会“看到”MAC原始机器的地址,除非你能以某种方式通过网页拿起它(我不是网络天才所以不要问我那个,但我猜你需要在客户端一些繁重的工作用Java或其他一些活动组件来查询本地机器,更容易使用cookie)

您可以找到发生NAT的远程计算机的公共IP地址,但是再一次,可能有多个设备从路由器后面连接,这将限制此方法的有用性,这意味着需要查看IP数据包,我不知道你怎么能从网络服务器上做到这一点(可能不能?)。

无论如何,这就是Cookie的用途,这是一种在远程计算机上留下标识符的方法,以便您可以看到流量来自何处。如果人们不接受cookie,除非你开始变得非常有创意,否则你将无法唯一地识别它们。

(BTW Mac地址总是独一无二的(好吧,你偶尔可以找到一个重用的MAC,但它非常罕见,或者至少需要网络才能工作!),这就是他们的目的,它只是没什么帮助在这种情况下,如果你不在同一个网络上)

答案 1 :(得分:1)

  

100个随机用户(可能是任何Windows操作系统的Windows用户),有多少   他们可以期望拥有相同的MAC地址吗?

零。当他们在同一个网络中时,他们无法与相同的MAC地址通信,因为以太网使用它们来查找计算机。它们漂亮独特。网卡生产商可获得他们可能分配给其产品的地址范围。

但是:有很多方法可以操纵你的MAC地址,有些人会这样做!例如,当您想要进入仅限某些MAC地址的网络时,您可以操纵自己的网络以匹配其中一个(如果您发现,哪些是在白名单中)。既然我不知道,你的szenario是什么,(你想要完成什么),我不能告诉你这是否与你有关。

答案 2 :(得分:0)

您只需要了解MAC地址(可以更改)与硬件标识符之间的区别[确切地说是您的网络接口控制器](由制造商永久分配)。

MAC地址是设备连接到互联网(通过rooter或交换机)时的名称。您可以更改MAC地址,但默认,此ID使用网络接口控制器(NIC)制造商分配的标识符(例如您的Wifi antena)

例子:我使用相同的MAC地址更改了我的两台计算机的MAC地址:00:01:02:03:04:06当连接到同一个路由器时,我的计算机似乎是相同的,但是它们的wifi天线的标识符保持不变且不同。