서버란 클라이언트의 요청에 요청을 처리하고 응답하는 컴퓨터를 말한다.
목차
서버의 사전적 정의
컴퓨터 망에서 클라이언트라고 불리는 컴퓨터에 [정보를 제공]하는 컴퓨터.
서버를 사용하는 아키텍쳐를 클라이언트 서버 모델이라고 부른다.
클라이언트 - 서버 모델
서버를 알기위해서는 클라이언트와 서버의 관계에 대해 알아야 한다.
클라이언트-서버 모델은 크게 서버와 클라이언트, 공유자원, 서비스, 네트워크 프로토콜 총 5가지로 나누어 볼 수 있다.
- 서버
- 서버는 한가지 이상의 서버 프로그램을 실행하고 있어야 한다.
- 서버는 클라이언트와 자원을 공유한다.
- 서버는 클라이언트의 요청을 처리하여 [응답(Response)]한다.
- 하나 혹은 다수의 클라이언트에게 네트워크 프로토콜에 맞추어 서비스를 제공한다.
- 서버는 제공하는 서비스에 따라 분류된다.(ex. 게임서버, 웹서버, 프린트 서버, 등..)
- 클라이언트
- 클라이언트는 하나 혹은 다수의 서버와 연결될 수 있다.
- 클라이언트는 서버에 네트워크 프로토콜에 맞추어 서비스를 [요청(Request)]한다.
- 클라이언트는 서버에 자원을 공유하지 않지만 [요청]의 일부로 자신의 자원을 공유할 수 있다.
- 서버에서 돌아오는 응답을 네크워크 프로토콜을 지켜 해석한다.
- 공유자원
- 공유자원은 서버 컴퓨터가 공유하는 요소이다.
- 공유자원은 소프트웨어와 하드웨어 2가지 분류로 나뉜다.
- 소프트웨어: 코드, 영상, 자료, 파일, 이미지, 등...
- 하드웨어: CPU, Ram, 저장장치(HDD, SSD), 등...
- 서비스
- 서비스는 컴퓨터의 자원을 추상화 한 것으로 이를 서버가 클라이언트에게 [응답]하는 방식으로 공유된다.
- 컴퓨터 자원의 추상화: 하드웨어나 소프트웨어를 직접 사용하는 복잡함을 숨기고, 필요기능만 간단히 사용가능하게 제공
- ex. 웹 서비스→ 웹서버 내부에서 어떤 방식으로 HTML을 생성하는지 몰라도 주소를 입력하면 웹 페이지를 이용할 수 있다.
- ex. 프린트 서비스 → 프린터의 작동방식을 몰라도 "인쇄"요청을 보내면 인쇄가 가능하다.
- 이를 통해 클라이언트는 서버의 동작방법을 몰라도 클라이언트가 [요청]하면 서버가 [응답]하여 서비스를 사용할 수 있다.
- 네크워크 프로토콜
- 클라이언트와 서버가 서로 통신하기 위한 규칙이자 규격이다.
- 네트워크 프로토콜에는 공통언어와 규칙이 정의되어 있다.
- HTTP, FTP, SMTP, TCP/IP, UTP 등이 네크워크 프로토콜에 해당한다.
- 네트워크 프로토콜이 있어서 클라이언트와 서버가 다른 언어를 사용하고 하드웨어가 달라도 통신이 가능하다.
클라이언트와 서버와의 관계
클라이언트와 서버는 요청(Request)-처리(Process)-응답(Response)의 구조로 작동한다.
→ 클라이언트가 서버에 서비스를 요청하면 서버는 요청을 처리한 후 처리 결과를 클라이언트에게 응답한다.
클라이언트와 서버는 같은 컴퓨터에서 작동할 수 있으며 이때도 네트워크 프로토콜을 사용하여 통신한다.
클라이언트와 서버는 N:N의 관계로 연결 된다. 즉 하나에 서버에 다수의 클라이언트가 연결 될수 있으며 하나의 클라이언트가 다수의 서버에 연결할 수 있다.
서버의 역할
서버는 제공하는 서비스에 따라 다양한 역할을 수행한다. 그중 서버에서 대표적으로 하는 일은 아래와 같다.
- 데이터 저장과 관리: 서비스 사용자의 개인정보 혹은 사용이력, 자료, 등 서비스 사용에 필요한 데이터를 저장하고 관리한다.
- 보안관리: 서비스 사용에 필요한 정보와 데이터가 저장되어 있기에 보안의 핵심으로 관리된다.
- 네트워크 통신: 같은 서비스 사용자간의 통신을 중계한다.
게임서버
정의: 멀티플레이 비디오 게임을 위해 게임 클라이언트에 사용하는 서버
게임서버의 호스팅
게임서버의 호스팅은 크게 2가지 방법으로 나눌수 있다.
- 게임을 서비스하는 회사가 서버를 운영
- 플레이어가 자신의 비용으로 운영버란 클라이언트의 요청에 요청을 처리하고 응답하는 컴퓨터를 말한다.
게임서버의 종류
- 리슨(Listen) 서버
- 게임 클라이언트와 같은 프로세서로 실행 된다.
- 별도의 서버 없이 다른 플레이어가 호스팅하는 서버에 접속하여 플레이하거나 혹은 다른 플레이어를 초대하여 플레이
- 게임을 종료하면 서버도 같이 종료되기 때문에 호스트가 종료할 시 게임이 종료된다.
- 위 문제점을 해결하기위해 호스트가 게임을 종료하면 같은 서버에 있던 플레이어에게 호스트 권한을 이전한다.
※ 일반적인 소규모 게임에서 이용된다.
- 전용(Dedicated) 서버
- 클라이언트와는 별도의 고성능 네트워크상에 있는 전용 컴퓨터에서 실행된다.
- 플레이어는 클라이언트를 통해 전용 서버에 접속하여 플레이한다.
- 게임의 개발한 업체 혹은 업체에 허가를 받은 퍼블리셔가 서버의 실행 및 유지권한을 갖는다.
- 모든 클라이언트의 통신이 서버를 거쳐야 한다.
- 게임에 따라 세션의 형태(각 세션마다 서버를 할당)로 운영되기도 한다.
※ MMORPG, 배틀로얄 같은 대규모 게임에서 이용된다.
- p2p(peer to peer) 서버
- 별도의 서버와 클라이언트가 없으며 각각의 피어가 클라이언트이자 서버역할을 한다.
- 각각의 피어는 각자에게 할당된 연산을 처리하여 모든 플레이어와 통신한다.
- 리슨 서버의 호스트에게 트래픽이 몰리는 문제점을 각각 분담하여 처리하는 것으로 해결한다.
- 호스트가 나가도 게임이 유지되며 나간 사람의 연산은 남아있는 피어에게 분배된다.
- 적은수의 유저가 대량의 연산을 주고 받는데 가장 유리하다.
※ 실시간 시뮬레이션 게임이나 격투 액션 게임에서 이용된다.
'Basic Information' 카테고리의 다른 글
| API (2) | 2025.08.08 |
|---|