[ 2024.08.26 TIL ] 서버와 클라이언트

박지영·2024년 8월 26일
0

Today I Learned

목록 보기
31/84

서버

서버란?

서버의 정의

  • 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다.

  • 간단히 정리하자면 서버란 요청을 받으면 데이터를 보내주는 프로그램이나 장치를 말한다.

  • 이때 보내주는 데이터를 서비스라고 할 수 있다.

서버에게 요청하는 방법

  • 읽기 (GET)

  • 쓰기, 생성 (POST)

  • 수정 (PUT)

  • 삭제 (DELETE)

서버의 종류

  • 웹 서버

    • 웹 페이지를 배포할 수 있지만 애플리케이션을 배포하거나 호스팅 할 수 없는 서버.

    • S/W적 의미로 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램

    • H/W적 의미로 이러한 프로그램을 실행하는 컴퓨터

    • Apache HTTP server, 마이크로소프트 IIS 등

  • 애플리케이션 서버

    • 사용자가 원격으로 액세스 할 수 있는 애플리케이션을 호스팅하거나 배포하는 서버.

    • WAS라고 불린다.

    • 기본적인 기능 3가지

      • 프로그램 실행 환경과 데이터베이스 접속 기능
      • 여러 개의 트랜잭션 관리
      • 업무를 처리하는 비즈니스 로직 수행
    • Apache tomcat, weblogic 등

  • 프록시 서버

    • 클라이언트와 서버의 중간에 위치하는 서버. (중계기)

    • 요청 받았던 내용들을 캐시 형태로 저장해두고 캐시 안의 정보를 요구하는 요청을 중간에서 전달함으로써 전송 시간을 절약할 수 있게 한다.

    • 보안을 위해 익명성을 유지하는 데 사용하기도 한다.

  • 메일 서버

    • 이메일 프로토콜(SMTP)을 사용하여 이메일을 보내고 받는 서버.

    • 메일 전송 에이전트(송신), 메일 배달 에이전트(수신)로 구분된다.

클라이언트

클라이언트란?

클라이언트의 정의

  • 둘 이상의 컴퓨터들이 통신할 때 호스트에 종속되어 통신하는 컴퓨터.

  • 사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스.

  • 데이터를 제공받는 쪽을 의미한다.

  • 크롬, 익스플로러 같은 브라우저가 해당된다.

클라이언트의 종류

  • 팻 클라이언트 (fat client)

    • 스스로 다량의 데이터를 처리하는 클라이언트.

    • 서버에 의지하지 않는다.

    • 개인용 컴퓨터, 노트북 등이 해당

    • 환경은 닷넷 프레임워크, 자바, 비주얼 스튜디오 등

  • 씬 클라이언트 (thin client)

    • 최소한의 클라이언트. 호스트 컴퓨터의 리소스 사용.

    • 다량의 데이터를 처리하는 애플리케이션 서버가 제공한 사진을 그래픽으로 보여주는 역할.

    • 환경은 js/ajax, asp, jsp, django, PHP 등

  • 하이브리드 클라이언트

    • 위 두 개를 합쳐놓은 형태.

    • 로컬로 처리하지만 데이터 보관을 위한 서버에 의지한다.

클라이언트 - 서버 구조

구분

  • 서버와 클라이언트는 성능과 관계 없이 역할에 따라 구분된다.

  • 역할은 애플리케이션이 결정한다.

  • 클라이언트는 서버에 필요한 데이터를 요청한다.

  • 서버는 클라이언트의 요청을 응답한다.

  • 대표적인 웹 서버 - 클라이언트 구조로 월드 와이드 웹(WWW)이 있다.

동작 예시

  1. 비유하자면 (get 요청) 고객(클라이언트)가 네이버 웹툰을 보기 위해 도메인 주소를 입력하면
  1. DNS에서 입력된 도메인 값을 IP주소로 변환하여 웹브라우저로 전송한다.
  1. 전송받은 웹 페이지 정보를 HTTP 프로토콜을 사용하여 웹 서버에 요청 메시지를 전송한다.
  1. 서버에서 받은 내용을 분석하여 URL 정보에 해당하는 데이터를 검색하여 결과값을 응답 메시지로 생성하여 브라우저에 전송한다.
  1. 전송 받은 응답 메시지를 브라우저를 통해 변환하여 고객이 네이버 웹툰 페이지를 볼 수 있게 된다.

웹 애플리케이션 서버(WAS)와 게임 서버

공통점

  • 클라이언트 - 서버 구조를 이용한다.

  • 특정 프로토콜을 사용하여 네트워크를 통해 통신한다.

차이점

  • WAS

    • 브라우저라는 제약이 있기 때문에 HTTP 프로토콜만을 사용한다.

    • 단방향 통신 모델을 사용한다. (connectionless, stateless)

    • 웹 또는 브라우저에 캐시를 저장하여 캐싱한다.

    • 생산성과 확장성이 중요하다. -> 프레임워크가 많다.(스프링부트,장고 등)

  • 게임 서버

    • 대규로의 사용자의 요청을 받기 때문에 많은 연산이 필요하다. -> 병렬 분산 처리를 사용한다.

    • 서버가 클라이언트로 패킷을 전송할 수 있다.

    • 서버가 요청에 대한 응답을 보내지 않아도 된다.

    • 실시간 통신이 중요하다. (반응성) (응답 시간이 짧아야한다. -> 연산을 최저치로 유지)

    • 실시간으로 변동되는 데이터를 다뤄야하지만 무결해야한다.

profile
신입 개발자

0개의 댓글