HTTP (HyperText Transfer Protocol)
거의 모든 형태의 데이터를 HTTP 메시지로 전송
(html, text, image, 음성, 영상, 파일, json, xml (API) 등)
HTTP/1.1
가장 많이 사용하는 버전 (2,3 은 성능 개선)
클라이언트 서버 구조
![](https://velog.velcdn.com/images/heyhighbyee/post/4a1a65d9-2397-4d9b-852c-d9b79ac90c51/image.png)
클라이언트 / 서버 분리하는 것 중요
👉 양측이 독립적으로 진화 가능
무상태 프로토콜
상태 유지 (Stateful)
무상태 (Stateless)
- 갑자기 클라이언트 요청이 증가해도 서버 대거 투입 가능 (같은 시간에 딱 맞추어 발생하는 대용량 트래픽)
- 아무 서버나 호출 가능
- 응답 서버를 쉽게 변경 가능 (스케일 아웃 - 수평 확장 유리)
but,
- 데이터 전송량 ↑
- 로그인한 경우 상태 유지 필요
- 일반적으로 브라우저 쿠키, 서버 세션등을 사용하여 유지
- 상태 유지는 최소한만 사용
비 연결성 (connectionless)
클라이언트-서버가 n : 1 인 경우
연결 유지 모델 : 서버 자원 소모
연결 유지x 모델 : 최소한의 자원 사용
- HTTP는 기본이 연결을 유지하지 않는 모델
- 서버 자원을 효율적으로 사용 가능
but,
- TCP/IP 연결을 새로 맺어야 함 -> 3 way handshake 시간 추가
- 웹 브라우저로 사이트 요청시 html 뿐만 아니라 js, css 등 많은 자원이 함께 다운로드
👉 현재 HTTP 지속 연결(Persistent Connections)로 문제 해결