MIB_IPNET_ROW2结构 (netioapi.h)

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

Syntax

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;

Members

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枚举类型中的值之一。

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

收到更新缓存 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 中指定的 IPv6 的邻居发现 (ND) 协议确定的地址。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt

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

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

要求

Requirement 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
Header netioapi.h (包括 Iphlpapi.h)

另请参阅

CreateIpNetEntry2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_TABLE2

SOCKADDR_INET