클라이언트와 서버

최경락 (K_ROCK_)·2021년 12월 24일
0

왜?

  • 만약, 어떤 앱에 모든 리소스(resource)가 들어있다면 단 하나의 정보를 업데이트 시키고 싶은 경우에도 앱전체를 업데이트 시켜야하는 불상사가 일어 날 것이다.
  • 그래서 정보를 사용하는 앱(클라이언트)과 받아올 수 있는 정보(서버)를 나누어서 사용한다.

클라이언트와 서버

  • 클라이언트(Client)란, 정보를 요청하는 매체를 이야기하며, 서버(Server)리소스를 제공하는 역할을 이야기한다.
  • 서버가 데이터를 제공하기 위해서는 반드시 요청이 있어야한다.
    → 그러나, 쿠키(Cookie)라는 데이터는 서버가 일방적으로 제공하는 데이터이며, 장기 보관가능하며 유지되는 데이터를 담는다.
  • 즉, 클라이언트는 손님과 같고, 서버는 카운터와도 같다.
  • 이때, 클라이언트와 서버로 구조를 나눈 것을 2 tier architecture 라고 이야기한다.
    → 클라이언트 - 서버 아키텍쳐
    → 만약 여기서 서버와 데이터베이스 간의 연결이 추가된다면 3 tier architecture.

클라이언트의 종류와 서버의 종류

  • 클라이언트의 종류로는 우리가 사용하는 데스크탑 앱, 스마트폰 앱, 웹 앱 등이 있다.
    → 서버를 통해 자료를 받아야하는 모든 앱들이 클라이언트이다.
  • 서버의 종류는 아래처럼 구분 할 수 있다.
    • 파일을 제공하는 파일 서버
    • 앱에서 필요한 정보를 제공하는 웹 서버
    • 메일을 전송을 돕는 메일 서버
    • 어떤 데이터를 제공하는 데이터베이스 서버

프로토콜

프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다.

  • MDN

  • 즉, 통신을 위한 일종의 약속이라고 볼 수 있다. (통신규약)

  • 웹 앱에서는 HTTP이라는 프로토콜로 서로의 데이터를 교환하며, 이를 이용해서 주고 받는 메시지HTTP 메시지라고 한다.

  • 동일한 일을 하기 위한 여러 프로토콜이 존재 할 수 있다.

OSI 7 계층

  • 프로토콜들이 어떤 계층에 속하여 있는지를 표시하는 개념이다.

API

  • Application Programming Interface 의 약자로, 서버가 클라이언트에게 제공하는 인터페이스이다.
  • 서버에 있는 어떤 데이터에 접근하기 위해서 어떤 방식으로 요청 해야하는지에 대한 정보를 클라이언트에게 전달 해주는 것이라고 볼 수 있다.
  • API 문서를 작성해야만 클라이언트가 해당 서버에 접근하여 이를 활용 할 수 있다.
    일종의 메뉴판
  • 클라이언트는 HTTP 프로토콜을 사용하며, URI를 이용하여 원하는 정보에 접근 할 수 있다.

파라미터

  • API에 접근할 때, 일종의 옵션을 추가하는 것을 이야기한다.
https://example.com/over/there?name=ferret
https://example.com/path/to/page?name=ferret&color=purple
  • 위의 예시의 호스트는 https://example.com/ 이다.
  • API 는 각각 over/there path/to/page 으로 나뉘며, ? 뒤에 작성된 내용을 파라미터라고 한다.

https://en.wikipedia.org/wiki/Query_string 참고

HTTP 메소드

MethodCRUD
POSTCREATE
GETREAD
PUTUPDATE
PATCHUPDATE
DELETEDELETE
  • CRUD의 개념과 연결시켜 생각해 볼 수 있으며, 요청을 보낼 때 내가 하려는 행동에 맞는 적절한 메소드를 사용해야 한다.

PUT, PATCH

  • PUTPATCH는 둘 다 UPDATE 의 개념이지만 둘에겐 차이가 존재한다.
  • PUT은 말그대로 집어넣는다는 뜻으로, 입력할 필드가 3개가 있는 경우 하나만 작성하는 경우 두개는 비어있는 새로운 데이터를 전달한다.
  • PATCH의 경우 기존에 있는 데이터는 유지하고 요청에 해당하는 값만 바꾼다.

https://programmer93.tistory.com/39
→ 찰떡같은 예시


+

  • 서버는 어떤 정해진 것이라기보단, 역할이다.
  • 2 tier 에서 클라이언트가 서버에 요청을 하고, 서버가 응답한다.
  • 만약 3 tier 라면 서버가 데이터베이스에 요청하고, 데이터베이스가 응답하는데, 이 경우에 서버는 클라이언트가 되고, 데이터베이스는 서버가 된다.
  • 서버는 클라이언트의 요청에 반드시 응답해야한다.

0개의 댓글