Lined Notebook

HTTP/1.0과 HTTP/1.1의 차이와 keep-alive, HOL★★★

by yjym33

HTTP/1.0과 HTTP/1.1의 주요 차이:


지속 연결 (Persistent Connection):

HTTP/1.0: 기본적으로 요청마다 새로운 연결을 설정하며, 요청이 처리되면 연결이 닫힙니다.
HTTP/1.1: 요청과 응답 사이에 하나의 연결을 재사용할 수 있는 "지속 연결"이 도입되었습니다. 이를 통해 여러 요청과 응답을 동일한 연결에서 처리할 수 있어 지연 시간을 줄이고 성능을 향상시킵니다.


파이프라이닝 (Pipelining):

HTTP/1.0: 요청마다 응답을 기다려야 하므로 하나의 요청이 완료되기 전까지 다음 요청을 보낼 수 없습니다.
HTTP/1.1: "파이프라이닝"을 지원하여 여러 요청을 한 번에 전송하고 응답이 도착하는 순서대로 처리할 수 있습니다. 이로 인해 요청 대기 시간이 감소합니다.


호스트 헤더 (Host Header):

HTTP/1.0: 여러 도메인을 호스팅하는 서버에서 요청이 들어올 때마다 IP 주소를 기반으로 서버를 선택합니다.
HTTP/1.1: "Host" 헤더가 도입되어 요청에 명시된 도메인을 기반으로 서버를 선택합니다. 이로써 가상 호스팅(Virtual Hosting)이 가능해졌습니다.

 


"keep-alive" (지속 연결):


"keep-alive"는 HTTP/1.1에서 도입된 기능으로, 하나의 TCP 연결을 여러 HTTP 요청과 응답에 재사용할 수 있도록 합니다. 이로써 연결을 설정하고 해제하는 데 필요한 시간과 자원을 절약할 수 있으며, 웹 페이지 로딩 시간을 줄여주는 중요한 성능 개선 요소입니다.

 


HOL(Head-of-Line) Blocking:


HOL(Head-of-Line) Blocking은 HTTP/1.1에서도 발생하는 문제로, 하나의 요청이 지연되면 해당 연결의 다른 요청도 함께 지연될 수 있는 현상을 의미합니다. 이는 파이프라이닝을 사용할 때 여전히 발생할 수 있는 문제입니다. 예를 들어, 첫 번째 요청이 지연되면 두 번째 요청도 기다려야 하므로 두 번째 요청의 응답이 차단됩니다.

이러한 HOL Blocking을 완화하기 위해 다음과 같은 기술들이 사용됩니다:

병렬 연결 (Parallel Connections)브라우저는 여러 개의 연결을 동시에 열고 데이터를 병렬로 요청합니다.
서버 푸시 (Server Push): HTTP/2에서 도입된 개념으로, 서버가 클라이언트에게 미리 데이터를 푸시하여 지연을 최소화합니다.


HTTP/2와 HTTP/3와 같은 최신 HTTP 프로토콜은 HOL Blocking 문제를 완전히 해결하기 위한 다양한 기술을 도입하고 있습니다. 이로써 더 빠른 웹 페이지 로딩과 성능 향상을 실현할 수 있습니다.





블로그의 정보

생각보다 실천을

yjym33

활동하기