структура 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.

Значение Значение
AF_UNSPEC
0
Семейство адресов не указано.
AF_INET
2
Семейство адресов IPv4.
AF_INET6
23
Семейство адресов 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.

Значение Значение
RouterDiscoveryDisabled
0
Обнаружение маршрутизатора отключено.
RouterDiscoveryEnabled
1
Обнаружение маршрутизатора включено. Это значение по умолчанию для IPv6.
RouterDiscoveryDhcp
2
Обнаружение маршрутизатора настраивается на основе DHCP. Это значение по умолчанию для IPv4.
RouterDiscoveryUnchanged
-1
Это значение используется при настройке свойств ДЛЯ IP-интерфейса, когда значение обнаружения маршрутизатора должно быть неизменным.

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 .

Значение Значение
LinkLocalAlwaysOff
0
Никогда не используйте локальный IP-адрес канала.
LinkLocalDelayed
1
Используйте локальный IP-адрес ссылки, только если другой адрес недоступен. Это параметр по умолчанию для интерфейса IPv4.
LinkLocalAlwaysOn
2
Всегда используйте локальный IP-адрес ссылки. Это параметр по умолчанию для интерфейса IPv6.
LinkLocalUnchanged
-1
Это значение используется при настройке свойств для IP-интерфейса, когда значение для поведения локального адреса связи должно быть неизменным.

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)

См. также раздел

GetBestRoute

GetBestRoute2

GetIpInterfaceEntry

GetIpInterfaceTable

MIB_IPFORWARD_ROW2

MIB_IPINTERFACE_TABLE

NET_LUID

NL_INTERFACE_OFFLOAD_ROD

SetIpInterfaceEntry