클라이언트는 인터넷에 연결된 사용자의 디바이스, 또는 웹에 접근할 수 있는 소프트웨어를 뜻한다.
리소스를 사용하는 곳 (client 손님) 리소스를 가지고있는 점원에게 물품을 요청해야함, 리소스를 담아 응답, 플랫폼에 따라 구별된다. 브라우저를 통해 주로 이용하는 웹에서는 웹사이트 또는 웹앱, ios나 안드로이드와 같은 스마트폰/태블릿 플랫폼이 있다.
대표적인 예로 브라우저가 있는데, 브라우저는 HTML, CSS, JavaScript 등으로 작성된 코드를 내부 엔진으로 해독하여 사용자가 쉽게 이해할 수 있는 형태의 컨텐츠로 보여주는 역할을 한다.
리소스가 존재하는곳(정보를 제공하는 주체), 클라이언트가 요청하면 응답을 주는 곳이다.
(Application Programming Interface) 정확한 요청을 할수 있도록 돕는 메뉴판 같은 역할이며, 인터페이스를 제공한다.
서버는 클라이언트가 어떤 자원을 요청하면 해당 요청을 적절하게 처리하는 역할을 한다. 클라이언트는 서버의 자원을 어떻게 사용할 수 있는지 명시해 둔 인터페이스 API에 따라 요청을 전송한다.
fetch, XMLHttpRequest, jQuery ajax 메소드가 있다.
리소스를 사용하는 앱과 리소스를 존재하는곳을 분리 시킨것을 2티어 아키텍처 클라이언트-서버 아키텍처라고 한다.
클라이언트-서버 아키텍처에서는 요청이 선행되고, 그 후에 응답이 옵니다. 요청하지도 않았는데, 응답이 오는 경우는 없다.
서버는 리소스를 전달해주는 역할만 할뿐 리소스를 저장하는곳을 따로두는것이 보통이다, 리소스를 저장하는 공간을 “데이터베이스”라고 하고 이 데이터베이스가 추가 된 형태를 3티어 아키텍처라고 한다.
아키텍처 간에 요청과 응답을 할떄에 약속 몇가지가 존재한다 프로토콜 이라는 통신규약이 존재한다, 웹 어플리케이션에서는 서로 HTTP를 이용하여 대화를 주고 받는데 HTTP이용해 주고받는 메세지를 HTTP메세지 라고 한다.
예시) 페이지 들어갈떄 : DNS 서버에 접속한수 IPr가 무엇인지 요청하면 ~ DNS 서버는 IP응답 해준다.

