1. Network Driver Interface Specification(NDIS) ¶
마이크로 소프트에서 제공하는 네트워크 디바이스 드라이버를 위한 인터페이스 규격
Windows Driver Model(WDM)이 윈도우즈에서 동작하는 디바이스 드라이버들의 호환성을 위해 마이크로 소프트가 OS 레벨에서 제공하는
인터페이스 규격이라면 NDIS는 네트워크 드라이버를 위해 만들어진 규격이다.
윈도우즈는 NDIS를 통해 아래와 같은 세가지 기본 타입의 드라이버 종류를 제공한다.
Windows Driver Model(WDM)이 윈도우즈에서 동작하는 디바이스 드라이버들의 호환성을 위해 마이크로 소프트가 OS 레벨에서 제공하는
인터페이스 규격이라면 NDIS는 네트워크 드라이버를 위해 만들어진 규격이다.
윈도우즈는 NDIS를 통해 아래와 같은 세가지 기본 타입의 드라이버 종류를 제공한다.
- Miniport NIC driver
WDM에서 말하는 Bus driver나 Physical device driver와 비슷한 기능을 제공한다.
- Intermediate driver
불가능한 경우(예를 들어 protocol driver가 지원하지 않는 방식의 miniport driver가 연결될 필요가 있는 경우)에 둘 사이의 인터페이스 전환을 위해
혹은 기타 protocol driver와 miniport driver 사이에서 오고가는 정보를 가공, 캡쳐하는 등의 목적으로 사용된다.
- Protocol driver
등의 작업을 수행하는 드라이버
1.1. NDIS와 OSI 7 layer ¶
윈도우즈가 제공하는 네트워크 드라이버들은 OSI 레퍼런스 모델의 1~4 layer(physical, data link, network, transport)에서 실행된다.
- physical layer는 NIC가 어떻게 데이터들을 전기적인 신호로 전환하여 케이블로 전달하는지 혹은 전달된 전기 신호를 의미있는 데이터로
- data link layer는 다시 Logical Links Control(LLC)과 Media Access Control(MAC) layer로 나뉘어 진다. LLC는 logical link의 setup과 tear down, frame control
driver에서 실행된다. 프로토콜 스택상에서 data link layer는 보통 (윈도우즈가 아닌 다른 OS에서도) NDIS와 같은 디바이스 드라이버에 매칭된다.
- network layer는 프로토콜 스택상에서 IP, ARP, ICMP 등의 프로토콜에 해당하며 패킷의 라우팅, 트래픽 제어, 프레임 조작 등의 기능을 담당한다.
- Transport layer는 프로토콜 스택상에서 TCP, WTP등의 프로토콜에 해당하며 패킷의 전송 보장, 에러 검출 등의 역할을 수행함으로써 상위 어플리케이션 레벨이
일일이 각 패킷에 대한 Ack 패킷을 보내주지 않아도 되며 반대로 우리가 데이터를 전달할 때 중간에 패킷이 유실되더라도 재전송을 걱정할 필요가 없는 것은 TCP protocol
stack에서 이러한 일들을 대신 수행하기 때문이다.)
- NDIS에서는 network layer와 transport layer 그리고 LLC 계층에서 하는 일들을 transport driver에서 수행한다.(일반적으로 이런 것들을 TDI 드라이버라고 부른다.)