본문 바로가기

개념/기초지식

[HTTP/네트워크] 기초개념 - 클라이언트,서버, 프로토콜, API

✌🏻 2-Tier 아키텍처

2티어 아키텍처(클라이언트-서버 아키텍처)는 리소스가 존재하는 곳(서버)과
리소스를 사용하는 앱(클라이언트)을 분리시킨 구조를 말한다.

🤟🏻 3-Tier 아키텍처 

3티어 아키텍처는 리소스를 저장하는 곳(데이터베이스)과 리소스를 전달하는 곳(서버)과
리소스를 사용하는 앱(클라이언트)을 분리시킨 구조를 말한다.

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

 

클라이언트의 종류: iOS,안드로이드,스마트폰/태블릿/데스크탑 플랫폼 등

서버의 종류: 파일서버,웹서버,메일서버,데이터베이스 등


📍 요청과 응답, 그리고 프로토콜

 

클라이언트는 서버에게 리소스를 요청하고, 서버는 그 리소스를 주는 것으로 응답한다.

그리고 이런 요청과 응답은 정해진 규칙에 따라 왔다갔다하는데 그게바로  HTTP라는 프로토콜이다.

그리고 HTTP를 이용해 주고받는 메시지는 "HTTP 메시지"라고 부른다.


📍 프로토콜에 대해서

프로토콜이란 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약을 말한다.
  • 프로토콜엔 HTTP뿐 아니라 여러가지가 있다.
  • 각각의 프로토콜마다 정해진 규칙이 있다.

프로토콜의 종류는 아래와 같은 것들이 있다.

응용 계층
HTTP 웹에서 HTML,JSON 등의 정보를 주고받는 프로토콜
HTTPS HTTP에서 보안이 강화된 프로토콜
FTP 파일 전송 프로토콜
SMTP 메일 전송 프로토콜
SSH CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
RDP Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
WebSocket 실시간 통신, Push 등을 지원하는 프로토콜
전송계층
TCP HTTP,FTP 등의 통신의 근간이 되는 인터넷 프로토콜
UDP (양방향의 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 단순하고 빠르지만,
신뢰성이 낮은 인터넷 프로토콜

참고) 응용 계층과 전송계층은 "OSI 7 Layers"라는 컴퓨터공학, 네트워크에 자주 등장하는 개념에 속함.


👼🏻 클라이언트를 위한 설명서, API

 

클라이언트 입장에서 서버에 뭐가 있는지 알아야 요청을 할텐데 무슨 수로 알까?

그걸 알려주는게 바로 API(Applicatioin Programming Interface) 문서이다.

API란 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공하는 것

사전적의미로는 "의사소통이 가능하도록하는 접점"을 말한다고 한다.

 

코드스테이츠에서는 이 API를 설명하면서

카페에서 엉뚱하게 설렁탕을 주문하지 않도록 해주는 '메뉴판'을 이 API에 빗대었는데

이해가 잘 갔다.

 

그러니까 종합하자면,

클라이언트는 API를 활용하여, HTTP 프로토콜에 맞춘 형식으로 주소(URL,URI)를 통해 서버에 요청을 보낸다!!


👍🏻 HTTP API의 모범 사례

 

HTTP프로토콜을 이용해서 서버와 리소스를 주고 받을 때,

모범적인 API디자인은

"각각의 요청에 적절한 HTTP 메서드를 사용할 수 있도록 안내하는 API"이다.

 

아래의 표 내용대로 각 요청에 적절한 메소드를 사용할 수 있게 API를 만들어야 한다.

요청 적절한 메소드
조회(Read) GET
추가(Create) POST
갱신(Update) PUT 또는 PATCH
삭제(Delete) DELETE

++ 참고) HTTP 요청 메서드 mdn

 

위) 나쁜 API 디자인으로 인해 서버에게 응답받지 못하는 클라이언트