Bagikan melalui


Antarmuka jaringan

Topik ini menjelaskan konsep antarmuka jaringan tingkat tinggi di Windows, termasuk cara mereka dapat diidentifikasi dalam kode dan propertinya.

Penting

Topik ini ditujukan untuk audiens pengembang, baik untuk aplikasi jaringan desktop Windows maupun driver jaringan mode kernel. Namun demikian, beberapa informasi yang disajikan di sini juga dapat berguna untuk administrator sistem yang mengelola antarmuka jaringan melalui cmdlet PowerShell.

Gambaran Umum

Antarmuka jaringan adalah titik di mana dua bagian peralatan jaringan atau lapisan protokol terhubung. Biasanya, ini diwakili oleh Kartu Antarmuka Jaringan (NIC) fisik untuk koneksi antara komputer dan jaringan privat atau publik. Namun, ini juga dapat berbentuk komponen khusus perangkat lunak seperti antarmuka loopback (127.0.0.1 untuk IPv4 atau ::1 untuk IPv6).

Antarmuka jaringan didefinisikan oleh Internet Engineering Task Force (IETF) di RFC 2863 dan tidak dimaksudkan untuk didefinisikan oleh Windows. Untuk pertanyaan terperinci tentang arti pengidentifikasi antarmuka jaringan seperti ifIndex, lihat definisi IETF dari mereka. Sisa topik ini membahas detail implementasi khusus Windows.

Pengidentifikasi antarmuka jaringan dan properti

Di Windows, antarmuka jaringan dapat diidentifikasi dengan cara yang berbeda. Beberapa pengidentifikasi ini digunakan untuk membedakan antarmuka jaringan satu sama lain, tetapi tidak semua pengidentifikasi sama-sama cocok untuk tugas itu karena propertinya yang berbeda. Umumnya, antarmuka jaringan diidentifikasi oleh alamat jaringan ke komponen eksternal. Misalnya, ini mungkin ID simpul dan nomor port, atau hanya ID simpul unik.

Dalam kode, antarmuka jaringan dapat diidentifikasi dalam banyak cara. Tabel berikut merinci cara antarmuka jaringan dapat diidentifikasi bersama dengan properti terkait. Sebaiknya gunakan GUID antarmuka (ifGuid) untuk pemrograman kecuali API tertentu memerlukan pengidentifikasi antarmuka jaringan yang berbeda.

Catatan

Dalam tabel berikut, sel tebal mewakili properti yang diinginkan untuk pemrogram jaringan.

pengidentifikasi Ukuran Unik pada sistem Unik di dunia Dapat diprediksi Akan didaur ulang jika NIC dihapus Bertahan di seluruh boot ulang Pengguna akhir dapat memodifikasi kapan saja Driver dapat memodifikasi kapan saja Keakraban umum dengan pengguna akhir Selalu ada
ifIndex 4 byte Ya No No Ya No1 Tidak Tidak Beberapa2 Ya
NetLuid 8 byte Ya No No Ya Ya Tidak Tidak No Ya
ifGuid 16 byte Ya Biasanya3 No Tidak Ya Tidak Tidak No Ya
ifAlias 514 byte Ya untuk NIC4 No Kadang-kadang5 Ya Ya Ya Tidak Ya Biasanya4
ifDescr 514 byte Biasanya6 No No Ya Ya Tidak Ya Ya Biasanya
ifPhysAddress (ALAMAT MAC) 0 hingga 32 byte Biasanya, untuk NIC Biasanya, untuk NIC Ya Terikat dengan perangkat keras Ya Tidak Tidak Ya Biasanya7
ID instans PnP Hingga 400 byte Ya No No Ya Ya Tidak Tidak No Biasanya, untuk NIC8
Lokasi PnP (nomor slot PCI) Hingga 400 byte Ya No Ya Ya Ya Tidak Tidak Kadang-kadang Kadang-kadang8,9

Catatan untuk tabel sebelumnya:

  1. IfIndexes tidak dijamin stabil di seluruh boot ulang, meskipun sering menerima nilai yang sama dengan boot sebelumnya. Oleh karena itu, tidak disarankan agar driver menggunakan ifIndex kecuali jika diperlukan oleh API.
  2. Beberapa netsh perintah mengambil ifIndex, atau index, sebagai input. Oleh karena itu, beberapa pengguna administratif terbiasa dengan properti ifIndex jika mereka sering menggunakan netsh perintah.
  3. Jika komputer dikloning atau digambarkan, maka beberapa GUID mungkin sama. Selain itu, antarmuka jaringan khusus tertentu seperti antarmuka Teredo bawaan mungkin memiliki GUID yang sama di semua komputer.
  4. NetCfg memberlakukan bahwa ifAlias adalah string yang tidak kosong dan unik di antara semua NIC. Namun, penyedia antarmuka NDIS tidak. Untuk itu, dimungkinkan untuk menemukan antarmuka jaringan khusus dengan nama duplikat atau kosong. Ini paling umum terlihat dengan tim LBFO.
  5. Hanya jika firmware mendukung Penamaan Perangkat Konsisten. Secara tipikal, server memiliki fitur ini.
  6. NetCfg menetapkan ifDescrs unik ke semua antarmuka jaringan. Namun, driver dapat memanggil API untuk mengubah ifDescr menjadi apa pun, termasuk sesuatu yang tidak unik. Beberapa paket perangkat lunak pihak ke-3 melakukan ini.
  7. Tidak semua jenis media memiliki "alamat MAC." Misalnya, beberapa terowongan tidak memiliki konsep ini dan hanya mengiklankan array byte panjang nol sebagai alamat jaringan mereka.
  8. Hanya ada pada antarmuka jaringan yang didukung oleh perangkat PnP. Misalnya, antarmuka loopback, antarmuka filter ringan, antarmuka yang disediakan oleh penyedia antarmuka NDIS, dan NIC bawaan khusus tertentu tidak memiliki perangkat PnP yang mendukungnya.
  9. Hanya beberapa bus PnP yang mendukung ID lokasi PnP. Pci bawaan dan bus USB melakukannya, sementara perangkat yang dijumlahkan akar tidak.

Visibilitas ke pengembang

Dalam tabel sebelumnya, semua properti kecuali untuk properti Plug and Play (PnP) terlihat oleh aplikasi desktop mode pengguna dan driver mode kernel melalui header bersama (Netioapi.h). Properti PnP terlihat melalui header Devpkey.h dan digunakan oleh aplikasi desktop mode pengguna dan driver mode kernel. Misalnya, lihat dokumentasi DEVPKEY .

IP Helper API juga tersedia untuk aplikasi desktop mode pengguna dan driver mode kernel.

Permukaan API UWP hanya mengekspos properti ifGuid secara langsung. Namun, dimungkinkan bagi pengembang aplikasi UWP untuk mengimpor fungsi GetIfTable2 menggunakan P/Invoke jika diperlukan untuk mengakses properti antarmuka jaringan lainnya.

Untuk definisi basis informasi manajemen (MIB) untuk antarmuka jaringan, lihat RFC 2863.

Untuk antarmuka jaringan NDIS dalam driver jaringan, lihat Antarmuka Jaringan NDIS.

Untuk referensi NETIOAPI.h API, lihat header netioapi.h.