MIB_IPINTERFACE_ROW 结构 (netioapi.h)
MIB_IPINTERFACE_ROW结构在网络接口上存储特定 IP 地址系列的接口管理信息。
语法
typedef struct _MIB_IPINTERFACE_ROW {
ADDRESS_FAMILY Family;
NET_LUID InterfaceLuid;
NET_IFINDEX InterfaceIndex;
ULONG MaxReassemblySize;
ULONG64 InterfaceIdentifier;
ULONG MinRouterAdvertisementInterval;
ULONG MaxRouterAdvertisementInterval;
BOOLEAN AdvertisingEnabled;
BOOLEAN ForwardingEnabled;
BOOLEAN WeakHostSend;
BOOLEAN WeakHostReceive;
BOOLEAN UseAutomaticMetric;
BOOLEAN UseNeighborUnreachabilityDetection;
BOOLEAN ManagedAddressConfigurationSupported;
BOOLEAN OtherStatefulConfigurationSupported;
BOOLEAN AdvertiseDefaultRoute;
NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
ULONG DadTransmits;
ULONG BaseReachableTime;
ULONG RetransmitTime;
ULONG PathMtuDiscoveryTimeout;
NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
ULONG LinkLocalAddressTimeout;
ULONG ZoneIndices[ScopeLevelCount];
ULONG SitePrefixLength;
ULONG Metric;
ULONG NlMtu;
BOOLEAN Connected;
BOOLEAN SupportsWakeUpPatterns;
BOOLEAN SupportsNeighborDiscovery;
BOOLEAN SupportsRouterDiscovery;
ULONG ReachableTime;
NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
BOOLEAN DisableDefaultRoutes;
} MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW;
成员
Family
类型: ADDRESS_FAMILY
地址系列。 Winsock2.h 头文件中列出了地址系列的可能值。 请注意,AF_地址系列和PF_协议系列常量的值 (相同,例如 ,AF_INET 和 PF_INET) ,因此可以使用任一常量。
在 Windows Vista 和更高版本以及Windows SDK上,头文件的组织方式已更改,Ws2def.h 头文件中定义了此成员的可能值。 请注意, Ws2def.h 头文件会自动包含在 Winsock2.h 中,永远不应直接使用。
当前支持的值 是 AF_INET 或 AF_INET6,它们是 IPv4 和 IPv6 的 Internet 地址系列格式。
值 | 含义 |
---|---|
|
地址系列未指定。 |
|
Internet 协议版本 4 (IPv4) 地址系列。 |
|
Internet 协议版本 6 (IPv6) 地址系列。 |
InterfaceLuid
类型: NET_LUID
网络接口的本地唯一标识符 (LUID) 。
InterfaceIndex
类型: NET_IFINDEX
网络接口的本地索引值。 当网络适配器被禁用并随后启用时,或者在其他情况下,此索引值可能会更改,并且不应被视为永久性。
MaxReassemblySize
类型: ULONG
分段 IP 数据包的最大重新组合大小(以字节为单位)。 此成员当前设置为零,并保留供将来使用。
InterfaceIdentifier
类型: ULONG64
保留供将来使用。 此成员当前设置为零。
MinRouterAdvertisementInterval
类型: ULONG
此 IP 接口上的最小路由器播发间隔(以毫秒为单位)。 对于 IPv6,此成员默认为 200。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。
MaxRouterAdvertisementInterval
类型: ULONG
此 IP 接口上的最大路由器播发间隔(以毫秒为单位)。 对于 IPv6,此成员默认为 600。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。
AdvertisingEnabled
类型: BOOLEAN
一个 值,该值指示是否在此 IP 接口上启用了路由器播发。 IPv6 的默认设置是,仅当接口配置为充当路由器时,才会启用路由器播发。 IPv4 的默认设置是禁用路由器播发。
ForwardingEnabled
类型: BOOLEAN
一个 值,该值指示是否在此 IP 接口上启用了 IP 转发。
WeakHostSend
类型: BOOLEAN
一个 值,该值指示是否在此 IP 接口上启用了弱主机发送模式。
WeakHostReceive
类型: BOOLEAN
一个 值,该值指示是否在此 IP 接口上启用了弱主机接收模式。
UseAutomaticMetric
类型: BOOLEAN
一个 值,该值指示 IP 接口是否使用自动指标。
UseNeighborUnreachabilityDetection
类型: BOOLEAN
一个 值,该值指示是否在此 IP 接口上启用了邻居不可访问性检测。
ManagedAddressConfigurationSupported
类型: BOOLEAN
一个 值,该值指示 IP 接口是否支持使用 DHCP 进行托管地址配置。
OtherStatefulConfigurationSupported
类型: BOOLEAN
一个 值,该值指示 IP 接口是否支持其他有状态配置 (路由配置,例如) 。
AdvertiseDefaultRoute
类型: BOOLEAN
一个 值,该值指示 IP 接口是否播发默认路由。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。
RouterDiscoveryBehavior
类型: NL_ROUTER_DISCOVERY_BEHAVIOR
路由器发现行为。 此成员可以是 Nldef.h 头文件中定义的 NL_ROUTER_DISCOVERY_BEHAVIOR 枚举类型的值之一。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt。
DadTransmits
类型: ULONG
对暂定 IP 单播地址执行重复地址检测时发送的连续消息数。 如果值为零,则表示未对暂定 IP 地址执行重复地址检测。 值为 1 表示没有后续重新传输的单个传输。 对于 IPv4,此成员的默认值为 3。 对于 IPv6,此成员的默认值为 1。 对于 IPv6,这些消息将作为邻居请求请求发送。 此成员在 RFC 2462 中定义为 DupAddrDetectTransmits。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2462.txt。
BaseReachableTime
类型: ULONG
随机可访问时间的基数(以毫秒为单位)。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt。
RetransmitTime
类型: ULONG
邻居请求超时,以毫秒为单位。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt。
PathMtuDiscoveryTimeout
类型: ULONG
路径 MTU 发现超时,以毫秒为单位。
LinkLocalAddressBehavior
类型: NL_LINK_LOCAL_ADDRESS_BEHAVIOR
链接本地地址行为。 此成员可以是 Nldef.h 头文件中定义的 NL_LINK_LOCAL_ADDRESS_BEHAVIOR 枚举类型的值之一。
LinkLocalAddressTimeout
类型: ULONG
链接本地 IP 地址超时(以毫秒为单位)。
ZoneIndices[ScopeLevelCount]
类型: ULONG[ScopeLevelCount]
一个指定范围 ID 的区域部分的数组。
SitePrefixLength
类型: ULONG
IP 接口地址的站点前缀长度(以位为单位)。 IP 接口地址的站点前缀或网络部分的长度(以位为单位)。 对于 IPv4 地址,任何大于 32 的值都是非法值。 对于 IPv6 地址,任何大于 128 的值都是非法值。 值 255 通常用于表示非法值。
Metric
类型: ULONG
接口指标。 请注意,用于计算路由首选项的实际路由指标是MIB_IPFORWARD_ROW2结构的 Metric 成员中指定的路由指标偏移量与此成员中指定的接口指标的求和。
NlMtu
类型: ULONG
网络层 MTU 大小(以字节为单位)。
Connected
类型: BOOLEAN
一个 值,该值指示接口是否连接到网络接入点。
SupportsWakeUpPatterns
类型: BOOLEAN
一个 值,该值指定网络接口是否支持 LAN 唤醒。
SupportsNeighborDiscovery
类型: BOOLEAN
一个 值,该值指定 IP 接口是否支持邻居发现。
SupportsRouterDiscovery
类型: BOOLEAN
一个 值,该值指定 IP 接口是否支持路由器发现。
ReachableTime
类型: ULONG
可访问的超时,以毫秒为单位。
TransmitOffload
类型: NL_INTERFACE_OFFLOAD_ROD
一组标志,指示 IP 接口的传输卸载功能。 NL_INTERFACE_OFFLOAD_ROD结构在 Nldef.h 头文件中定义。
ReceiveOffload
类型: NL_INTERFACE_OFFLOAD_ROD
一组标志,指示 IP 接口的接收卸载功能。 NL_INTERFACE_OFFLOAD_ROD结构在 Nldef.h 头文件中定义。
DisableDefaultRoutes
类型: BOOLEAN
一个 值,该值指示是否应禁用在接口上使用默认路由。 VPN 客户端可以使用此成员来限制拆分隧道。
注解
MIB_IPINTERFACE_ROW结构在 Windows Vista 及更高版本上定义。
Family、InterfaceLuid 和 InterfaceIndex 成员唯一标识MIB_IPINTERFACE_ROW项。
当单播数据包到达主机时,IP 必须确定数据包是否在本地发往 (其目标与分配给主机) 接口的地址匹配。 遵循弱主机模型的 IP 实现接受任何发往本地的数据包,而不考虑接收数据包的接口。 如果数据包中的目标地址与分配给接收数据包的接口的地址匹配,则遵循强主机模型的 IP 实现仅接受本地目标数据包。 弱主机模型提供更好的网络连接。 但是,这也使主机容易受到基于多家庭的网络攻击。
Windows Server 2003 和 Windows XP 中的当前 IPv4 实现使用弱主机模型。 在这种情况下,所有单播数据包都发送出具有路由最低指标的接口。
Windows Vista 和更高版本上的 TCP/IP 堆栈支持 IPv4 和 IPv6 的强主机模型,并且默认情况下配置为使用强主机模式, (WeakHostReceive 和 WeakHostSend 成员设置为 FALSE) 。 在强主机模式下,可以通过将套接字绑定到特定接口的源地址,向没有路由最低指标的特定接口发送单播数据包。
Windows Vista 和更高版本上的 TCP/IP 堆栈可以配置为使用弱主机模型。
指标是分配给特定网络接口的 IP 路由的值,该值标识与使用该路由关联的成本。 例如,指标可以按链接速度、跃点计数或时间延迟进行值。 自动指标是 Windows XP 及更高版本上的一项功能,可自动为基于链接速度的本地路由配置指标。 在 Windows XP 及更高版本上 , (UseAutomaticMetric 设置为 TRUE) ,则默认启用自动指标功能。 还可以将其手动配置为将特定指标分配给 IP 路由。
当路由表包含同一目标的多个路由时,自动指标功能非常有用。 例如,具有 10 兆位网络接口和 100 兆位网络接口的计算机具有在两个网络接口上配置的默认网关。 当 UseAutomaticMetric 为 TRUE 时,此功能可以强制所有发往 Internet 的流量使用可用的最快网络接口。
指标 成员中指定的 接口指标仅表示接口的指标。 完整的路由指标是添加到此接口上指定路由条目的 MIB_IPFORWARD_ROW2 结构的 Metric 成员中指定的路由指标偏移量的组合。
对具有不同安全要求的多个网络的无特权同时访问会产生安全漏洞,并允许无特权应用程序意外地在两个网络之间中继数据。 一个典型示例是同时访问虚拟专用网络 (VPN) 和 Internet。 Windows Server 2003 和 Windows XP 使用弱主机模型,其中 RAS 通过增加其他接口上所有默认路由的路由指标来阻止此类同时访问。 因此,所有流量都通过 VPN 接口路由,从而中断其他网络连接。
在 Windows Vista 及更高版本上,默认使用强主机模型。 如果使用 GetBestRoute2 或 GetBestRoute 在路由查找中指定了源 IP 地址,则路由查找仅限于源 IP 地址的接口。 RAS 的路由指标修改不起作用,因为潜在路由列表甚至没有 VPN 接口的路由,从而允许流量发往 Internet。 可以使用 MIB_IPINTERFACE_ROW 结构的 DisableDefaultRoutes 成员在接口上使用默认路由来禁用。 VPN 客户端可以将此成员用作安全措施,以在 VPN 客户端不需要拆分隧道时限制拆分隧道。 VPN 客户端可以调用 SetIpInterfaceEntry 函数,以便在需要时将 DisableDefaultRoutes 成员设置为 TRUE 。 VPN 客户端可以通过调用 GetIpInterfaceEntry 函数来查询 DisableDefaultRoutes 成员的当前状态。
请注意, Netioapi.h 头文件会自动包含在 Iphlpapi.h 头文件中。 永远不应直接使用 Netioapi.h 头文件。
示例
若要查看检索 MIB_IPINTERFACE_TABLE 结构,然后输出此表中 MIB_IPINTERFACE_ROW 结构条目的几个成员的示例,请参阅 GetIpInterfaceTable 函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | netioapi.h (包括 Iphlpapi.h) |