【问题标题】:The uniqueness of MAC addressesMAC地址的唯一性
【发布时间】:2012-06-04 10:01:03
【问题描述】:

看着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# 代码。)

【问题讨论】:

    标签: c#-2.0


    【解决方案1】:

    这仅适用于同一网络。

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

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

    您可以找到进行传出 NAT 的远程计算机的公共 IP 地址,但再一次,可能有多个设备从路由器后面连接,这将限制此方法的实用性,这意味着需要查看 IP 数据包,我不知道您如何从 Web 服务器执行此操作(可能不能?)。

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

    (顺便说一句,Mac 地址总是唯一的(好吧,你偶尔可以找到一个重复使用的 MAC,但它非常罕见,或者至少需要用于网络工作!),这就是它们的目的,只是没有多大帮助在这种情况下,如果您不在同一个网络上)

    【讨论】:

      【解决方案2】:

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

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

      但是:有一些方法可以操纵您的 MAC 地址,而且在某些情况下人们会这样做!例如,当您想进入一个仅限于某些 MAC 地址的网络时,您可以自己操作以匹配其中一个(如果您发现,哪些在白名单上)。由于我不知道您的 szenario 是什么(您想完成什么),所以我无法告诉您这是否与您相关。

      【讨论】:

      • 在我的例子中,我使用它加上 IP 作为任何给定用户的唯一标识符。用户可能是台式机、Windows、Mac、Linux,也可能使用各种手机。
      • @ashes 然后请注意,在许多情况下 IP 地址是动态的,并且可能会因来自一台计算机的多个请求而改变。用它来识别计算机是很困难的。通过 MAC,您可以识别(不是明确地)计算机的网络设备(可能有多个)。 IP 地址可能因多种原因而更改。
      • 好的。这不能回答我的问题,但是谢谢,这对我来说非常有用。假设静态 IP 绝对是一个错误。我猜 MAC 作为一个半唯一的就足够了。
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-01-20
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 2018-08-25
        • 1970-01-01
        相关资源
        最近更新 更多