dev-wanee
2025. 8. 1. 17:17
2025. 8. 1. 17:17
- HTTP/1.0
- 1990년대 초 등장, 한 번의 연결에 한 개의 요청·응답만 처리(단기 커넥션).
- 요청할 때마다 매번 새로운 TCP 연결 생성(비효율).
- 헤더와 메서드, 상태코드 등 기본적인 웹 통신 구조 정의.
- HTTP/1.1
- 1997년 도입, 기존의 단점을 보완.
- Persistent Connection(지속적 커넥션): 연결을 한 번 유지해 여러 요청·응답을 처리, 성능 향상.
- Pipelining: 클라이언트가 응답을 기다리지 않고 여러 요청을 순차적으로 보냄.
- 캐싱, 가상 호스팅(Host 헤더), 청크 전송 등 다양한 기능 추가.
- 문제점: 순차적 처리(이전 응답이 지연되면 뒤에 있는 요청들도 차단, “HOL blocking” 현상), 헤더 중복.
- HTTP/2
- 2015년 채택, 성능 향상에 집중.
- 멀티플렉싱: 한 커넥션에 여러 요청·응답을 동시에 독립적 스트림으로 전달.
- 이진 프레임 전송: 텍스트 대신 바이너리 프레임 사용(오버헤드 및 파싱 시간 감소).
- 헤더 압축(HPACK): 중복 헤더를 효율적으로 압축해서 대역폭 절약.
- 서버 푸시: 클라이언트 요청이 없어도 서버가 미리 리소스를 전송 가능.
- 문제점: TCP 기반이라 패킷 손실 시 전체 스트림이 지연되는 HOL 블로킹 완벽 해결은 어려움.
- HTTP/3
- 최신 버전, UDP 기반의 QUIC 프로토콜을 사용.
- TCP 사용(X) → 연결 설정 속도 빠름(1-RTT/0-RTT, 핸드셰이크 최소화).
- 멀티플렉싱 기술을 전송(네트워크) 레벨에서 지원, 패킷 손실 시 다른 스트림에 영향 없음, HOL 블로킹 완전 해결.
- 헤더 압축(QPACK) 및 TLS 1.3 통합 보안 지원.
- 모바일‧무선 환경에서 성능 크게 향상, 네트워크 변경에도 연결 유지성 뛰어남.
- Netflix, Shopify 등에서 도입 후 실제 페이지 로딩, 영상 시작 등 성능 10~30% 향상 사례.