단일 TCP 연결을 사용하여 복수의 HTTP 요청/응답을 주고받는다는 개념이다.
매번 요청/응답마다 연결을 맺고 끊음을 반복한다면 오버헤드가 발생한다.
기존 연결을 재사용한다면 지연시간과 서버-클라이언트의 연결 관리 비용을 줄일 수 있다.
NOTE
대표적인 오버헤드로는 TCP 3-Way Handshake와 HTTPS일 경우에는 TLS Handshake까지 수행
HTTP 1.1부터 지속 연결이 기본 동작이 되면서 일반적으로 별도의 keep-alive 선언이 없이도 연결을 재사용한다.
또한 코드상으로는 요청을 각각 따로 보내지만, 브라우저가 내부적으로 TCP 연결을 관리하고 재사용한다.

사용 방법
HTTP/1.1부터는 지속연결이 기본 동작이며 아래와 같이 HTTP 헤더에서 확인 가능하다.
또한 타임아웃(time)과 최대 요청 개수(max)를 설정하여 연결 상태 최대치를 제어한다.
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Aug 2016 15:23:13 GMT
Keep-Alive: timeout=5, max=1000
Last-Modified: Mon, 25 Jul 2016 04:32:39 GMT
Server: Apache
(body)INFO
HTTP 1.1 부터 기본적으로 활성화, 수동으로 비활성화하려면
Connection: close를 명시
HOL Blocking
HOL Blocking이란 앞선 요청이나 응답 처리가 지연되면, 뒤에 있는 요청/응답도 함께 지연되는 현상을 말한다.
HTTP/1.1에서는 요청-응답은 항상 순서를 유지하고 동기적으로 수행된다.
그렇기에 이전의 요청이 처리되지 않는다면 이후 요청들까지 지연된다.
|------------a.png------------|
|-b.png-|
|---c.png---|
이를 완화하기 위해 HTTP/1.1에서는 HTTP Pipelining이라는 기능을 내세웠다.
그러나 응답을 요청 순서대로 반환한다는 고질적인 문제점이 존재하기에 이를 온전히 해결한 방식은 아니다.
이를 근본적으로 해결하고자 HTTP/2에서는 Multiplexing을 지원하였고 HTTP 레벨의 HOL Blocking은 해결됐다.