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