Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve os conceitos de interface de rede de alto nível no Windows, incluindo as maneiras como eles podem ser identificados no código e suas propriedades.
Importante
Este tópico destina-se a um público de programadores, tanto para aplicações de rede de ambiente de trabalho do Windows como para controladores de rede de modo kernel. No entanto, algumas das informações apresentadas aqui também podem ser úteis para administradores de sistema que gerenciam interfaces de rede por meio de cmdlets do PowerShell.
Visão geral
Um de interface de rede é o ponto onde duas partes de equipamentos de rede ou camadas de protocolo se conectam. Normalmente, isso é representado por uma placa de interface de rede (NIC) física para conexão entre um computador e uma rede privada ou pública. No entanto, também pode assumir a forma de um componente apenas de software, como a interface de loopback (127.0.0.1 para IPv4 ou ::1 para IPv6).
As interfaces de rede são definidas pela Internet Engineering Task Force (IETF) em RFC 2863 e não devem ser definidas pelo Windows. Para perguntas detalhadas sobre o significado dos identificadores de interface de rede, como ifIndex, consulte as definições do IETF sobre eles. O restante deste tópico discute detalhes de implementação específicos do Windows.
Identificadores e propriedades da interface de rede
No Windows, uma interface de rede pode ser identificada de diferentes maneiras. Alguns desses identificadores são usados para distinguir interfaces de rede uns dos outros, mas nem todos os identificadores são igualmente adequados para essa tarefa devido às suas diferentes propriedades. Geralmente, as interfaces de rede são identificadas por um endereço de rede para componentes externos. Por exemplo, isso pode ser um ID de nó e um número de porta, ou simplesmente um ID de nó exclusivo.
No código, uma interface de rede pode ser identificada de várias maneiras. A tabela a seguir detalha as maneiras como uma interface de rede pode ser identificada junto com as propriedades associadas. Recomendamos o uso do GUID da interface (ifGuid) para programação, a menos que uma API específica exija um identificador de interface de rede diferente.
Observação
Na tabela a seguir, negrito células representam uma propriedade desejável para programadores de rede.
| Identificador | Tamanho | É único no sistema | É único no mundo | É previsível | Será reciclado se a NIC for removida | Persiste nas reinicializações | Os usuários finais podem modificar a qualquer momento | Os drivers podem modificar a qualquer momento | Familiaridade geral com os utilizadores finais | Está sempre presente |
|---|---|---|---|---|---|---|---|---|---|---|
| ifIndex | 4 bytes | Sim | Não | Não | Sim | N.º1 | Não | Não | Alguns2 | Sim |
| NetLuid | 8 bytes | Sim | Não | Não | Sim | Sim | Não | Não | Não | Sim |
| ifGuid | 16 bytes | Sim | Geralmente3 | Não | Não | Sim | Não | Não | Não | Sim |
| ifAlias | 514 bytes | Sim para NICs4 | Não | Às vezes,5 | Sim | Sim | Sim | Não | Sim | Geralmente4 |
| ifDescr | 514 bytes | Normalmente6 | Não | Não | Sim | Sim | Não | Sim | Sim | Normalmente |
| ifPhysAddress (MAC ADDRESS) | 0 a 32 bytes | Normalmente, para NICs | Normalmente, para NICs | Sim | Vinculado ao hardware | Sim | Não | Não | Sim | Normalmente7 |
| ID da instância PnP | Até 400 bytes | Sim | Não | Não | Sim | Sim | Não | Não | Não | Normalmente, para NICs8 |
| localização PnP (número do slot PCI) | Até 400 bytes | Sim | Não | Sim | Sim | Sim | Não | Não | Às vezes | Às vezes,8,9 |
Notas relativas ao quadro anterior:
- IfIndexes não têm garantia de serem estáveis nas reinicializações, embora geralmente recebam o mesmo valor da inicialização anterior. Portanto, não é recomendável que os drivers usem ifIndex exceto quando exigido por uma API.
- Alguns comandos
netshtomamifIndex, ouindex, como uma entrada. Portanto, alguns usuários administrativos estão familiarizados com a propriedade ifIndex se usarem o comandonetshcom freqüência. - Se uma máquina for clonada ou fotografada, alguns dos GUIDs podem ser os mesmos. Além disso, certas interfaces de rede especiais, como a interface Teredo integrada, podem ter o mesmo GUID em todas as máquinas.
- NetCfg impõe que um ifAlias é uma cadeia de caracteres não vazia e é exclusivo entre todas as NICs. No entanto, o provedor de interface NDIS não. Assim, é possível encontrar interfaces de rede especiais com nomes duplicados ou vazios. Isso é mais comumente visto com equipes LBFO.
- Apenas se o firmware suportar a Nomenclatura Consistente do Dispositivo. Normalmente, os servidores têm esse recurso.
- NetCfg atribui ifDescrs exclusivos a todas as interfaces de rede. No entanto, os drivers podem chamar uma API para alterar o ifDescr para qualquer coisa, incluindo algo que não seja exclusivo. Alguns pacotes de software 3rd party fazem isso.
- Nem todos os tipos de mídia têm um "endereço MAC". Por exemplo, alguns túneis não têm esse conceito e simplesmente anunciam uma matriz de bytes de comprimento zero como seu endereço de rede.
- Presente apenas em interfaces de rede que são apoiadas por um dispositivo PnP. Por exemplo, interfaces de loopback, interfaces de filtro leves, interfaces fornecidas por um provedor de interface NDIS e certas NICs integradas especiais não têm dispositivos PnP que as suportem.
- Apenas alguns barramentos PnP suportam um ID de localização PnP. Os barramentos PCI e USB integrados, enquanto os dispositivos enumerados pela raiz não.
Visibilidade para desenvolvedores
Na tabela anterior, todas as propriedades, exceto as propriedades Plug and Play (PnP), são visíveis para aplicativos de desktop de modo de usuário e drivers de modo kernel por meio de um cabeçalho compartilhado (Netioapi.h). As propriedades PnP são visíveis através do cabeçalho Devpkey.h e são usadas por aplicativos de desktop de modo de usuário e drivers de modo kernel. Por exemplo, consulte a documentação DEVPKEY.
A API IP Helper também está disponível para aplicativos de desktop de modo de usuário e drivers de modo kernel.
A superfície da API UWP expõe apenas o propriedade ifGuid diretamente. No entanto, é possível que os desenvolvedores de aplicativos UWP importem a funçãoGetIfTable2usando P/Invoke se forem necessários para acessar outras propriedades da interface de rede.
Tópicos relacionados
Para obter definições de base de informações de gerenciamento (MIB) para interfaces de rede, consulte RFC 2863.
Para interfaces de rede NDIS em drivers de rede, consulte NDIS Network Interfaces.
Para referência da API Netioapi.h, consulte cabeçalho netioapi.h.