HTTP
- HyperText Transfer Protocol
- 원래 문서 전송용으로 설계된 상태 비저장용 프로토콜
- 브라우저가 GET 요청으로 웹 서버의 문서를 읽어오는 용도였음
- 지금은 서버와 클라이언트가 텍스트, 이미지, 동영상 등의 데이터를 주고 받을 때 사용하는 프로토콜로 확장됨
- 웹 상에서 보는 이미지, 영상, 파일과 같은 바이너리 데이터도 HTTP 멀티파트나 Base64 인코딩하여 사용
무상태성
- HTTP 는 상태 비저장 프로토콜
- HTTP는 요청 메시지를 보내기 직전까지 대상 컴퓨터가 응답 가능한지 알 방법이 없음
- Stateless 프로토콜, 즉 상태가 없는 프로토콜이라고 함
- Stateful 프로토콜로는 TCP (Transmission Control Protocol)가 있음
TCP
신뢰성 있는 연결지향성 앱에서 사용 (이메일, 파일 전송, 웹브라우저)
- Stateful 프로토콜
- 연결되면 연결을 끊기 전까지 계속 메시지를 주고 받는 프로토콜
- 한쪽에 문제가 생기면 다른쪽에서 감지 가능
- 텍스트가 아닌 바이너리 데이터를 전송
- 패킷 크기가 HTTP에 비해 작음 → 속도 빠름
- 각 요청이 소켓 1개를 공유 (HTTP는 각 요청이 소켓 1개씩 사용)
- 따라서 요청을 식별할 식별자가 필요
- 응답을 알 수 있는 방법이 없기 때문에 타임아웃에 대해 직접 구현해야 함
UDP
신속한 데이터 전송이나 손실 가능성이 있는 상황에 주로 사용
- 비연결형 프로토콜
- 데이터 전달 보장이 안되어 신뢰성이 낮음
- 흐름 제어 없음
- 단순성
- 멀티캐스팅 및 브로트캐스팅
요청 메서드
- GET: 데이터 조회
- POST: 데이터 전송
- DELETE: 삭제 요청
- PUT: 전체 수정 요청
- PATCH: 일부 수정 요청
RESTful API
- REST: 분산 시스템을 위한 소프트웨어 아키텍처의 한 형태
- RESTful 이란 REST 조건을 만족한다는 뜻
- 요청 주소(URL)과 메서드(GET, POST 등), JSON 규격을 이용하여 API를 정의
- 오늘날 가장 범용적으로 사용