In diesem Thema werden die Konzepte der Windows-Netzwerkschnittstelle auf hoher Ebene beschrieben, einschließlich der Möglichkeiten, sie im Code zu identifizieren, und ihrer Eigenschaften..
Wichtig
Dieses Thema richtet sich an Entwickler, die sich mit Windows-Desktop-Netzwerk-Apps und Kernel-Modus-Netzwerktreibern befassen. Dennoch können einige der hier vorgestellten Informationen auch für Systemadministratoren hilfreich sein, die Netzwerkschnittstellen über PowerShell-Cmdlets verwalten.
Übersicht
Eine Netzwerkschnittstelle ist der Punkt, an dem zwei Netzwerkgeräte oder Protokollebenen eine Verbindung herstellen. In der Regel wird dies durch eine physische Netzwerkschnittstellenkarte (Network Interface Card, NIC) für die Verbindung zwischen einem Computer und einem privaten oder öffentlichen Netzwerk dargestellt. Sie kann jedoch auch die Form einer softwaregeschützten Komponente wie der Loopbackschnittstelle (127.0.0.1 für IPv4 oder ::1 für IPv6) annehmen.
Netzwerkschnittstellen werden von der Internet Engineering Task Force (IETF) in RFC 2863 definiert und sollen nicht von Windows definiert werden. Ausführliche Fragen zur Bedeutung von Netzwerkschnittstellenbezeichnern wie ifIndex finden Sie in den Definitionen der IETF. Im restlichen Thema werden die Details zur Windows-spezifischen Implementierung erläutert.
Bezeichner und Eigenschaften der Netzwerkschnittstelle
Unter Windows kann eine Netzwerkschnittstelle auf unterschiedliche Weise identifiziert werden. Einige dieser Bezeichner werden verwendet, um Netzwerkschnittstellen voneinander zu unterscheiden, aber nicht alle Bezeichner sind aufgrund ihrer unterschiedlichen Eigenschaften für diese Aufgabe gleichermaßen geeignet. Im Allgemeinen werden Netzwerkschnittstellen durch eine Netzwerkadresse für externe Komponenten identifiziert. Dies kann z. B. eine Knoten-ID und eine Portnummer oder einfach eine eindeutige Knoten-ID sein.
Im Code kann eine Netzwerkschnittstelle auf vielfältige Weise identifiziert werden. In der folgenden Tabelle werden die Möglichkeiten beschrieben, wie eine Netzwerkschnittstelle zusammen mit den zugehörigen Eigenschaften identifiziert werden kann. Wir empfehlen die Verwendung der Schnittstellen-GUID (ifGuid) für die Programmierung, es sei denn, eine bestimmte API erfordert einen anderen Netzwerkschnittstellenbezeichner.
Hinweis
In der folgenden Tabelle stellen fett formatierte Zellen eine Eigenschaft dar,die für Netzwerkprogrammierer wünschenswert ist.
Identifier
Größe
Ist im System eindeutig
Ist in der Welt eindeutig
Ist vorhersehbar
Wird wiederverwendet, wenn die NIC entfernt wird
Bleibt auch nach Neustarts bestehen
Kann von Endbenutzern jederzeit geändert werden
Kann von Treibern jederzeit geändert werden
Allgemeine Vertrautheit mit Endbenutzern
Ist immer präsent
ifIndex
4 Bytes
Ja
Nr.
Nein
Ja
Nein1
Nein
Nein
Einige2
Ja
NetLuid
8 Bytes
Ja
Nr.
Nein
Ja
Ja
Nein
Nein
Nein
Ja
ifGuid
16 Bytes
Ja
Normalerweise3
No
Nein
Ja
Nein
Nein
Nein
Ja
ifAlias
514 Bytes
Ja für NICs4
No
Manchmal5
Ja
Ja
Ja
Nein
Ja
Normalerweise4
ifDescr
514 Bytes
Normalerweise6
No
Nein
Ja
Ja
Nein
Ja
Ja
Normalerweise
ifPhysAddress (MAC-ADRESSE)
0 bis 32 Bytes
In der Regel für NICs
In der Regel für NICs
Ja
An Hardware gebunden
Ja
Nein
Nein
Ja
Normalerweise7
PnP-Instanz-ID
Bis zu 400 Byte
Ja
Nr.
Nein
Ja
Ja
Nein
Nein
No
In der Regel für NICs8
PnP-Position (PCI-Steckplatznummer)
Bis zu 400 Byte
Ja
Keine
Ja
Ja
Ja
Nein
Nein
Manchmal.
Manchmal8,9
Hinweise für die vorherige Tabelle:
Für IfIndexes wird nicht garantiert, dass sie über Neustarts hinweg stabil sind, obwohl sie häufig denselben Wert wie beim vorherigen Start erhalten. Daher wird nicht empfohlen, wenn Treiber ifIndex verwenden, es sei denn, dies ist für eine API erforderlich.
Einige netsh Befehle verwenden ifIndex oder index als Eingabe. Daher sind einige administrative Benutzer mit der ifIndex-Eigenschaft vertraut, wenn sie den Befehl netsh häufig verwenden.
Wenn ein Computer geklont oder ein Image davon erstellt wird, sind möglicherweise einige der GUIDs identisch. Darüber hinaus verfügen bestimmte spezielle Netzwerkschnittstellen wie die integrierte Teredo-Schnittstelle möglicherweise über dieselbe GUID auf allen Computern.
NetCfg erzwingt, dass ein ifAlias eine nicht leere Zeichenfolge ist und unter allen NICs eindeutig ist. Der NDIS-Schnittstellenanbieter hingegen nicht. Daher ist es möglich, spezielle Netzwerkschnittstellen mit doppelten oder leeren Namen zu finden. Dies ist am häufigsten bei LBFO-Teams zu sehen.
Nur, wenn die Firmware konsistente Gerätebenennung unterstützt. Typisch verfügen Server über dieses Feature.
NetCfg weist allen Netzwerkschnittstellen eindeutige ifDescrs zu. Treiber können jedoch eine API aufrufen, um ifDescr auf etwas zu ändern, einschließlich etwas, das nicht eindeutig ist. Dazu führen einige Drittanbieter-Softwarepakete aus.
Nicht alle Medientypen haben eine „MAC-Adresse”. Beispielsweise gibt es bei einigen Tunneln dieses Konzept nicht, und sie geben einfach eine Byte-Reihe der Länge Null als ihre Netzwerkadresse an.
Nur auf Netzwerkschnittstellen vorhanden, die von einem PnP-Gerät unterstützt werden. Beispielsweise Loopbackschnittstellen, leichte Filterschnittstellen, Schnittstellen, die von einem NDIS-Schnittstellenanbieter bereitgestellt werden, und bestimmte spezielle integrierte NICs verfügen nicht über PnP-Geräte, die diese unterstützen.
Nur einige PnP-Busse unterstützen eine PnP-Standort-ID. Die integrierten PCI- und USB-Busse tun dies, während dies bei Geräten, die als root-Geräte aufgeführt sind, nicht der Fall ist.
Sichtbarkeit für Entwickler
In der vorherigen Tabelle sind alle Eigenschaften mit Ausnahme der Plug and Play -Eigenschaften (PnP) für Desktop-Apps im Benutzermodus und Kernelmodustreiber über einen freigegebenen Header (Netioapi.h) sichtbar. Die PnP-Eigenschaften sind über den Devpkey.h-Header sichtbar und werden sowohl von Desktop-Apps im Benutzermodus als auch von Kernelmodustreibern verwendet. Weitere Informationen finden Sie z. B. in der DEVPKEY-Dokumentation.
Die IP-Hilfs-API ist auch für Benutzermodus-Desktop-Apps und Kernelmodustreiber verfügbar.
Die Oberfläche der UWP-API macht die ifGuid-Eigenschaft nur direkt verfügbar. Es ist jedoch möglich, dass Entwickler einer UWP-App die GetIfTable2-Funktion mithilfe von P/Invoke importieren, wenn sie auf andere Netzwerkschnittstelleneigenschaften zugreifen müssen.
Zugehörige Themen
Informationen zu Management Information Base (MIB-)Definitionen für Netzwerkschnittstellen finden Sie unter RFC 2863.
Informationen zu NDIS-Netzwerkschnittstellen in Netzwerktreibern finden Sie unter NDIS-Netzwerkschnittstellen.
Zeigen Sie Ihre Kenntnisse zu Entwurf, Implementierung und Wartung der Azure-Netzwerkinfrastruktur, zum Lastenausgleich für Datenverkehr, zum Netzwerkrouting u. v. m.