HTTP 프로토콜의 특징과 /1.1과 /2의 차이점
HTTP 프로토콜의 주요 특징
- 클라이언트 - 서버 모델: 클라이언트가 요청하면 서버가 응답하는 구조
- 무상태(Stateless): 이전 요청을 기억하지 않으며, 각각의 요청이 독립적으로 처리
- 텍스트 기반: 요청과 응답은 사람이 읽을 수 있는 텍스트 형식으로 되어 있음
HTTP/1.1 vs HTTP/2 주요 차이점
| 항목 | HTTP/1.1 | HTTP/2 |
|---|
| 연결방식 | 기본적으로 TCP 연결 하나당 한 요청(keep-alive 지원으로 제한적 다중 요청 가능) | 하나의 연결에서 다수의 요청을 동시에 처리(멀티플렉싱) |
| 헤더 압축 | 지원하지 않음 | 헤더 압축(Hpack) 지원 |
| 서버 푸시(Server Push) | 지원하지 않음 | 서버가 클라이언트 요청 없이도 미리 리소스를 보낼 수 있음 |
| 이진(Binary) 프로토콜 | 텍스트 기반 프로토콜 | 이진 프로토콜로 성능 향상 |
HTTP의 무상태(Stateless)극복 방법
HTTP의 무상태(Stateless)
- HTTP는 요청간의 상태를 유지하지 않음
- 즉 각각의 요청은 서로 독립적이며, 이전 요청 기억하지 않음
무상태성 극복 방법
- 쿠키(Cookie): 클라이언트의 브라우저에 저장되는 작은 데이터로, 클라이언트가 요청 시 서버에 쿠키를 전송하여 상태 유지
- 세션(Session): 서버에서 클라이언트의 상태를 저장하는 방식으로, 보통 쿠키를 통해 세션 ID를 클라이언트에 저장하고 서버는 세션 ID로 상태 관리
- 토큰(Token): 상태 유지가 필요한 인증 정보를 토큰 형태로 클라이언트가 저장하고 요청 시 전송하여 상태 유지
로그인 상태 유지를 위한 기술
| 기술 | 저장 위치 | 설명 | 특징 |
|---|
| 쿠키 | 클라이언트 | 클라이언트 브라우저에 데이터 저장 | 간단한 데이터 유지, 보안성 낮음 |
| 세션 | 서버 | 서버에서 클라이언트 상태 저장 | 서버 리소스 사용, 보안성 높음 |
| 토큰(JWT) | 클라이언트 | JSON 형태로 서명된 토큰을 저장 | Stateless 서버 구현, 확장성 우수 |
HTTP/2에서 추가된 주요 기능
Multiplexing(다중화)
- 하나의 TCP연결에서 여러 요청과 응답을 동시에 처리할 수 있게 해줌
- HTTP/1.1에서의 Head of Line Blocking(앞선 요청이 끝날 때까지 뒤 요청이 대기하는 문제)해결
Header Compression(헤더 압축)
- HPACK 압축 방식을 사용하여 헤더의 크기를 줄여 네트워크 효율성 향상
Server Push(서버 푸시)
- 클라이언트가 요청하지 않은 리소스를 미리 서버가 보내줌
- 클라이언트의 대기시간(Latency)을 단축
HTTP/2의 Multiplexing이 앱 성능에 주는 이점과 Head of Line Blocking 문제
HTTP/1.1의 Header of Line Blocking 문제
- HTTP/1.1은 한 요청이 완료될 때까지 동일한 연결에서 다음 요청이 대기해야하는 구조
- 이로 인해 긴 요청이 뒤의 빠른 요청을 지연시키는 현상 발생
HTTP/2의 Multiplexing이 주는 이점
- 단일 TCP 연결에서 여러 요청을 동시에 처리하여 성능 크게 향상
- 요청 간 의존성을 없애고, 빠른 요청이 긴 요청을 기다리지 않아도 됨
- 앱의 전체적인 응답 속도와 사용자 경험 개선
HTTP/3
HTTP/3의 주요 특징
- TCP 대신 UDP기반 QUIC(Quick UDP Internet Connections) 프로토콜 사용
- 초기 연결 설정 시간이 더 짧음
- 기본적으로 TLS 암호화 내장
- 연결 마이그레이션을 지원하여 모바일 환경에서 더 효율적
HTTP/3가 TCP대신 UDP기반의 QUIC를 사용하는 이유
UDP를 선택한 장점
- 빠른 연결 설정: TCP의 3 way handshake가 필요없어 빠른 연결 설정 가능
- Head of Line Blocking 문제해결: TCP계층에서 발생하는 패킷 손실 시 전체 연결이 지연되는 문제 해결 QUIC는 UDP 기반으로 독립적인 스트림을 관리하여 이 문제를 최소화
- 모바일 친화적: 네트워크 변경(ex: WIFI -> Cellular)시 세션 유지
- 기본 보안 제공: QUIC는 TLS 1.3을 기본적으로 내장하여 보안 강화