학습 목표
- 클라이언트-서버 아키텍처를 이해할 수 있다.
- HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
- API의 개념을 이해할 수 있다.
쇼핑몰을 예로 들면, 상품 정보 같은 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리한 것(2티어 아키텍처)
리소스를 사용하는 앱 : 클라이언트
리소스를 제공(serve)하는 곳 : 서버
클라이언트와 서버는 요청과 응답을 주고 받는 관계
일반적으로 서버는 리소스를 전달해 주는 역할만 담당
3티어 아키텍처
프론트엔드 : 클라이언트 영역
백엔드 : 서버, 데이터 베이스 영역
클라이언트와 서버의 종류
클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않음
클라이언트와 서버 간의 통신을 알아보려면, 프로토콜 이라는 개념을 이해해야 함
프로토콜
웹 앱 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 소통 → HTTP 메시지 : HTTP를 이용해 주고받는 메시지
제대로 된 통신을 위해서는 규약(약속)을 지켜야 함
주요 프로토콜
프로토콜 이름 | 설명 |
---|---|
HTTP | 웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜 |
HTTPS | HTTP에서 보안이 강화된 프로토콜 |
FTP | 파일전송 프로토콜 |
SMTP | 메일을 전송하기 위한 프로토콜 |
SSH | CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜 |
RDP | Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜 |
WebSocket | 실시간 통신, Push 등을 지원하는 프로토콜 |
프로토콜 이름 | 설명 |
---|---|
TCP | HTTP, FTP 통신의 등의 근간이 되는 인터넷 프로토콜 |
UDP | (양방향의 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 단순하고 빠르지만, 신뢰성이 낮은 인터넷 프로토콜 |
💡) 프로토콜 더 알아보기
프로토콜은 데이터의 형식, 전송 방법, 에러 처리 등을 정의하여 네트워크 간의 효율적이고 안정적인 통신을 가능하게 한다.
통신 계층의 다양한 계층에서 정의되며, 대표적으로 OSI 7계층 모델과 TCP/IP 프로토콜 스택에서 사용되는 계층적인 구조를 가지고 있다.
각 계층은 특정한 역할과 책임을 맡고 있으며, 상위 계층은 하위 계층의 서비스를 이용하여 데이터를 전송하고, 하위 계층은 상위 계층으로부터 받은 데이터를 전송하기 위해 하위 계층의 서비스를 이용한다.
프로토콜은 일반적으로 패킷이라는 작은 데이터 조각으로 전송된다. 패킷은 출발지와 목적지 주소, 제어 정보, 데이터 등의 필요한 정보를 포함하고 있다. 출발지에서 목적지까지 패킷은 여러 네트워크 장비를 거치며 전송되는데, 각 장비는 패킷의 정보를 읽고 적절한 처리를 수행한 후 다음 장비로 전달한다.
API(Application Programming Interface)
요청 | URL 디자인 | 사용하는 메서드 |
---|---|---|
모든 사용자 조회 | /users | GET |
새 사용자 추가 | /users | POST |
1번 사용자 정보 갱신 | /users/1 | PUT |
1번 사용자 정보 삭제 | /users/1 | DELETE |
1번 사용자 정보 조회 | /users/1 | GET |