클라이언트 서버 아키텍쳐 ( 2티어 아키텍쳐 )
리소스와 존재하는 곳(서버)과 사용하는 곳(클라이언트)을 분리한 것을 뜻한다.
클라이언트는 리소스에 접근하기 위해 서버에 요청을 보내고,
서버는 클라이언트가 요청한 내용에 따라 리소스를 담아 응답한다.
요청이 없다면 응답하지 않는다. 반드시 요청이 선행된 후 응답이 이루어진다.
보통, 서버는 리소스를 '전달'해주는 역할만 할 뿐,
실제로 리소스를 저장해 두는 공간을 별도로 두는 것이 보통이다.
리소스를 저장하는 공간은 '데이터베이스'라고 부른다.
클라이언트
- 웹사이트
- 웹앱
- 스마트폰/태블릿 어플리케이션
- 데스크탑 프로그램
서버
- 웹서버
- 파일서버
- 메일서버
- 데이터베이스 서버
대표적인 클라이언트와 서버의 목록은 위와 같다.
실제로는 더 다양한 종류의 클라이언트와 서버가 존재한다.
프로토콜은 통신 규약이다.
클라이언트와 서버가 통신하기 위해 지켜야 하는 약속인 것이다.
웹에서는 클라이언트와 서버가 서로 HTTP
라는 프로토콜을 이용하여 통신을 하고,
이를 이용해 주고받는 메시지를 HTTP Message
라고 부른다.
http
웹에서 html, json등의 정보를 주고받는 프로토콜
https
보안이 강화된 http 프로토콜 (ssl 기술을 이용한다)
ftp
파일 전송 프로토콜
smtp
메일 전송 프로토콜
ssh
CLI환경의 원격 컴퓨터에 접속하기 위한 프로토콜
RDP
윈도우 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
WebSocket
실시간 통신, Push 등을 지원하는 프로토콜
상식 : 4th Layer(전송 계층)에 속하는 프로토콜
TCP
http, ftp 통신의 근간이 되는 양방향 인터넷 프로토콜
UDP
단방향으로 작동하여 tcp보다 훨씬 더 단순하고 빠르지만, 신뢰성이 낮은 프로토콜
클라이언트는 서버에 정확한 요청을 보내야 서버로부터 응답을 받을 수 있다.
하지만 서버가 어떻게 구성되어 있는지는 알 방법이 없다.
이 때 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 interface
를 제공해 주는데, 이것을 API
라고 한다.
클라이언트는 서버의 api
를 받아서 api
가 가이드 한 대로 정확한 요청을 보낼 수 있게 되는 것이다.
HTTP에서 지원하는 요청 메시지는 다음과 같다.
GET
: 클라이언트가 서버에게 URL에 해당하는 자료의 전송을 요청한다.HEAD
: GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청한다.POST
: 클라이언트가 서버에서 처리할 수 있는 자료를 보낸다. 예를 들어, 게시판에 글을 쓸 때 클라이언트의 문서가 서버로 전송되어야 한다.PATCH
: 클라이언트가 서버에게 지정한 URL의 데이터를 부분적으로 수정할 것을 요청한다.PUT
: 클라이언트가 서버에게 지정한 URL에 지정한 데이터를 저장할 것을 요청한다.DELETE
: 클라이언트가 서버에게 지정한 URL의 정보를 제거할 것을 요청한다.TRACE
: 클라이언트가 서버에게 송신한 요청의 내용을 반환해 줄 것을 요청한다.CONNECT
: 클라이언트가 특정 종류의 프록시 서버에게 연결을 요청한다.OPTIONS
: 해당 URL에서 지원하는 요청 메세지의 목록을 요청한다.이 중 GET
과 HEAD
요청은 원칙적으로 이를 호출한다고 해서 서버 측의 데이터에 변화가 있어서는 안 된다.
이를 Safe Method
라고 분류한다. 또한, GET
, HEAD
, PUT
, DELETE
는 동일한 요청이 한번 전송되었을 때와 여러 번 연속하여 전송되었을 때의 서버 측의 처리 결과가 동일해야 한다.
이를 Idempotent Method
라고 분류한다.
비동기식 자바스크립트와 XML.