CH5-04. HTTP의 특성
HTTP의 기본 특성
- 요청-응답 기반 클라이언트 - 서버 구조 프로토콜
- 미디어 - 독립적 프로토콜
- 비연결성 프로토콜
- statelss 프로토콜
- 지속 연결 프로토콜
요청-응답 기반 클라이언트 - 서버 구조 프로토콜
- HTTP 클라리언트(HTTP 요청 메세지)
- HTTP 서버(HTTP 응답 메세지)
- 오해 방지 : 서버 간에도 HTTP 메세지를 주고받을 수 있다.
미디어 - 독립적 프로토콜
- 어떤 형태의 데이터도 HTTP 메세지로 보낼 수 있다.
- EX) HTML, 이미지, JSON, XML, 파일, 영상, 이미지 등
비 연결성 프로토콜
- HTTP 1.0, HTTP 1.1, HTTP 2.0은 TCP 기반
- TCP는 연결성 프로토콜
- HTTP는 비연결성 프로토콜
- 다수의 클라이언트가 시도할 경우 연결을 유지하는 동안 서버의 자원 소모가 너무 크다
stateless 프로토콜
서버는 클라이언트의 상태를 기억하지 않는다. → HTTP는 클라이언트의 상태, 무엇을 전송 하였는지 기억하지 않는다.
여러 요청을 보내야 할 경우 한 서버에만 요청해야함
왜 stateless 프로토콜 일까?
HTTP가 stateful 프로토콜일 경우
- 클라이언트는 한 서버에 종속될 수 있는 우려가 있다. → 그 한 서버가 문제가 생겼을 때 통신을 할 수 없으면 상태가 사라진다. → 종속이 되어서 비효율 적이다.
서버의 IP가 바뀌는 경우, 요청을 보낸 서버에 장애가 생긴 경우, 서버가 여러 대 있는 경우에는 대응을 하기 어렵다. → 문제가 있는 서버 제외하고 다른 서버로 바꿔서 요청을 보내야 하는데 종속이 되면 이 과정이 불가 하기 때문에 종속되어있는게 비효율 적이다.
HTTP가 stateless 프로토콜이기 때문에
- 클라이언트는 한 서버에 종속될 필요가 없어집니다.
- 여러 번 요청을 보내야 할 경우 여러 서버에 요청할 수 있습니다.
- 서버의 확장이 용이해진다.
지속 연결(Keep Alive) : 하나의 연결을 사용해 여러 개의 HTTP 요청/응답 주고 받기
- 연결할 때 마다 3-way-handshake를 진행해야한다면?
→ 혼잡 증가
→ 시간 지연 증가(handshake, slow start 시간)
- 한 번 연결이 됐다면 그 연결로 지속적으로 요청 및 응답이 가능하고 메세지를 주고 받을 수 있다.
HTTP 버전별 특성
- HTTP 0.9 : 단일한 요청 방법(GET 메서드), 비지속 연결, 별다른 기능 X
- HTTP 1.0 : 다양한 요청 방법과 헤더 추가
- HTTP 1.1 : 지속 연결 기능 추가(*)
- HTTP 2.0 : 요청 순서대로 응답을 반환 할 필요 없음, 헤더 압축(*)
- HTTP 3.0 : UDP 기반 프로토콜인 QUIC로 변경(점유율 점점 상승)
'개발 > Network' 카테고리의 다른 글
HTTP 헤더 (0) | 2024.01.31 |
---|---|
HTTP 메세지 개관 (0) | 2024.01.31 |
웹 서버와 웹 어플리케이션 서버 (0) | 2024.01.31 |
자원과 자원의 식별 (0) | 2024.01.31 |
DNS (0) | 2024.01.30 |