IT아키텍처/Server-Client

클라이언트-서버 모델 : 5분 개념잡기

vell_zero 2021. 10. 10. 12:06

클라이언트

  • 서버와 이어진 모든 단말기(컴퓨터의 경우는 WI-FI에, 모바일은 모바일 네트워크에 연결되어 있다)와 단말기에서 이용하는, 웹에 접근하는 소프트웨어를 지칭
  • 보통은 브라우저이나, 게임과 같이 별도의 클라이언트가 서버랑 호응하는 경우도 있음.
  • 사용자의 입력을 주로 처리하며 이를 서버에 요청을 보냄.

서버

  • 웹페이지, 사이트, 앱을 저장하는 컴퓨터
  • 클라이언트의 요청을 받아서 처리하고, 이를 다시 클라이언트에 응답을 보냄
  • 어떠한 형태로든 클라이언트의 요청을 받아 정보를 제공하면 서버 컴퓨터가 될 수 있음. (노트북도 가능)

메세지 패턴

  • 요청/응답 패턴 : 클라이언트는 요청을 보내고, 서버는 요청을 받으면 반드시 응답을 보냄
  • 클라이언트는 서버의 'API'라는 인터페이스를 바탕으로 서버에 정보를 요청하고, 서버로부터 응답을 받으면 이를 처리하여 리소스를 출력함
  • 클라이언트와 서버는 일정하게 정해진 어플리케이션 규약에 따라 요청과 응답을 주고 받음
  • 웹 브라우저와 웹 서버 간에서는 주로 http가 쓰임

How they works

  1. 사용자가 클라이언트를 이용해서 무언가 리소스를 얻고자한다. 먼저 브라우저가 웹사이트에 있는 서버의 주소를 찾음.
  2. 클라이언트의 명령을 http 요청 메세지로 서버에 보냄. 이 요청 메세지들은 TCP/IP 연결을 통해서 전송됨.
  3. 서버가 클라이언트의 요청을 받음. 적절한 요청이라면 '200 OK' 라는 상태코드를 띄운다. '200 OK'는 "적절한 요청 수용됨. 응답 및 요청 리소스 반환" 이라는 의미이다.
  4. 서버가 클라이언트가 요청한 리소스를 데이터 패킷이라는 형태로 전송함
  5. 브라우저가 이 패킷들을 받으면 다시 원하는 형태의 리소스로 재조립하고, 화면에 출력함.
  6. ??
  7. 반복!

DNS : Domain Name Server

  • 원래 서버의 주소값은 영문 스트링 형식의 주소가 아니라 63.245.217.105와 같은 숫자 덩어리임. 이는 웹 상에서 단일한 하나의 특정위치를 나타내며, 'IP 주소'라고 함.
  • 숫자로 된 IP 주소를 기억하기 쉽고 알아보기 쉽도록 영문 주소로 접근이 가능하도록 한 것이 도메인 네임 서버.
  • 어떤 도메인 주소로 홈페이지에 대한 정보를 얻고자 하면, 해당 도메인 네임 서버로 접근하여서 IP주소를 확인한 후, 그 IP주소의 서버로 가서 홈페이지에 대한 정보를 요청함.

패킷

  • 기본적으로 서버에서 클라이언트로 데이터를 전송할 때 쓰는 단위
  • 다량의 데이터를 분할하지 않고 보내면 한 번에 한 사용자만 데이터를 받는 blocking 상태에 빠지거나, 데이터가 손실될 수도 있음. 따라서 전체 데이터를 일정 길이로 쪼개서 클라이언트에 보내는 데 이 형식이 바로 패킷.
  • 패킷은 수신처(요청한 클라이언트)의 정보가 담긴 헤더/ 데이터 / 에러 정보가 기록된 테일러 세 부분으로 나뉨
  • 전체 데이터를 서버에서 적절한 길이로 잘라낸 다음, 패킷으로 클라이언트에 보낸 뒤에, 이것을 다시 클라이언트에서 재조립하여 원래의 데이터로 만들어냄.
  • 수신처의 정보가 있고 에러 체크도 가능하여 신뢰성이 높음. 표준화된 프로토콜을 사용함.
  • 수신처의 정보를 담고 있기 때문에 보안 취약점이 존재 (패킷 암호화)