Chapter 2. 윈속 디자인
시스템 구조
대부분의 윈속 API들은 WINSOCK2.H에 선언, WS2_32.DLL에 구현.
응용 프로그램이 윈속 API를 호출하면 WS2_32.DLL에 존재하는 함수들을 호출하게 된다.
* 윈속 DLL 의 함수들의 동작 방법
1. 입력된 파라메터들이 올바른지 검사
2. 어떤 프로토콜 서비스 프로바이더 (protocol service provider)에게 명령을 전달할지 결정
3. WS2_32.DLL은 어떤 프로바이더에게 이 호출을 전달할지 결정
* 프로바이더
1. 베이스 프로바이더 (base provider)
전송 프로토콜 (transport protocol)의 바로 위에 놓여짐.
Microsoft TCP/IP, UDP/IP, RSVP(Resource Reservation Protocol) 같은 것이 있음
2. 레이어드 프로바이더 (layered provider)
WS2_32.DLL과 베이스 프로바이더 사이에 놓여짐.
윈속 함수의 호출을 가로챈다.
하위 프로바이더로 내려가는 모든 호출을 블록하고 가공한다.
혹은 아무 처리도 하지 않은채 하위 프로바이더에게 호출을 그대로 전달하기도 한다.
[ 이 그림은 제가 머릿속에서 이해하기 쉽게 구상한 모습입니다. 실제와 다를수 있음..ㆀ ]
<< 윈속 시스템 구성도 >>
메시지 중심 (Message-Oriented) 프로토콜
- 하나의 메시지를 주고 받으며 각각의 메시지들은 분리되어 전송된다. 또한 수신측에서는 분리된 메시지로 데이터를 받게 된다.
- 수신측은 하나 이상의 데이터를 이어서 받을 수 없다.
- 네트워크 게임에서 주고 받는 데이터가 메시지 경계의 보호(preserving message boundary)의 좋은 예다.
스트림 중심 (Stream-Oriented) 프로토콜
- 메시지 경계를 가지지 않는 프로토콜을 말한다.
- 스트림 서비스 (Stream service) : 연속적인 데이터를 전송하는 것.
수신측 = 메시지의 경계가 없이 읽을 수 있을 만큼 데이터를 읽음.
송신측 = 메시지가 더 작은 조각으로 나누어지거나 다른 메시지와 함케 큰 패킷들로 병합되어 전송 가능.
댓글 없음:
댓글 쓰기