HTTP
- HyperText Transfer Protocol
- 클라이언트와 서버가 정보를 교환할 때 사용하는 프로토콜
- HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등등 거의 모든 형태의 바이너리(이진법) 데이터 전송 가능
HTTP 역사
- HTTP/0.9 (GET만 지원 HTTP 헤더 X)
- HTTP/1.1 (가장 많이 사용) -> TCP기반 프로토콜
- HTTP/2 (성능 개선) -> TCP기반 프로토콜
- HTTP/3 (진행중: TCP 대신에 UDP사용, 성능 개선) -> UDP기반 프로토콜
HTTP 특징
클라이언트 서버 구조
- Request / Response 구조
- 클라이언트는 서버에 요청(Request)을 보내고, 응답이 올 때까지 대기
- 서버가 요청에 대한 결과를 만들어서 응답(Response)
- 클라이언트와 서버를 분리하면 클라이언트와 서버가 각각 독립적으로 진화할 수 있다.
- 비지니스 로직과 데이터 처리는 서버에서 집중
- 클라이언트는 UI와 사용성에 집중하도록 역할을 분리 시킨다.
- 예) 대용량 트래픽이 발생했을 때 클라이언트와 별개로 서버에서 아키텍쳐 변경 만으로 해결할 수 있다.
무상태(Stateless)
- HTTP는 Stateless한 성격을 가진다.
- 서버가 클라이언트의 상태를 보존하지 않는다.
- 장점 : 서버 확장성 높음(스케일 아웃)