【问题标题】:Why does Physical address from System call GetIpNetTable have 8 Byte (and not 6)?为什么系统调用 GetIpNetTable 的物理地址有 8 个字节(而不是 6 个)?
【发布时间】:2012-03-02 02:59:09
【问题描述】:

在我的最新项目中,我使用 GetIpNetTable 使用 .NET 从 C# 访问 Windows ARP-Table

我注意到,当我查看 MAC 地址时,我的条目的最后两个字节(7 和 8)一直在变化! 由于MAC地址通常只有6个字节,我想知道这两个字节包含什么......

见http://msdn.microsoft.com/en-us/library/cc704859%28v=prot.10%29.aspx

ypedef struct _MIB_IPNETROW {
  DWORD dwIndex;
  DWORD dwPhysAddrLen;
  BYTE bPhysAddr[8]; // WHY 8 BYTES??
  DWORD dwAddr;
  DWORD dwType;
} MIB_IPNETROW, 
 *PMIB_IPNETROW;

【问题讨论】:

    标签: c# windows mac-address arp


    【解决方案1】:

    由于链路层并不总是以太网,物理地址并不总是 MAC,因此也不总是 48 位。我想这个字段包含一个 EUI-64 地址,在以太网的情况下,它是通过将 FF-FF 插入 MAC EUI-48 地址的中间来生成的。

    【讨论】:

    • 嗯。当我执行 arp -a Windows 时,我向我显示了具有 6 个字节的相同 ARP 条目(在任何地方都没有 FF 字节)。只有 GetIpNetTable 有额外的字节......其中前 6 个等于来自 arp -a 的那些,其他的大部分是 0x00:0x00 但有时它们会改变......
    • 嗯,arp 是特定于以太网的,所以它应该知道 MAC,但结构看起来很通用。如果不是 EUI-64,那么可能只有 6 个字节是有效的,其他两个包含垃圾。
    猜你喜欢
    • 2015-09-29
    • 2020-09-30
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2018-11-02
    • 2023-03-28
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多