Специфікація інтерфейсу мережного драйвера
Специфікація інтерфейсу мережного драйвера (Network Driver Interface Specification, NDIS) — це інтерфейс прикладного програмування (API) для мережних карт (Network Interface Cards, NIC). Він був спільно розроблений Microsoft та 3Com Corporation, і використовується в операційних системах Microsoft Windows.
NDIS є так званим LLC (Logical Link Control), який формує верхній шар канального (другого) рівня моделі OSI, і діє як інтерфейс між рівнем 2 та 3 (3 — мережний рівень). Нижній шар — це драйвер пристрою Media Access Control (MAC).
NDIS — це бібліотека функцій часто звана «обгорткою», яка приховує нижньорівневу складність NIC апаратури, і слугує як стандартний інтерфейс для драйверів мережних протоколів 3 рівня та MAC драйверів апаратного рівня.
Є такі версії NDIS підтримувані різними версіями Windows:
- NDIS 2.0: MS-DOS, Windows for Workgroups 3.1, OS/2
- NDIS 3.0: Windows for Workgroups 3.11
- NDIS 3.1: Windows 95
- NDIS 4.0: Windows 95 OSR2, Windows NT 4.0, Windows CE 3.0
- NDIS 5.0: Windows 98, Windows 98 SE, Windows Me, Windows 2000
- NDIS 5.1: Windows XP, Windows Server 2003, Windows CE 4.x, Windows CE 5.0
- NDIS 5.2: Windows Server 2003 SP2
- NDIS 6.0: Windows Vista
- NDIS 6.1: Windows Vista SP1, Windows Server 2008
- NDIS 6.20: Windows 7, Windows Server 2008 R2
Трафік прийнятий NIC контролюється NDIS Miniport драйвером, в той час як різні протоколи, такі як TCP/IP, реалізовані NDIS протокольними драйверами. Один мініпорт може бути асоційований з одним або більше протоколами. Це означає, що трафік, який прийшов в порт, може бути отриманий паралельно різними протокольними драйверами. Наприклад, Winpcap додає другий протокольний драйвер на вибраний мініпорт для захоплення вхідних пакетів. Більше того, можна симулювати кілька віртуальних NIC, реалізуючи драйвери віртуальних мініпортів, що слатимуть та отримуватимуть трафік з однієї фізичної NIC. Одним з прикладів використання драйверів віртуального мініпорта буде додавання віртуальних NIC, кожна зі своїм Virtual LAN. Відповідно до того факту, що реалізації не можуть знати, чи інший драйвер не отримав ті самі буфери, кожен має трактувати вхідні буфери як тільки для читання. Драйвер, що змінює вміст пакету має виділяти свої власні буфери.
Інший тип драйвера є NDIS проміжний (Intermediate) драйвер. Проміжні драйвери розташовані між рівнями MAC та IP, і можуть контролювати весь трафік, отриманий мережною карткою. На практиці, проміжні драйвери реалізують як мініпортові інтерфейси, так і протокольні. Драйвери мініпортів та протокольні драйвери фактично зв*язуються з відповідними протокольними та мініпортовими інтерфейсами проміжного драйвера. Така будова дозволяє додавання кількох зв*язаних проміжних драйверів між драйверами протоколів та мініпортів. Того виробники драйверів не мають вважати, що інтерфейс, на який вони шлють трафік, реалізований в останньому драйвері ланцюга. Для написання програм використовуючи NDIS можна послуговуватися прикладами, наявними в Windows Driver Kit (WDK) компанії Microsoft. Приклад «PassThru» є доброю стартовою позицією для проміжних драйверів, бо в ньому реалізуються всі необхідні деталі, потрібні в драйверах цього типу.
Див. також
Посилання
- https://web.archive.org/web/20100930045350/http://msdn.microsoft.com/en-us/library/ms797120.aspx Microsoft MSDN Design Guide
- http://blogs.msdn.com/wndp/ Windows Core Networking
- http://www.ndis.com/
- http://www.wd-3.com/archive/ExtendingPassthru.htm Extending PassThru