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.1HTTP/2
메시지 형식텍스트바이너리 프레임
연결 사용지속 커넥션하나의 연결에서 여러 스트림
요청 처리순차 응답 제약멀티플렉싱
헤더반복 전송HPACK 압축
주요 한계HOL Blocking, 헤더 중복TCP 계층 HOL Blocking

추가 학습 자료

CSLOG에서 보기