Windows의 I / O 모델은 구성 요소 스택을 기반으로합니다. 데이터는 실제 네트워크 카드와 데이터를 소비 할 응용 프로그램 사이에있는 해당 스택의 다양한 구성 요소를 통과해야합니다. 때로는 이러한 다양한 구성 요소가 스택을 통과 할 때 데이터 (예 : TCP 패킷)를 검사하고 해당 패킷의 내용에 따라 데이터가 변경되거나 패킷이 완전히 삭제 될 수 있습니다.
애플리케이션에서 와이어로 또는 그 반대로 전달하기 위해 패킷이 통과하는 "네트워크 스택"의 단순화 된 모델입니다.
위 스크린 샷에서 가장 흥미로운 구성 요소 중 하나는 WFP (Windows Filtering Platform) 콜 아웃 API입니다. 확대하면 다음과 같이 보일 수 있습니다.
개발자는 자신의 모듈을이 스택의 적절한 위치에 자유롭게 꽂을 수 있습니다. 예를 들어 안티 바이러스 제품은 일반적으로이 모델에 플러그인하고 네트워크 트래픽을 검사하거나 방화벽 기능을 제공하는 "필터 드라이버"를 사용합니다. Windows 방화벽 서비스도이 모델에도 적합합니다.
Wireshark와 같은 네트워크 트래픽을 기록하는 응용 프로그램을 작성하려면 자신의 드라이버를 사용하여 가능한 낮은 스택에 삽입하여 네트워크 패킷을 감지하는 것이 좋습니다. 방화벽 모듈이이를 삭제하기 전에
따라서이 과정에 관련된 많은 "드라이버"가 있습니다. 다양한 유형의 드라이버도 있습니다. 또한 하드 디스크 드라이브 읽기 및 쓰기와 같은 시스템의 다른 형식의 입 / 출력도 매우 유사한 모델을 따릅니다.
또 다른 참고 사항-WFP 콜 아웃이 네트워크 스택에 자신을 격리시키는 유일한 방법은 아닙니다. 예를 들어, WinPCap은 NDIS와 드라이버와 직접 인터페이스하므로 필터링이 발생하기 전에 트래픽을 가로 챌 수 있습니다.
NDIS 드라이버
WinPCap
참고 문헌 :
Vista +의 차세대 TCP / IP 스택
Windows 필터링 플랫폼 아키텍처