【问题标题】:Easiest way to get MAC address from a (non-local) IP address in IPv4从 IPv4 中的(非本地)IP 地址获取 MAC 地址的最简单方法
【发布时间】:2011-07-15 06:57:13
【问题描述】:

有没有一种简单的方法来获取通过 TCP/IPv4 套接字连接到我的应用程序的机器的 MAC 地址?

或者更笼统地说:

如果我有 IP 地址,在 IPv4 中获取相应 MAC 地址的最佳方法是什么?

【问题讨论】:

标签: c# windows networking ip-address mac-address


【解决方案1】:

MAC 地址仅用于下一跳。这基本上意味着客户端的原始 MAC 地址在第一跳后将不可见。一般来说,如果您与客户端不在同一物理网段上,则无法获取 IP 并获取 MAC(反之亦然)。

【讨论】:

  • 谢谢!我差点忘了!但幸运的是,客户端总是在同一个网络上!
【解决方案2】:

保存该信息是 ARP 表的工作。最好的办法是从那里读出来。

您可以考虑阅读Query ARP cache to get MAC ID 的答案。提问者使用的是 Java,否则它与您的问题相同。

【讨论】:

  • @John Saunders - 但这就是他所能做的。
  • @T.E.D.这是他能做的一切,但这不是他想做做的,所以答案是,“你不能做你想做的事”。
  • +1 感谢 T.E.D. - 我会尝试一下,也许会发布一些不错的代码
  • 我在他的问题中看不到任何暗示他在问我,“我如何获取互联网上所有内容的 MAC 地址”?他似乎同意...
  • @T.E.D. : 试过一次,但只导致 OutOfMemory-Exception ;-)
【解决方案3】:

如果没有其他网络上的某些东西(或客户端本身),您就无法做到。

MAC 地址用于OSI model for networking 的第二层,即数据链路层。 MAC 特定于以太网。当您访问 Internet 时,会使用 IP 地址。并非所有连接到 Internet 的设备都在较低层使用以太网。

除了IP之外,还有其他协议可以使用。

基本上,您的计算机只知道其物理网段上的内容。如果它必须出去做其他事情,它只知道到达那里的网关的 MAC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2011-01-04
    相关资源
    最近更新 更多