마이크로소프트 윈도우는 네트워킹을 고려하여 설계됐으며 I/O시스템과 윈도우 API를 통합한 광범위한 네트워킹 지원을 포함하고 있다. 네트워킹 소프트웨어의 기본적인 4가지 유형은 서비스, API, 프로토콜, 네트워크 어뎁터 드라이버이며 순서대로 네트워크 스택에서 계층을 이루고 있다. 각 계층은 잘 정의된 인터페이스를 갖고 있어 서드파티 업체는 자체적으로 이것을 이용해 네트워킹 기능을 확장 할 수 있다. 일부 구성요소가 여러 계층에 걸쳐 있기 때문에 OSI 계층과 네트워킹 구성요소가 정확히 대응되지 않는다.
네트워킹 API
-
네트워킹 API는 애플리케이션이 네트워크를 통해 통신하기 위한 프로토콜의 독립적인 방법을 제공.
-
유저모드나 유저, 커널 모드 양쪽에서 구현될 수 있다.
트랜스포트 드라이버 인터페이스(TDI) 클라이언트
-
일반적으로 네트워킹 API의 구현 중 커널모드 부분을 구현한 레거시 커널모드 디바이스 드라이버.
-
프로토콜 드라이버에 보냈던 I/O 요청 패킷이 윈도우 트랜스포트 드라이버 인터페이스 표준을 따르기 때문에 TDI클라이언트라고 명명됨.
-
TDI인터페이스는 사용이 금지되었으며 윈도우 향후 버전에서는 제거될 것.
-
TDI 트랜스포트와 NDIS 프로토콜 드라이버
커널모드 프로토콜 드라이버
-
TDI클라이언트로부터 IRP를 받고 IRP 요청을 처리함.
-
TDI 트랜스포트는 특정 프로토콜 헤더를 IRP의 데이터 영역에 추가하고 NDIS 함수를 사용하는 어댑터 드라이버와 통신하게 됨.
-
분리, 재결합, 순서화, 승인, 재전송 등 메시지 작업을 투명하게 하여 애플리케이션의 네트워크 통신을 용이하게 함.
윈속 커널(WSK)
-
TDI를 대체하는 커널모드 API로 트랜스포트에 독립적
-
이벤트 콜백과 IRP에 내장된 비동기 I/O작업과 같은 독특한 기능을 제공함으로써 유저모드 윈속과 의미상 유사한 소켓 프로그래밍을 사용해 네트워크 통신을 제공.
WPF(Windows Filtering Platform)
-
네트워크 필터링 애플리케이션을 개발할 수 있게 제공되는 시스템 서비스와 API의 집합
-
파일시스템 필터처럼 애플리케이션이 윈도우 네트워킹 스택의 여러 개층에서 패킷처리과정과 상호작용 할 수 있게 함.
WFP 콜아웃 드라이버
- WFP에 의해 제공되는 기본 기능을 확장하기 위해 TCP/IP에 기반을 둔 네트워크 데이터를 처리하는 하나이상의 콜아웃을 구현하는 커널모드 드라이버
NDIS 라이브러리
-
네트워크 인터페이스 카드를 캡슐화 하는 추상화 메커니즘 제공.
-
윈도우 커널 모드 환경의 특성을 감춤
-
TCP/IP와 레거시 TDI 트랜스포트가 사용하는 기능을 익스포트함
NDIS 미니포트 드라이버
-
특정 NIC를 위해 네트워크 스택과 인터페이스를 책임지는 드라이버
-
윈도우 NDIS라이브러리로 맵핑되어 작성
-
IRP를 처리하지 않고 패킷을 보내거나 속성을 쿼리하는 것과 같은 NIC에서 간단한 작업을 수행하는 함수에 포인터를 담은 call-table 인터페이스를 NDIS라이브러리에 등록함.
-
하드웨어 추상화 계층 함수를 포함하는 NDIS 라이브러리 함수를 사용해 네트워크 어댑터와 통신함.
참고
- Windows Internals(7th)
'개발 > Windows' 카테고리의 다른 글
UNICODE_STRING 동적할당 하기 / 드라이버개발 (0) | 2020.07.24 |
---|---|
Windows 드라이버 커널모드에서 파일 해시 구하기 (0) | 2020.07.23 |
Python2.x 에서 error: Microsoft Visual C++ 9.0 is required. (0) | 2020.06.05 |
WFP (Windows Filtering Platform) 이란 ? (0) | 2020.05.07 |
세션0(session 0) 격리 윈도우 서비스에 미치는 영향 (0) | 2020.04.07 |
댓글