본문 바로가기

프로그래밍/미분류

socket and device\afd, device\tcp device\ksecdd

반응형
간단한 서버 샘플 프로그램을 디버그모드로 돌리면서, 어떻게 핸들이 생성되는지를 process explorer 로 살펴봤다. 아울러 tcpview 로도 언제 뜨는지를 확인해 봤다. 캡쳐한 그림을 참조.

사용자 삽입 이미지
winsock 초기화. Procexp 핸들 화면을 보면, 아무런 핸들도 생성되지 않았다.

사용자 삽입 이미지
socket 함수가 성공했다. \Device\Afd 핸들이 하나 생성되었음을 확인할 수있다. 아직 소켓만 생성된 상태이고, 이름은 바인드되지 않은 상태이다.

사용자 삽입 이미지
bind 함수가 성공하면서, \Device\Tcp 핸들이 하나 생성된다.

사용자 삽입 이미지
listen 이 성공하면서, \Device\KsecDD 핸들이 생성되고, 드디어 tcpview 에도 Server.exe 가 9000 포트로 LISTENING에 들어갔다는 게 뜬다.

WINDOWS INTERNALS 4판 8장 보안에 다음과 같은 설명이 있다.
커널 보안 장치 드라이버(KSecDD) : 암호화 파일 시스템 같은 커널 모드 보안 구성요소들이 사용자 모드의 Lsass와 통신하는 데 필요한 로컬 프로시저 호출(LPC) 인터페이스를 구현하는 커널 모드 라이브러리. KSecDD는 \WIndows\System32\Drivers\Ksecdd.sys에 들어있다.

이 세가지 핸들들이 언제 생성된다는 것 까진 이제 알았다. 근데 정작 이들이 뭘하는 애들인지는 잘 모르겠다. 클라이언트 쪽에서는 어떻게 생성되는지도 모르겠고.

이제 이 핸들들이 언제 죽는지도 살펴보고, 클라이언트에서는 핸들이 어떻게 만들어지는지 확인해 보는 재미있는 작업을 해 봐야겠다.

오늘의 교훈은 : sysinternals 만세.
728x90

'프로그래밍 > 미분류' 카테고리의 다른 글

[번역] AD 도메인으로 연결하기  (0) 2009.04.15
소켙과 핸들 1  (1) 2009.04.10
[복잡]  (0) 2008.12.05
비트 인버트는 선형적인가?  (0) 2008.11.27
[C|초급] 큰숫자에 작은숫자가 몇 번 나오나  (0) 2008.09.20