MIB_IPNET_ROW2 结构 (netioapi.h)

MIB_IPNET_ROW2结构存储有关邻居 IP 地址的信息。

语法

typedef struct _MIB_IPNET_ROW2 {
  SOCKADDR_INET     Address;
  NET_IFINDEX       InterfaceIndex;
  NET_LUID          InterfaceLuid;
  UCHAR             PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
  ULONG             PhysicalAddressLength;
  NL_NEIGHBOR_STATE State;
  union {
    struct {
      BOOLEAN IsRouter : 1;
      BOOLEAN IsUnreachable : 1;
    };
    UCHAR Flags;
  };
  union {
    ULONG LastReachable;
    ULONG LastUnreachable;
  } ReachabilityTime;
} MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;

成员

Address

类型: SOCKADDR_INET

邻居 IP 地址。 此成员可以是 IPv6 地址或 IPv4 地址。

InterfaceIndex

类型: NET_IFINDEX

与此 IP 地址关联的网络接口的本地索引值。 当网络适配器被禁用并随后启用时,或者在其他情况下,此索引值可能会更改,并且不应被视为永久性。

InterfaceLuid

类型: NET_LUID

本地唯一标识符 (与此 IP 地址关联的网络接口的 LUID) 。

PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]

类型: UCHAR[IF_MAX_PHYS_ADDRESS_LENGTH]

与此 IP 地址关联的网络接口的适配器的物理硬件地址。

PhysicalAddressLength

类型: ULONG

PhysicalAddress 成员指定的物理硬件地址的长度(以字节为单位)。 支持的最大值为 32 个字节。

State

类型: NL_NEIGHBOR_STATE

RFC 2461 第 7.3.2 节中定义的网络邻居 IP 地址的状态。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt。 此成员可以是 Nldef.h 头文件中定义的 NL_NEIGHBOR_STATE 枚举类型的值之一。

含义
NlnsUnreachable
IP 地址不可访问。
NlnsIncomplete
地址解析正在进行中,并且尚未确定邻居的链接层地址。 具体而言,对于 IPv6,已将邻居请求发送到目标的请求节点多播 IP 地址,但尚未收到相应的邻居播发。
NlnsProbe
邻居不再已知可访问,并且正在发送探测来验证可访问性。 对于 IPv6,正在主动通过定期重新传输单播邻居请求探测来寻求可访问性确认,直到收到可访问性确认。
NlnsDelay
已知无法访问邻居,并且最近已将流量发送到邻居。 但是,不要立即探测邻居,而是将发送探测延迟一小段时间,以便为上层协议提供提供可访问性确认的机会。 对于 IPv6,所经过的时间比 ReachabilityTime.ReachableTime 成员中指定的时间多,因为收到上一次确认转发路径正常运行并发送了数据包。 如果在一段时间内未收到可访问性确认, (用于延迟进入 NlnsDelay 状态的第一个探测) ,则会发送邻居请求,并将 State 成员更改为 NlnsProbe
NlnsStale
已知邻居是可访问的,但在将流量发送到邻居之前,不应尝试验证其可访问性。 对于 IPv6,经过的时间比 ReachabilityTime.ReachableTime 成员中指定的时间多,因为收到上一次确认转发路径正常运行。 虽然 StateNlnsStale,但发送数据包之前不会执行任何操作。

收到更新缓存 IP 地址的未经请求的邻居发现消息时,将进入 NlnsStale 状态。 收到此类消息不会确认可访问性,如果实际使用了条目,则进入 NlnsStale 状态可确保快速验证可访问性。 但是,在实际使用条目之前,不会实际验证可访问性。

NlnsReachable
据悉,邻居最近在几十秒前 () 。 对于 IPv6,在 ReachabilityTime.ReachableTime 成员中指定的时间内收到确认,确认邻居的转发路径正常运行。 虽然 StateNlnsReachable,但发送数据包时不会发生任何特殊操作。
NlnsPermanent
IP 地址是永久地址。
NlnsMaximum
NL_NEIGHBOR_STATE 枚举类型的可能最大值。 这不是 国家 成员的法律价值。

IsRouter

类型: BOOLEAN

一个 值,该值指示此 IP 地址是否为路由器。

IsUnreachable

类型: BOOLEAN

一个 值,该值指示此 IP 地址是否无法访问。

Flags

类型: UCHAR

一组标志,指示 IP 地址是否为路由器以及 IP 地址是否不可访问。

ReachabilityTime

ReachabilityTime.LastReachable

类型: ULONG 节点在收到可访问性确认后假定邻居可访问的时间(以毫秒为单位)。

ReachabilityTime.LastUnreachable

类型: ULONG 节点在未收到可访问性确认后假定邻居无法访问的时间(以毫秒为单位)。

注解

MIB_IPNET_ROW2结构在 Windows Vista 及更高版本上定义。

GetIpNetTable2 函数枚举本地系统上的相邻 IP 地址,并在MIB_IPNET_TABLE2结构中返回此信息。

对于 IPv4,这包括使用地址解析协议 (ARP) 确定的地址。 对于 IPv6,这包括使用 RFC 2461 中指定的邻居发现 (ND) 协议确定的地址。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt

GetIpNetEntry2 函数检索单个邻居 IP 地址,并在MIB_IPNET_ROW2结构中返回此信息。

请注意, Netioapi.h 头文件会自动包含在 Iphlpapi.h 头文件中。 永远不应直接使用 Netioapi.h 头文件。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 netioapi.h (包括 Iphlpapi.h)

另请参阅

CreateIpNetEntry2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_TABLE2

SOCKADDR_INET