네트워크 드라이버 인터페이스 사양

네트워크 드라이버 인터페이스 사양(Network Driver Interface Specification, NDIS)은 네트워크 인터페이스 컨트롤러 (NIC)를 위한 응용 프로그래밍 인터페이스 (API)이다.

사양
마이크로소프트와 3Com이 공동 개발했으며 주로 마이크로소프트 윈도우에서 사용된다. 그러나 오픈 소스 NDISwrapper 및 프로젝트 이블(Project Evil) 드라이버 래퍼 프로젝트를 통해 NDIS 호환 NIC를 리눅스, FreeBSD 및 NetBSD와 함께 사용할 수 있다. BeOS의 파생물인 magnussoft ZETA는 여러 NDIS 드라이버를 지원한다.

NDIS는 OSI 데이터 링크 계층 (2계층)의 상위 부계층인 논리 링크 제어 (LLC) 부계층을 형성한다. 따라서 NDIS는 데이터 링크 계층의 하위 부계층인 매체 접근 제어 (MAC) 부계층과 네트워크 계층 (3계층) 사이의 인터페이스 역할을 한다.

NDIS는 NIC 하드웨어의 기본 복잡성을 숨기고 3단계 네트워크 프로토콜 드라이버 및 하드웨어 수준 MAC 드라이버에 대한 표준 인터페이스 역할을 하는 "래퍼"라고도 불리는 함수 라이브러리이다.

다양한 윈도우 버전에서 지원하는 NDIS 버전은 다음과 같다:

 NDIS 2.0: MS-DOS, 윈도 포 워크그룹 3.1, OS/2
 NDIS 3.0: 윈도 포 워크그룹 3.11(Windows for Workgroups 3.11)
 NDIS 3.1: Windows 95
 NDIS 4.0: 윈도우 95 OSR2, NT 4.0, 윈도우 CE 3.0
 NDIS 4.1: 윈도우 98
 NDIS 5.0: 윈도우 98 SE, Me, 2000
 NDIS 5.1: 윈도우 XP, 서버 2003, 윈도우 임베디드 컴팩트 4.x, 5.0, 6.0
 NDIS 5.2: 윈도우 서버 2003 SP2
 NDIS 6.0: 윈도우 비스타
 NDIS 6.1: 윈도우 비스타 SP1, 서버 2008, 윈도우 임베디드 컴팩트 7, 윈도우 임베디드 컴팩트 2013
 NDIS 6.20: 윈도우 7, 서버 2008 R2
 NDIS 6.30: 윈도우 8, 윈도우 서버 2012
 NDIS 6.40: 윈도우 8.1, 윈도우 서버 2012 R2
 NDIS 6.50: 윈도우 10, 버전 1507
 NDIS 6.51: 윈도우 10, 버전 1511
 NDIS 6.60: 윈도우 10, 버전 1607 및 윈도우 서버 2016
 NDIS 6.70: 윈도우 10, 버전 1703
 NDIS 6.80: 윈도우 10, 버전 1709
 NDIS 6.81: 윈도우 10, 버전 1803
 NDIS 6.82: 윈도우 10, 버전 1809 및 윈도우 서버 2019
 NDIS 6.83: 윈도우 10, 버전 1903 및 윈도우 서버 2022
 NDIS 6.84: 윈도우 10, 버전 2004
 NDIS 6.85: 윈도우 10, 버전 21H2
 NDIS 6.86: 윈도우 11, 버전 21H2
 NDIS 6.87: 윈도우 11, 버전 22H2
 NDIS 6.88: 윈도우 서버 2022, 버전 23H2
 NDIS 6.89: 윈도우 11, 버전 24H2

NIC에서 허용하는 트래픽은 NDIS 미니포트 드라이버에 의해 제어되는 반면, TCP/IP와 같은 다양한 프로토콜은 NDIS 프로토콜 드라이버에 의해 구현된다. 단일 미니포트는 하나 이상의 프로토콜과 연결될 수 있다. 이는 미니포트로 들어오는 트래픽이 여러 프로토콜 드라이버에 의해 병렬로 수신될 수 있음을 의미한다. 예를 들어, Winpcap은 수신 패킷을 캡처하기 위해 선택된 미니포트에 두 번째 프로토콜 드라이버를 추가한다. 또한 단일 물리적 NIC에서 트래픽을 송수신하는 가상 미니포트 드라이버를 구현하여 여러 가상 NIC를 시뮬레이션하는 것이 가능하다. 가상 미니포트 드라이버 사용의 한 예는 각각 다른 VLAN을 가진 가상 NIC를 추가하는 것이다. 구현은 다른 드라이버가 동일한 버퍼를 수신했다고 가정할 수 없으므로, 수신 버퍼는 읽기 전용으로 처리해야 하며 패킷 내용을 변경하는 드라이버는 자체 버퍼를 할당해야 한다. NDIS 미니포트 드라이버는 윈도우 드라이버 모델 인터페이스를 사용하여 네트워크 하드웨어를 제어할 수도 있다.

또 다른 드라이버 유형은 NDIS 중간 드라이버이다. 중간 드라이버는 MAC와 IP 계층 사이에 위치하며 NIC에서 허용되는 모든 트래픽을 제어할 수 있다. 실제로는 중간 드라이버가 미니포트 및 프로토콜 인터페이스를 모두 구현한다. 미니포트 드라이버와 프로토콜 드라이버는 실제로 중간 드라이버에 있는 해당 미니포트 및 프로토콜 인터페이스와 통신한다. 이 설계는 미니포트와 프로토콜 드라이버 사이에 여러 개의 연결된 중간 드라이버를 추가할 수 있도록 한다. 따라서 드라이버 공급업체는 트래픽을 보내는 인터페이스가 체인의 마지막 드라이버에 의해 구현되었다고 가정할 수 없다. NDIS를 사용하여 응용 프로그램을 작성하려면 마이크로소프트의 윈도우 드라이버 키트 (WDK)에 포함된 샘플을 사용할 수 있다. "PassThru" 샘플은 이 드라이버 유형에 필요한 모든 세부 정보를 구현하지만 트래픽을 체인의 다음 드라이버로 전달하기만 하므로 중간 드라이버에 대한 좋은 시작점이다.

NDIS 4.1은 WDM 기능을 구현했다. NDIS 5.0은 TCP/IP 오프로드 기능을 구현했다.

윈도우 10 버전 2004부터는 드라이버 개발 프로세스를 단순화하기 위해 네트워크 어댑터 WDF 클래스 확장(NetAdapterCx)이라는 새로운 네트워크 어댑터 드라이버 프레임워크가 만들어졌다.

 같이 보기 
 PC/TCP 패킷 드라이버

 각주 

 외부 링크 
 Windows 핵심 네트워킹
 NDIS 드라이버
 마이크로소프트 MSDN 디자인 가이드

분류:장치 드라이버
분류:컴퓨터 네트워킹
분류:마이크로소프트 API