• 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% 향상 사례.

+ Recent posts