top of page

- 일반적으로 클라이언트/서버 모델의 아키텍처 구성요소는 사용자 인터페이스(User Interface)를 담당하는 프리젠테이션 로직(Presentation logic), 업무 프로세스(Business Process)를 정의한 애플리케이션 로직(Application logic), 데이타 서비스(Data Service)를 담당하는 데이터베이스(Database)로 구성 됩니다.
- 이들 구성요소의 위치나 역할에 따라 2계층 구조(2-tier Architecture)와 3계층 구조(3-tier Architecture)로 분류됩니다.

- 클라이언트/서버 시스템의 구성요소 중 가장 중요한 것이 네트워크입니다. 앞에서도 언급했듯이, 클라이언트/서버 모델이 발전하게 된 배경에는 당시 브릿지(Bridge), 라우터(Router), 게이트웨이(Gateway)와 같은 접속장치의 발달로 LAN/WAN 기술이 빠른 속도로 발전하고 있었기 때문입니다.

- 발전된 LAN/WAN 네트워크 통신 환경에 따라 그에 맞는 다양한 프로토콜이 표준화되는 시도가 이루어 졌습니다. 가장 대표적인 것인 국제표준화기구(ISO)에서 개발한 OSI 7계층 모델(말 그대로 구현된 것이 아니라 일종의 표준 설계안)입니다. OSI 프로토콜은 프로토콜들의 계층별 집합입니다.

- 클라이언트/서버 모델에서 주료 사용되는 프로토콜은 TCP/IP 프로토콜입니다. TCP/IP 프로토콜은 OSI 모델이 설계되는 것과 병행해서 개발되었던 프로토콜로서 좀 더 간단하고 유연성이 뛰어나 실제 현장에서는 대부분 TCP/IP 프로토콜이 사용되고 있습니다. TCP/IP 역시 계층별 프로토콜의 집합으로서 OSI 모델과 달리 4개(또는 5개)의 프로토콜로 구성되어 있습니다.

 

 

 

- 하드웨어의 물리적 장치를 통해 특화된 네트워크 프로그램을 작성하기 위해서는 Application Layer(응용 계층)에서 소켓을 통해 Transport Layer(전송 계층)의 TCP 또는 UDP를 사용하여 개발해야 합니다. 소켓은 '응용 계층'에서 TCP/IP를 사용할 수 있는 일종의 창구역할로서 API 라이브러리입니다.

- '응용 계층'에 개발되는 네트워크 통신 프로그램은 통신 양방간 또는 다자간의 약속된 규약이 정의되고 구현됩니다. 즉, 이것도 일종의 프로토콜로서 FTP(파일 전송), telnet, SMTP(메일 전송), POP3(메일 수신)등이 대표적인 으용 계층 상의 프로토콜 입니다.

- 네트워크/서버 모델 프로그램 역시 해당 응용프로그램을 사용하는 주체의 필요에 의한 통신 규약을 정의하고 사용합니다.

- 초창기 클라이언트/서버 환경에서 애플리케이션 사이의 통신은 네트워크 패킷(packet) 기반의 전문 방식이 주로 사용되었습니다. 전문 통신 방식이란 통신에 참여하는 애플리케이션들이 주고받을 데이터의 포맷을 서로 약속(프로토콜)한 후 약속된 데이터 패킷을 전송하고 수신하는 것을 말합니다.

- 아래 그림의 예와 같이 통신을 위한 패킷을 정의하고 이 데이터 패킷을 애플리케이션이 주고 받게 됩니다. 클라이언트는 약속된 데이터 패킷의 포맷에 맞춰 패킷을 생성, 서버로 전송합니다. 서버는 패킷을 읽어 들이고 패킷에 기록된 데이터를 해석해 필요한 서버 측 작업을 수행하고 그 결과를 데이터 패킷에 기록해 클라이언트로 반환하는 것입니다.

 

struct DataPacket1 {

int size;

int cmd;

char accountid[16]; 

double amount;

 

}

 

struct DataPacket2 {

int size;

int cmd;

char from_accountid[16];

char to_accountid[16];

double amount;

 

}

 

 

아래 그림은 가장 기본적인 소켓 통신의 Workflow를 표현한 것입니다.

클라이언트에서 DataPacket1 포맷의 데이터를 보내면 서버에서는

DataPacket2 포맷의 데이터를 보내주는 것을 약속한(규약) 예제로 표현하였습니다.



 

ㅇㅇ.png
bottom of page