структура 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.
Значение | Значение |
---|---|
|
Семейство адресов не указано. |
|
Семейство адресов IPv4. |
|
Семейство адресов IPv6. |
InterfaceLuid
Тип: NET_LUID
Локальный уникальный идентификатор (LUID) для сетевого интерфейса.
InterfaceIndex
Тип: NET_IFINDEX
Значение локального индекса для сетевого интерфейса. Это значение индекса может изменяться при отключении сетевого адаптера и его включении или при других обстоятельствах и не должно считаться постоянным.
MaxReassemblySize
Тип: ULONG
Максимальный размер фрагментированного IP-пакета (в байтах). В настоящее время этот элемент имеет нулевое значение и зарезервирован для использования в будущем.
InterfaceIdentifier
Тип: ULONG64
Зарезервировано для последующего использования. В настоящее время для этого элемента задано значение 0.
MinRouterAdvertisementInterval
Тип: ULONG
Минимальный интервал объявления маршрутизатора в миллисекундах для этого IP-интерфейса. Этот член по умолчанию использует значение 200 для IPv6. Этот элемент применим, только если для элемента AdvertisingEnabled задано значение TRUE.
MaxRouterAdvertisementInterval
Тип: ULONG
Максимальный интервал объявления маршрутизатора в миллисекундах для этого IP-интерфейса. Этот элемент по умолчанию — 600 для IPv6. Этот элемент применим, только если для элемента 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
Поведение обнаружения маршрутизатора. Этот член может быть одним из значений из типа перечисления NL_ROUTER_DISCOVERY_BEHAVIOR , определенного в файле заголовка Nldef.h . Член описан в документе RFC 2461. Для получения дополнительной информации см. http://www.ietf.org/rfc/rfc2461.txt.
DadTransmits
Тип: ULONG
Количество последовательных сообщений, отправленных при обнаружении повторяющихся адресов на предварительном ОДНОадресном IP-адресе. Нулевое значение указывает, что обнаружение повторяющихся адресов не выполняется на предварительных IP-адресах. Значение 1 указывает на одну передачу без последующих повторных передач. Для IPv4 значение по умолчанию для этого элемента равно 3. Для IPv6 значение по умолчанию для этого элемента равно 1. Для IPv6 эти сообщения будут отправляться как запросы на вытягивание соседей. Этот член определяется как DupAddrDetectTransmits в RFC 2462. Для получения дополнительной информации см. 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
Поведение локального адреса связи. Этот член может быть одним из значений из типа перечисления NL_LINK_LOCAL_ADDRESS_BEHAVIOR , определенного в файле заголовка Nldef.h .
LinkLocalAddressTimeout
Тип: ULONG
Время ожидания локального IP-адреса связи в миллисекундах.
ZoneIndices[ScopeLevelCount]
Тип: ULONG[ScopeLevelCount]
Массив, указывающий часть зоны идентификаторов область.
SitePrefixLength
Тип: ULONG
Длина префикса сайта (в битах) IP-адреса интерфейса. Длина (в битах) префикса сайта или сетевой части IP-адреса интерфейса. Для IPv4-адреса любое значение, превышающее 32, является недопустимым. Для IPv6-адреса любое значение, превышающее 128, является недопустимым. Значение 255 обычно используется для представления недопустимого значения.
Metric
Тип: ULONG
Метрика интерфейса. Обратите внимание, что фактическая метрика маршрута, используемая для вычисления предпочтения маршрута, представляет собой суммирование смещения метрики маршрута, указанного в элементе Metricструктуры MIB_IPFORWARD_ROW2 и метрике интерфейса, указанной в этом элементе.
NlMtu
Тип: ULONG
Размер MTU сетевого уровня в байтах.
Connected
Тип: BOOLEAN
Значение типа , указывающее, подключен ли интерфейс к точке доступа к сети.
SupportsWakeUpPatterns
Тип: BOOLEAN
Значение типа , указывающее, поддерживает ли сетевой интерфейс пробуждение по локальной сети.
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-адресов, которые следуют модели строгого узла, принимают пакеты, предназначенные локально, только если адрес назначения в пакете совпадает с адресом, назначенным интерфейсу, по которому был получен пакет. Слабая модель узла обеспечивает более эффективное сетевое подключение. Однако это также делает узлы уязвимыми к сетевым атакам на основе нескольких сетей.
Текущая реализация IPv4 в Windows Server 2003 и Windows XP использует слабую модель узла. В этом случае все одноадресные пакеты отправляются по интерфейсу с наименьшей метрикой для маршрута.
Стек TCP/IP в Windows Vista и более поздних версиях поддерживает модель надежного узла для IPv4 и IPv6 и по умолчанию настроен на использование режима строгого узла (для элементов WeakHostReceive и WeakHostSend установлено значение FALSE). В режиме строгого узла одноадресный пакет может быть отправлен из определенного интерфейса, который не имеет наименьшей метрики для маршрута, путем привязки сокета к исходному адресу конкретного интерфейса.
Стек TCP/IP в Windows Vista и более поздних версий можно настроить для использования слабой модели узла.
Метрика — это значение, присваиваемое IP-маршруту для определенного сетевого интерфейса, которое определяет затраты, связанные с использованием этого маршрута. Например, метрика может быть оценена с точки зрения скорости связи, количества прыжков или задержки времени. Автоматическая метрика — это функция в Windows XP и более поздних версиях, которая автоматически настраивает метрику для локальных маршрутов, основанных на скорости канала. Функция автоматической метрики включена по умолчанию ( параметр UseAutomaticMetric имеет значение TRUE) в Windows XP и более поздних версиях. Его также можно настроить вручную, чтобы назначить определенную метрику IP-маршруту.
Функция автоматической метрики может быть полезна, если таблица маршрутизации содержит несколько маршрутов для одного назначения. Например, компьютер с сетевым интерфейсом 10 Мбит и сетевым интерфейсом 100 Мбит имеет шлюз по умолчанию, настроенный на обоих сетевых интерфейсах. Если параметр UseAutomaticMetric имеет значение TRUE, эта функция может принудительно заставить весь трафик, предназначенный для Интернета, например, использовать самый быстрый доступный сетевой интерфейс.
Метрика интерфейса, указанная в элементе Метрики , представляет только метрику для интерфейса. Полная метрика маршрутизации — это сочетание этой метрики интерфейса, добавленной в смещение метрики маршрута, указанное в элементе МетрикиMIB_IPFORWARD_ROW2 структуры маршрута, указанной в этом интерфейсе.
Непривилегированные одновременный доступ к нескольким сетям с разными требованиями к безопасности создает пробел в безопасности и позволяет непривилегному приложению случайно ретранслировать данные между двумя сетями. Типичный пример — одновременный доступ к виртуальной частной сети (VPN) и Интернету. Windows Server 2003 и Windows XP используют слабую модель узла, где RAS предотвращает такой одновременный доступ за счет увеличения метрики маршрута всех маршрутов по умолчанию через другие интерфейсы. Таким образом, весь трафик направляется через интерфейс VPN, нарушая другие сетевые подключения.
В Windows Vista и более поздних версиях модель надежного узла используется по умолчанию. Если исходный IP-адрес указан в поиске маршрута с помощью GetBestRoute2 или GetBestRoute, поиск маршрута ограничивается интерфейсом исходного IP-адреса. Изменение метрики маршрута с помощью RAS не оказывает никакого влияния, так как список потенциальных маршрутов даже не имеет маршрута для VPN-интерфейса, тем самым разрешая трафик в Интернет. Элемент DisableDefaultRoutes структуры MIB_IPINTERFACE_ROW можно использовать для отключения с помощью маршрута по умолчанию в интерфейсе. Этот член может использоваться VPN-клиентами в качестве меры безопасности для ограничения раздельного туннелирования, если vpn-клиент не требует раздельного туннелирования. VPN-клиент может вызвать функцию SetIpInterfaceEntry , чтобы при необходимости задать для члена DisableDefaultRoutesзначение TRUE . VPN-клиент может запросить текущее состояние члена DisableDefaultRoutes , вызвав функцию GetIpInterfaceEntry .
Обратите внимание, что файл заголовка Netioapi.h автоматически включается в файл заголовка Iphlpapi.h . Файл заголовка Netioapi.h никогда не следует использовать напрямую.
Примеры
Чтобы просмотреть пример, в который извлекается структура MIB_IPINTERFACE_TABLE , а затем выводится несколько элементов MIB_IPINTERFACE_ROW записей структуры в этой таблице, см. функцию GetIpInterfaceTable .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Верхняя часть | netioapi.h (включая Iphlpapi.h) |