HTTP 1.1과 HTTP 2.0에 대해서 설명해주세요.
HTTP는 웹에서 클라이언트와 서버가 요청과 응답을 주고받기 위한 프로토콜입니다. HTTP 1.1은 연결 재사용을 통해 HTTP 1.0의 비용을 줄였고, HTTP 2는 멀티플렉싱과 헤더 압축으로 HTTP 1.1의 성능 한계를 개선했습니다.
HTTP/1.1
HTTP/1.0은 요청과 응답마다 TCP 커넥션을 새로 만드는 방식이어서 연결 생성 비용이 컸습니다. HTTP/1.1은 지속 커넥션을 기본으로 사용해 지정된 타임아웃 동안 연결을 유지하고 재사용합니다.
또한 파이프라이닝을 지원해 여러 요청을 연속으로 보낼 수 있습니다. 하지만 서버는 응답 순서를 지켜야 하므로 앞 요청이 오래 걸리면 뒤 요청도 기다리는 Head-of-Line Blocking 문제가 발생할 수 있습니다.
HTTP/1.1은 매 요청마다 비슷한 헤더를 반복 전송한다는 한계도 있습니다.
HTTP/2.0
HTTP/2는 메시지를 텍스트가 아니라 바이너리 프레임 단위로 나누어 전송합니다. 하나의 TCP 연결 안에서 여러 요청과 응답을 스트림으로 동시에 처리할 수 있는 멀티플렉싱을 지원합니다.
이를 통해 HTTP/1.1의 애플리케이션 계층 HOL Blocking을 줄일 수 있습니다. 또한 HPACK 헤더 압축을 사용해 반복되는 헤더 전송 비용을 줄입니다.
핵심 차이
| 항목 | HTTP/1.1 | HTTP/2 |
|---|---|---|
| 메시지 형식 | 텍스트 | 바이너리 프레임 |
| 연결 사용 | 지속 커넥션 | 하나의 연결에서 여러 스트림 |
| 요청 처리 | 순차 응답 제약 | 멀티플렉싱 |
| 헤더 | 반복 전송 | HPACK 압축 |
| 주요 한계 | HOL Blocking, 헤더 중복 | TCP 계층 HOL Blocking |