HTTP / 1.x 의 Connection 방식은 크게 3가지로 나뉜다.
1. Short-Lived Connection
2. Keep-alive Connection
3. Pipelining Connection
이 3가지의 특징에 대해 알아보도록 하자.
1. Short-Lived Connection
HTTP 1.0 초기 버전에서 택한 방식인데 이방식은 치명적인 단점을 가지고 있다.
다음 그림에서 단점이 드러난다.
한 번의 HTTP 요청/응답 마다 연결/해제를 반복한다는 점이다.
이는 하나의 HTML에 여러 이미지, 동영상이 포함되 있는 경우 여러번의 HTTP 요청/응답이 이뤄지기 때문에
통신량이 급격히 많아진다.
초기의 웹 페이지들은 텍스트로만 구성되있었기 때문에 short-lived Connectino 방식을 사용해도 문제가 없었지만
한 페이지 내에 많은 리소스를 담아 다량의 HTTP 요청/응답이 많은 요새는 쓰지 않는 방식이다.
2. Keep-alive Connection
Persistent Connection == Keep-Alive Connection
1회의 TCP 연결로 Request/Response를 여러번 한다.
현재 모던 웹 브라우저들이 지원하는 연결 방식이다.
앞선 Short-Lived Connection은 3번의 요청/응답시마다 매번 연결/해제가 이뤄진데 반해
Keep-Alive Connection은 단 한번의 연결/해제 동안 요청/응답을 여러번 수행하여 네트워크 트레픽을 절약하고 처리속도 또한 빨라진다.
3. PipeLining Connection
이 연결방법의 특징은
HTTP 요청시 응답을 기다리지 않고 바로 다음 요청을 묶어 보낸다는 것이다.
따라서 요청-응답이 짝을 이루지 않게된다.
응답을 기다리지 않고 요청을 연속적으로 수행한다는 것은 효과적인 설계이다.
허나 Pipelining Connection 방식에는 다음과 같은 2가지 단점이 있다.
1. GET, HEAD, PUT, DELETE Method (Idempotent Method)만 이 방식을 사용할 수 있다.
2. 정확히 구현해내기 복잡하다.
따라서 오늘날, 모든 HTTP/1.1 호환 프록시와 서버들은 이 방식을 지원해야 하지만,
실제로는 많은 프록시와 서버들은 제한을 가지기 때문에 Keep-Alive Connection을 기본으로 사용한다.
3줄 요약
1. HTTP 연결 방식에는 Short-Lived , Keep - Alive Connection, Pipelining Connection 이 있다.
2. 뒤로 갈 수록 효율적인 방식이지만 현재는 Keep-Alive Connection 을 지원한다.
3. Pipelining Connection의 단점을 보완한 HTTP/2 에서는 Multiplexing 알고리즘이 사용된다.
[Reference]
developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x
'Web' 카테고리의 다른 글
TypeScript + Koa 프로젝트 생성 (0) | 2020.12.03 |
---|---|
Query String vs Params (Path) (0) | 2020.11.02 |
Cache vs Cookie vs Session (0) | 2020.09.18 |
HTTP (0) | 2020.09.18 |
스타일 적용 우선순위 & n-th selector (0) | 2020.02.20 |