티스토리 뷰
시스템 구조
대부분의 윈속 API들은 winsock2.h에 선언되어 있고 ws2_32.dll에 구현되어 있다.
마이크로소프트의 윈속 확장 함수들은 mswsock.dll에 구현되어 있다.
이런 확장 함수들은 MicroSoft에서 임의로 추가한 것이라 특정 버전의 Windows에서만 작동한다.
응용프로그램이 윈속 API를 호출하면 ws2_32.dll에 존재하는 함수를 호출하게 된다.
윈속 dll의 함수들은 다음과 같은 방법으로 동작한다.
1. 입력된 파라미터들이 올바른지 검사
2. 어떤 프로토콜 서비스 프로바이더에게 명령을 전달할지 결정
윈속 카탈로그(winsock catalog)에는 여러 개의 프로바이더가 존재할 수 있다.
따라서 ws2_32.dll은 어떤 프로바이더에게 이 호출을 전달할지 결정한다.
프로바이더의 종류
프로바이더에는 base provider와 layer provider가 있다.
base provider
베이스 프로바이더는 전송 프로토콜(transport protocol)의 바로 위에 놓이게 되며
Microsoft TCP/IP와 UDP/IP, RSVP 같은 것이 있다.
Microsoft base provider는 msafd.dll과 mswsock.dll로 구성이 된다.
실제로는 TCP/IPM, IPX/SPX, NetBIOS, AppleTalk와 같은 같같의 프로토콜에 대해
하나 이상의 프로바이더가 존재한다.
layer provider
ws2_32.dll과 베이스 프로바이더 사이에 놓여 있으며 윈속 함수의 호출을 가로채게 된다.
하위 프로바이더로 내려가는 모든 호출을 블록하고 가공하거나 아무런 처리도 하지 않는다.
여러 개의 레이어드 프로바이더가 시스템에 설치되어 있다면
하나의 레이어드 프로바이더가 다른 레이어드 프로바이더 위에 놓이게 된다.
Windows Socket kernel mode driver
윈속 함수의 호출이 베이스 프로바이더에 도달하게 되면 베이스 프로바이더는
윈속 커널 모드 드라이버를 호출하게 된다.
Winodws의 전송 프로토콜은 윈속과 비슷한 인터페이스를 제공하지 않고
TDI(Transport Driver Interface)라고 하는 일반적인 형태의 인터페이스를 제공한다.
이러한 인터페이스를 제공해 Windows의 내부 시스템들은 버전에 관계없는 프로그래밍 인터페이스를 사용할 수 있다.
소켓과 같은 인터페이스는 AFD.SYS에 의해 제공이 된다.
AFD는 TDI를 통해 전송 프로토콜드라이버을 호출하게 된다.
- Total
- Today
- Yesterday
- 생활코딩#MySQL
- 생활코딩
- 조건문
- HTML
- php
- Link
- 글로
- 관계형데이터베이스
- 기초
- GRID
- visual studio code
- 문자열
- 차이점
- 변수
- 언리얼엔진
- 언리얼엔진4
- TAG
- 동영상을
- 생활코딩#동영상을#글로#html
- 정렬
- 객체
- 알고리즘
- css
- C언어
- PHP&MySQL
- javascript
- inline
- 선택자
- 네트워크 프로그래밍
- 안드로이드 스튜디오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |