종식당
HTTP/1.1과 HTTP/2.0 본문
🐳 HTTP/1.1
HTTP는 웹상에서 클라이언트와 서버 간 통신을 위한 프로토콜이다. HTTP/1.0의 경우에는 한 개의 요청과 응답마다 TCP커넥션을 생성하여 사용됐다. 하지만, 이러한 방식은 매 요청마다 연결을 생성하는 오버헤드가 발생한다.
HTTP/1.1은 이러한 문제를 지속 커넥션(Persistent Connection)이라는 지정한 타임아웃만큼 커넥션을 종료하지 않는 방식으로 해결한다.
또한 파이프라이닝(Pipelining)을 지원하여 요청된 응답 지연을 감소한다. 파이프라이닝에서 HTTP요청은 연속적이며, 순차적으로 전달된다. 기존에는 요청한 이후에 응답을 기다리고 그다음 요청을 보냈는데 파이프라이닝에서는 필요한 모든 자원에 대한 요청을 순차적으로 서버로 전송한 다음 모든 요청에 대한 응답을 한 번에 기다리게 된다.
HTTP/1.1은 1.0버전에 비해 상당히 개선됐지만 여전히 문제가 있었다. 대표적으로 Head-of-Line Blocking(HOL Blocking) 문제가 있다. 만약 3개의 요청을 파이프라인을 통해 전송을 한다고 했을 때, 서버는 모든 요청을 순서에 맞춰서 응답해야 한다. 이때, 첫 번째 요청이 오래 걸린다고 하면, 나머지 요청은 첫 번째 요청의 처리를 기다려야 한다. 또한, 1.1 버전은 매 요청마다 동일한 헤더를 반복하여 전송한다는 문제점도 존재한다.
🐬HTTP/2.0
HTTP/1.1은 메시지를 일반 텍스트 형식으로 전송했다. 2.0부터는 기존 HTTP메시지를 프레임이라는 단위로 분할하고 이를 바이너리 형태로 만들어서 전송한다. 따라서, 기존 1.1버전에 비해 파싱 및 전송 속도가 향상되었다.
또한, HTTP/2.0부터는 멀티플렉싱(Multiplexing)을 지원한다. 이는 하나의 커넥션을 사용하여 요청과 응답을 병렬로 처리할 수 있는 방식이다. 클라이언트가 서버로 여러 요청을 동시에 보내도 각 요청이 독립적으로 처리되기 때문에 애플리케이션 레이어의 HOL Blocking문제를 해결한다. 또한, HPACK헤더 압축 방식을 사용하여 반복되는 헤더를 효율적으로 관리하여 대역폭 사용이 최적화되었다.
'매일메일' 카테고리의 다른 글
관계형 데이터베이스와 비 관계형 데이터베이스의 차이점 (0) | 2025.04.17 |
---|---|
Call By Value & Call By Reference (1) | 2025.04.16 |
프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유 (0) | 2025.04.11 |
스케일 아웃과 스케일 업의 차이점 (0) | 2025.04.10 |
ACID란? (0) | 2025.04.09 |