ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 클라이언트 - 서버 구조의 이해
    Programming/BackEnd 2020. 4. 25. 18:18

    클라이언트와 서버를 실제 세계에 존재하는 '식당'에 비유해서 이해 할 수 있다. 클라이언트는 손님, 서버는 서빙에 비유할 수 있다. 손님은 벨을 누르는 방식으로 서빙을 불러서 주문을 요청한다. 서빙은 손님에게 주문을 받고 주방장에게 주문음식이 들어왔다고 전달한다. 주방장은 냉장고에서 재료를 꺼내서 요리를 하고 서빙에게 완성된 요리를 전달한다. 이후 서빙은 요리를 손님에게 전달해주고 하나의 주문프로세스가 종료가 된다.

     

    손님  클라이언트 AOS, IOS, Web, Game 등
    홀서빙  서버 Apache, Express, Nginx 등
    주방장 백엔드 언어 php , JSP, ASP 등
    냉장고 DBMS MySqL, Oracle, MsSql 등
    창고 DB 하드디스크 등
    주문방식 프로토콜 Http, Https, FTP 등

     

    • 손님은 클라이언트에 비유할 수 있다.
    • 식당에서 손님은 여러 명이 있다. 즉, 홀서빙은 여러 손님에게 서비스를 제공한다. 한 명의 손님만 있다면 홀서빙이 필요 없을 것이다. 따라서 서버와 클라이언트는 1:N 구조를 갖는다. 하나의 서버는 여러명의 클라이언트(손님)에게 서비스를 제공하는 것이다.
    • 앱을 사용자가 한명이 아니라 최소 한 명부터 수천만명까지 될 것이다. 즉, 서버는 다수의 유저(클라이언트)의 요청을 받아서 데이터를 가공하여 클라이언트에 제공(응답)하는 역할을 한다.
    • 주방장(백엔드 언어)는 요청된 주문or음식(Data)를 냉장고(DBMS) 혹은 창고(하드디스크)에서 꺼내서 요리를 해서 서빙(서버)에게 갖다주고 서버는 완성된 음식(데이터)를 손님(클라이언트)에게 전달해준다.
    • 손님(클라)은 서빙(서버)에게 요청할 때 여러가지 방식으로 주문을 하게 된다. 예를 들면, 벨을 누른다든지 손을 들고 부른다던지 등등 의 방식이 있을 수 있다.
    • 이 때 그 각각의 요청방식을 프로토콜이라고 한다. 프로토콜이란 통신규약이라고 할 수 있는데 http, https, ftp, ssh 등 여러 프로콜이 있다. 클라가 서버에 요청을 할 때에도 http와 같은 통신규약을 설정해서 요청을 해야한다.

     

    이번에는 클라이언트 - 서버를 고객과 스타벅스에 비유하고자 한다.

    고객이 스타벅스를 찾아가기 위해서는 위치정보가 필요하다. 만약, 이 때 주어지는 위치정보가 위도,경도 값이라면 찾아가기 쉬울까? 매우 어려울 것이다. 따라서 인천광역시 ㅇㅇ동 111번지와 같은 지번주소로 사람이 알아보기 쉽게 변환해서 위치정보를 제공한다.

    컴퓨터네트워크 관점에서보면 위도/경도 값은 IP주소, 지번주소는 Domain주소에 비유할 수 있다.

    IP주소는 111.222.333.21 이러한 형태로 사람이 알아보기가 쉽지 않다. 이러한 IP주소를 쉽게 식별하기 WWW.NAVER.COM과 같은 도메인주소를 사용하는 것이다. 즉, IP주소를 보기 쉽게 바꾼것이 도메인 주소이다.

    위도,경도 값 IP주소
    도로명주소/지번주소 Domain주소
    port

      *포트 : 서버(스타벅스)에 접근하기 위한 문에 비유할 수 있음.

     

    IP주소는 내 컴퓨터 주소라고 생각하면 된다. 클라이언트가 HTTP방식으로 해당 IP주소에 요청을 했을 경우 여러가지 컴퓨터들이 있어서 그 중 어떤 컴퓨터에 요청을 보냈는지 확인할 수 가 없다.

    공유기에 연결되어 있는 여러대의 기기들이 같은 네트워크를 공유하여 사용하고 있기 때문이다.  

    과거 하나의 랜선에 하나의 컴퓨터만 연결되어 있었을 때는 이러한 이슈가 발생하지 않았다. 하지만 공유기를 통해 하나의 IP주소를 여러대의 컴퓨터가 공유하고 있기 때문에 이를 식별할 수 있는 방법이 필요하다.

     

    따라서 IP주소를 외부IP주소, 내부IP주소로 나누어서 생각할 수 있다. 외부 IP주소는 말 그대로 외부에서 접근할 수 있는 실제 물리적 주소이다. 공유기의 주소가 외부IP주소가 될 것이다. 공유기에 연결되어 있는 여러 대의 컴퓨터를 식별하기 위해서는 내부 IP주소를 사용한다. 내부IP주소는 실제 주소가 아닌 내부적으로만 사용하는 IP주소이다. 내부 IP주소를 사용함으로써 외부IP주소를 통해 클라이언트의 요청이 들어오면 내부적으로 식별해서 해당 내부IP주소로 보내는 것이다. 

    이를 '포트 포워딩'이라고 한다. 포트 포워딩이란 외부IP주소를 통해 들어온 클라이언트의 요청을 해당 내부IP주소로 보내주는 것이다. 내부IP설정을 하지 않으면 요청이 전달되지가 않는다.

     

     


    'Programming > BackEnd' 카테고리의 다른 글

    포트포워딩(PortFowarding)이란?  (0) 2020.04.25
    HTTP 프로토콜의 이해  (0) 2020.04.25
    서버 개발 프레임워크  (0) 2020.04.22
    AWS 개념  (0) 2020.04.22
    API, Library, Module, Framework 란?  (0) 2020.04.22
Designed by Tistory.