Partager via


Interfaces réseau

Cette rubrique décrit les concepts d’interface réseau de haut niveau sous Windows, y compris les façons dont ils peuvent être identifiés dans le code et leurs propriétés.

Important

Cette rubrique s’adresse à un public de développeurs, à la fois pour les applications de mise en réseau du bureau Windows et pour les pilotes réseau en mode noyau. Néanmoins, certaines informations présentées ici peuvent également être utiles pour les administrateurs système qui gèrent les interfaces réseau via des applets de commande PowerShell.

Vue d’ensemble

Une interface réseau est le point de connexion de deux éléments d’équipement réseau ou de couches de protocole. En règle générale, il s’agit d’une carte d’interface réseau physique pour la connexion entre un ordinateur et un réseau privé ou public. Toutefois, cela peut également prendre la forme d’un composant logiciel uniquement tel que l’interface de bouclage (127.0.0.1 pour IPv4 ou ::1 pour IPv6).

Les interfaces réseau sont définies par l’Internet Engineering Task Force (IETF) dans RFC 2863 et ne sont pas destinées à être définies par Windows. Pour obtenir des réponses détaillées sur la signification des identificateurs d’interface réseau comme ifIndex, consultez les définitions de l’IETF. Le reste de cette rubrique décrit de façon détaillée l’implémentation spécifique à Windows.

Identificateurs et propriétés de l’interface réseau

Sur Windows, une interface réseau peut être identifiée de différentes façons. Certains de ces identificateurs sont utilisés pour distinguer les interfaces réseau les unes des autres, mais tous les identificateurs ne sont pas parfaitement adaptés à cette tâche en raison de leurs différentes propriétés. En règle générale, les interfaces réseau sont identifiées par une adresse réseau aux composants externes. Par exemple, il peut s’agir d’un ID de nœud et d’un numéro de port, ou simplement d’un ID de nœud unique.

Dans le code, une interface réseau peut être identifiée de plusieurs façons. Le tableau suivant présente de façon détaillée les façons dont une interface réseau peut être identifiée avec les propriétés associées. Nous vous recommandons d’utiliser le GUID d’interface (ifGuid) pour la programmation, sauf si une API spécifique nécessite un identificateur d’interface réseau différent.

Remarque

Dans le tableau suivant, les cellules en gras représentent une propriété qui est souhaitable pour les programmeurs réseau.

Identificateur Taille Est unique dans le système Est unique dans le monde Est prévisible Sera recyclé si la carte d’interface réseau est supprimée Persiste malgré les redémarrages Les utilisateurs finaux peuvent modifier à tout moment Les pilotes peuvent modifier à tout moment Connaissance générale des utilisateurs finaux Est toujours présent
ifIndex 4 octets Oui No Non Oui Non1 Aucun Aucun Certains2 Oui
NetLuid 8 octets Oui No Non Oui Oui Aucun Aucun Non Oui
ifGuid 16 octets Oui Généralement3 Non Aucun Oui Aucun Aucun Non Oui
ifAlias 514 octets Oui pour les cartes d’interface réseau4 Non Parfois5 Oui Oui Oui Non Oui Généralement4
ifDescr 514 octets Généralement6 Non Non Oui Oui Non Oui Oui Généralement
ifPhysAddress (ADRESSE MAC) 0 à 32 octets Généralement, pour les cartes d’interface réseau Généralement, pour les cartes d’interface réseau Oui Lié au matériel Oui Aucun Aucun Oui Généralement 7
ID de l’instance PnP Jusqu’à 400 octets Oui No Non Oui Oui Aucun Aucun Non Généralement, pour les cartes d’interface réseau8
Emplacement PnP (numéro de l’emplacement PCI) Jusqu’à 400 octets Oui No Oui Oui Oui Aucun Aucun Parfois Parfois8,9

Remarques relatives au tableau précédent :

  1. la stabilité des IfIndexes n’est pas garantie lors des redémarrages, même s’ils reçoivent souvent la même valeur qu’au démarrage précédent. Par conséquent, il n’est pas recommandé que les pilotes utilisent ifIndex , sauf si une API le requiert.
  2. Certaines netsh commandes prennent ifIndex ou index en tant qu’entrée. Par conséquent, certains utilisateurs administratifs sont familiarisés avec la propriété ifIndex s’ils utilisent fréquemment la commande netsh.
  3. Si un ordinateur est cloné ou mis en image, certains des GUID peuvent être identiques. En outre, certaines interfaces réseau spéciales comme l’interface Teredo intégrée peuvent avoir le même GUID sur tous les ordinateurs.
  4. NetCfg impose qu’un ifAlias soit une chaîne non vide et soit unique parmi toutes les cartes d’interface réseau. Toutefois, le fournisseur d’interface NDIS ne l’impose pas. Il est donc possible de trouver des interfaces réseau spéciales avec des noms dupliqués ou vides. Ce cas est le plus souvent rencontré par les équipes LBFO.
  5. Uniquement si le microprogramme prend en charge le nom de réseau de diffusion de contenu. En général, les serveurs possèdent cette fonctionnalité.
  6. NetCfg affecte des ifDescrs à toutes les interfaces réseau. Toutefois, les pilotes peuvent appeler une API pour modifier ifDescr en n’importe quoi, y compris quelque chose qui n’est pas unique. Certains packages logiciels tiers le font.
  7. Tous les types de supports ne disposent pas d’une « adresse MAC ». Par exemple, certains tunnels n’ont pas ce concept et publient simplement un tableau d’octets de longueur nulle comme adresse réseau.
  8. Présente uniquement sur les interfaces réseau sauvegardées par un appareil PnP. Par exemple, les interfaces de bouclage, les interfaces de filtre légères, les interfaces fournies par un fournisseur d’interfaces NDIS et certaines cartes d’interface réseau intégrées spéciales ne sont pas appuyées par des appareils PnP.
  9. Seuls certains bus PnP prennent en charge un ID d’emplacement PnP. Les bus PCI et USB intégrés le font, alors que les dispositifs énumérés à la racine ne le font pas.

Visibilité pour les développeurs

Dans le tableau précédent, toutes les propriétés à l’exception des propriétés Plug-and-Play (PnP) sont visibles par les applications de bureau en mode utilisateur et les pilotes en mode noyau via un en-tête partagé (Netioapi.h). Les propriétés PnP sont visibles via l’en-tête Devpkey.h et sont utilisées par les applications de bureau en mode utilisateur et les pilotes en mode noyau. Par exemple, consultez la documentation DEVPKEY .

L’API d’assistance IP est également disponible pour les applications de bureau en mode utilisateur et les pilotes en mode noyau.

La surface de l’API UWP expose uniquement la propriété ifGuid directement. Toutefois, il est possible pour les développeurs d’applications UWP d’importer la fonction GetIfTable2 à l’aide de P/Invoke s’ils sont tenus d’accéder à d’autres propriétés d’interface réseau.

Pour connaître les définitions de base d’information de gestion (MIB) pour les interfaces réseau, consultez RFC 2863.

Pour les interfaces réseau NDIS dans les pilotes réseau, consultez interfaces réseau NDIS.

Pour obtenir la référence de l’API Netioapi.h, consultez l’en-tête netioapi.h.