HTTP 버전별 주요 특징 정리
1. HTTP 초기 버전
1) HTTP/0.9
- 특징:
- 초창기 HTTP 버전으로 GET 메서드만 지원.
- 헤더와 메시지 본문을 지원하지 않음.
- 텍스트 기반으로 간단한 자원 요청만 가능.
- 현황: 현재는 거의 사용되지 않음.
2) HTTP/1.0
- 특징:
- POST, HEAD 등 다양한 메서드 지원.
- 헤더를 통한 부가 정보 전달 가능.
- 지속 연결(Persistent Connection) 미지원.
- 요청-응답마다 TCP 연결을 열고 닫는 방식.
- 현황: 일부 레거시 시스템에서 사용될 수 있으나, 대부분 최신 버전으로 교체됨.
2. HTTP/1.1
- 특징:
- 오늘날 가장 널리 사용되는 HTTP 버전.
- 지속 연결(Persistent Connection) 공식 지원.
- 파이프라이닝(Pipelining) 지원:
- 콘텐츠 협상(Content Negotiation):
- 클라이언트의 요구에 따라 콘텐츠 타입(예: HTML, JSON)을 선택.
- 문제점: 헤드라인 블로킹(Head-of-Line Blocking):
- 첫 번째 요청이 지연되면, 대기 중인 요청들도 지연되는 문제.
3. HTTP/2.0
- 특징:
- HTTP 효율과 성능 개선을 목표로 개발.
- 주요 기능:
- 바이너리 프로토콜:
- 1.1의 텍스트 기반 대신 바이너리 데이터 전송.
- 헤더 압축:
- 멀티플렉싱(Multiplexing):
- 하나의 연결에서 여러 스트림(Stream)을 병렬로 처리.
- 헤드라인 블로킹 문제 완화.
- 서버 푸시(Server Push):
- 클라이언트가 요청하지 않은 자원을 미리 전송.
- 예: HTML 요청 시, 필요한 CSS와 JS 파일을 함께 전송.
- 장점:
- 데이터 전송 속도와 네트워크 효율성 향상.
- 헤더 압축 및 병렬 처리로 대기 시간 감소.
- 현황: HTTP/1.1과 함께 널리 사용 중.
4. HTTP/3.0
- 특징:
- 최신 HTTP 버전, 빠른 데이터 전송을 목표.
- 주요 변화:
- UDP 기반:
- 기존 버전의 TCP 기반 대신 QUIC 프로토콜 사용.
- UDP를 기반으로 빠른 연결 설정 및 데이터 전송.
- 연결 속도 향상:
- UDP 특성상 TCP의 연결 설정 과정(TCP 3-way handshake)이 제거됨.
- 헤드라인 블로킹 문제 완전 해결:
- 장점:
- 연결 속도와 데이터 전송 효율성 극대화.
- 네트워크 장애 시도 빠른 복구 가능.
- 현황: 최신 웹 기술을 지원하는 브라우저와 서버에서 점차 도입 중.
HTTP 버전별 비교
버전 | 주요 특징 | 문제점/한계 | 현황 |
---|
0.9 | GET 메서드만 지원, 단순 텍스트 요청. | 헤더 및 메시지 본문 미지원. | 현재는 거의 사용되지 않음. |
1.0 | 다양한 메서드 및 헤더 지원. | 지속 연결 미지원. | 일부 레거시 환경에서 사용. |
1.1 | 지속 연결, 파이프라이닝, 콘텐츠 협상 지원. | 헤드라인 블로킹 문제. | 가장 널리 사용되는 버전. |
2.0 | 바이너리 전송, 멀티플렉싱, 헤더 압축, 서버 푸시 지원. | 여전히 TCP 기반. | 1.1과 함께 널리 사용 중. |
3.0 | UDP 기반 QUIC 프로토콜, 연결 속도 및 성능 대폭 향상. | UDP 기반의 호환성 문제(초기 단계). | 최신 환경에서 점차 도입 중. |
HTTP 버전 학습 포인트
- HTTP/1.1:
- 현재 표준으로 가장 널리 사용.
- 지속 연결과 콘텐츠 협상의 개념 이해.
- HTTP/2.0:
- 멀티플렉싱과 헤더 압축의 성능 개선 효과.
- 서버 푸시 개념 이해.
- HTTP/3.0:
- UDP 기반 QUIC 프로토콜의 장점.
- 네트워크 성능 개선의 이유.
HTTP는 인터넷과 웹의 핵심 기술입니다. 버전별로 특징과 차이를 이해하면, 네트워크와 웹 개발에서 큰 도움이 됩니다. 추가로 궁금한 점이 있으면 언제든지 질문해주세요! 😊