목차
- HTTP란?
- HTTP 특징
📌 HTTP란?
HTTP(HyperText Tranfer Protocol)
- 웹의 애플리케이션 계층 프로토콜
- TCP를 전송 프로토콜로 사용
- 처음엔 HTML 같은 HyperText 전송했지만 이후 많은 데이터를 HTTP로 전송
- HTML, 텍스트, 음성, 영상, 파일
- JSON, XML 파일
- 서버간 통신
HTTP 간단 역사
- HTTP 0.9: GET 메서드만 지원
- HTTP 1.1: 가장 많이 사용
- HTTP 2: HTTP 1.1에서 성능 개선
- HTTP 3: TCP 대신 UDP 사용하여 성능 개선
HTTP 기반 프로토콜
📌 HTTP 특징
HTTP 특징은 다음과 같다.
1. 클라이언트 서버 구조
2. 무상태 프로토콜
3. 비 연결성
4. HTTP 메시지 통한 통신
1. 클라이언트 서버 구조
- Request Response 구조
- 클라이언트는 서버에 요청 보내고 대기하며 이후에 응답이 오면 동작
장점
- 클라이언트, 서버 분리함으로써 독립적으로 진화 가능
- 클라이언트는 사용성에 집중
- 서버는 서비스, 트래픽 등에 집중
2. 무상태 프로토콜
stateless, 무상태 프로토콜
- 서버가 클라이언트 상태를 보존하지 않음
- 클라이언트가 요청할 때 모든 정보를 다 보냄
- 장점
- 서버에서 문제가 발생해도 다른 서버로 운영 위임 가능
- 서버 확장성 높음 -> scale out
- 한계
- 클라이언트가 서버에 요청할 때 보내는 데이터 많음
- 모든 것을 무상태로 설계할 수 없음 ex. 로그인
추가) stateful, 상태 프로토콜
- 서버가 클라이언트의 상태를 보존
- 항상 같은 서버가 유지되어야 함
- 만약 다른 서버로 바뀐다면 정보를 미리 알려야 함
3. 비 연결성
클라이언트와 서버 연결 유지하지 않는 모델
- 요청을 주고 받을 때만 연결
- 클라이언트가 요청 보내고 서버가 응답하면 연결을 바로 끊는다.
- 최소한의 자원으로 서버 유지하려 함
- 장점
- 단점
- TCP/IP 연결 새로 맺는 시간 추가(3 way handshake)
- 필요한 자원 나누어서 요청하면 그때마다 요청
- ex. 웹 브라우저 사이트 요청 -> HTML, JS, CSS 다양한 자원 필요, 받을 때 마다 요청, 응답하면 시간 많이 걸림
- HTTP 지속 연결로 문제 해결
HTTP 지속 연결
- 클라이언트와 서버 TCP/IP 연결 후 어느정도 연결 유지
- HTTP 2와 HTTP 3에서 개선이 이뤄짐
추가) 연결을 유지하는 모델
- 클라이언트와 서버사이 TCP/IP 연결 유지
- 연결 유지하는 동안 서버 자원 소비
- 클라이언트 서버에 요청하지 않아도 서버와 연결하고 있으면 자원이 소비되는 단점 발생
4. HTTP 메시지 통한 통신
HTTP 메시지
- 클라이언트, 서버는 HTTP 메시지를 이용하여 통신
- HTTP 요청 메시지: 클라이언트가 서버에게 보내는 메시지
- HTTP 응답 메시지: 서버가 클라이언트에게 응답하는 메시지
링크 추후 추가
출처
인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의