클라이언트와 서버

윤수빈·2024년 8월 26일
0
post-custom-banner

1. 클라이언트와 서버

1-1. 개념

클라이언트는 사용자가 직접 서비스를 요청할 수 있게 제공된 웹, 앱 등을 의미한다.
웹이나 앱이 아니어도 식당에서 예를 들면 클라이언트는 메뉴판, 서비스는 주문할 메뉴같은 것이다.
클라이언트는 서버에서 응답(제공)받은 서비스를 사용할 수 있다.

서버는 네트워크를 통해 클라이언트에 서비스를 요청받고 응답해주는 역할을 합니다.
주문이 들어오면 메뉴를 준비하여 제공해주는 것과 같습니다.

조금 더 광범위로 본다면 어떤 음식점이 있다면 손님은 클라이언트, 식당은 서버라고 생각할수도 있습니다.

1-2. 어떻게 작동하는가?

일단 클라이언트에서 요청받는 것을 서버가 제공해주려면 서버에서 제공해줄 서비스가 준비되어 있는지 체크되어야 합니다.

서버에서 요청을 받는 서비스에 따라 제공할 서비스를 갖추어졌다면 다음은 클라이언트와 데이터를 주고받을 수 있도록 연결을 하는 것입니다.

우리는 이 연결을 네트워크를 통해 데이터를 주고받을 수 있습니다.

이제 클라이언트가 네트워크에 연결되어 있다면 서버에 각종 요청을 보낼 수 있게되고, 네트워크를 통해 요청을 서버가 받습니다.

서버가 받으면 서비스를 제공하여 응답을 해주고, 이 응답은 다시 네트워크를 통해 클라이언트에 전달되는 방식입니다.

1-3. 컴퓨터에서 서버와 클라이언트

컴퓨터에서 서버와 클라이언트는 컴퓨터의 역할에 따라 구분됩니다.
즉, 내가 쓰는 PC가 역할에 따라 클라이언트가 될수도 있고, 서버가 될 수 있다는 뜻입니다.

이러한 컴퓨터의 역할은 컴퓨터에서 사용하는 애플리케이션이 결정해줍니다.

서비스를 제공하는 애플리케이션이 설치된 컴퓨터가 서버가 되겠고, 서비스를 요청하고 받는 애플리케이션이 설치된 컴퓨터가 바로 클라이언트가 됩니다.

1-4. 서버 애플리케이션 종류

네트워크를 통해 제공되는 서비스의 종류에 따라 다양한 서버 애플리케이션 종류가 있습니다.

보통 애플리케이션의 이름이 해당 서버 애플리케이션을 제공하는 이름일 가능성이 높습니다. 예를들어 웹 서비스를 제공하면 웹서버처럼 말입니다.

이렇게 다양한 서비스 중에서 종류를 나눈다면

  • 이메일 서비스
    : 네트워크를 통해 이메일을 주고받는 서비스 (outlook, gmail 등..)

  • 파일 전송 서비스
    : 네트워크를 통해 컴퓨터 간에 파일을 전송하는 서비스 (FTP 서버)

  • 원격 제어 서비스
    : 네트워크를 통해 다른 컴퓨터를 온라인으로 연결하여 직접 조작할 수 있게 하는 서비스

  • 온라인 게임 서비스
    : 네트워크를 통해 실시간으로 다른 컴퓨터와 게임을 할 수 있게 만드는 서비스. 꼭 실시간이 아니어도 다른 클라이언트의 순위, 진행현황 등을 볼 수 있는 게임도 네트워크를 통해 보여지는 것입니다.

  • 웹 서비스
    : 웹페이지의 각종 정보들을 네트워크를 통해 요청받아 제공하는 서비스입니다.
    웹 페이지 또한 웹 서버라는 곳에 저장되어 클라이언트에게 해당 페이지를 렌더링해줍니다.

1-5. 서비스를 주고받는 방법

클라이언트에서 Request(요청)하고 서버에서 Response(응답)을 통해 통신을 할텐데 어떻게 가능할까?

주고받는 서비스, 서버 애플리케이션의 종류에 따라 통신하는 방법은 다를 수 있습니다.

웹 서비스

웹 서비스를 예로 들면 웹 서비스는 기본적으로 웹 브라우저라는 사용자가 클라이언트로써 사용할 수 있는 제공된 애플리케이션이 있습니다.

예를 들어 네이버를 들어간다고 하면 주소창에 https://naver.com 으로 도메인을 검색하여 접속을 하게 됩니다.
여기서 만약 네이버 웹 브라우저를 제공해주는 네이버 서버가 현재 다운상태이면 네이버를 불러올 수 없을 것입니다.

웹 브라우저는 이 과정에서 HTTP 서버, HTTP 프로토콜을 사용하여 통신을 하게되고, HTTP 프로토콜에 맞는 양식을 서로 주고 받으며 통신을 하게 됩니다.

그리고 HTTPS 라는 보안이 강화된 프로토콜을 통해 통신 과정 중 외부에서 사용자의 중요한 정보에 접근하고 제어할 수 없도록 막아주는 방식도 있습니다.

2. 웹 서버와 게임 서버

2-1. 둘의 공통점과 차이점은 무엇일까?

게임 서버와 웹 서버는 일단 게임의 종류에 따라 공통점과 차이점이 나누어집니다.

웹 서버

웹 서버는 보통 클라이언트에서 요청을 하면 응답을 해주는 방식으로 실시간이 아닐 수 있습니다.

그리고, HTTP 서버를 통해 데이터를 주고받는 특징이 있습니다.

게임 서버

게임 서버는 TCP를 통해 클라이언트와 패킷을 주고받게 됩니다.
실시간 온라인 게임이라면 웹 서버와 다르게 stateless(무상태)가 없이 지속적으로 서버와 연결이 됩니다.
다만, 서버에 요청을 주어도 서버에서 응답을 주지 않아도 되는 점은 웹 서버와 큰 차이가 있습니다.

하지만 실시간이 아닌 모바일게임(퍼즐, 수집형 등) 이라면 어떨까요?
순위, 진행 현황, 친구 등을 확인한다고 했을 때, 직전의 정보를 받아내기 위해 요청을 하게 됩니다.
그리고 아무런 행동을 하지 않는다면 다른 클라이언트가 내 클라이언트에 영향을 주는 일은 없을 것입니다.
뽑기나 강화를 통해 바뀌어지는 부분은 해당 이벤트가 처리될때만 요청해주고 업데이트하게 됩니다.
이러한 게임은 보통 웹서버 방식으로 게임 서버를 만들기 때문에 공통적인 부분이 있습니다.

2-2. 게임 서버는 1개만 사용하는가?

게임 서버를 꼭 1개만 연결해야 하는 법은 없습니다.

게임 플레이는 게임 서버에서 다루고, 기타 통신은 웹 서버를 통해 받는 경우가 있습니다.

로그인, 인증, 결제와 같은 통신은 웹 서버를 통해 받고, 매치메이킹이나 인스턴스 던전을 생성하는 서버, 게임 서버는 별도로 운영하여 Connection을 맺고 통신을 할 수 있습니다.

하지만 이렇게 서버 분산을 하게되면 작업도 많아지고 복잡해질 수 있지만 규모가 커질수록 필요한 작업이라고 생각합니다.

profile
정의로운 사회운동가
post-custom-banner

0개의 댓글