본문 바로가기
개발/Windows

윈도우 네트워킹 아키텍처 (Windows Networking Architecture)

by lucidmaj7 2020. 6. 24.
728x90
반응형

마이크로소프트 윈도우는 네트워킹을 고려하여 설계됐으며 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)
728x90
반응형

댓글