HTTP Keep-Alive란?

HTTP 프로토콜의 Keep-Alive 기능은 클라이언트와 서버 간 요청 및 응답 과정을 효율적으로 유지하기 위해 사용됩니다. keep-alive를 활성화하면 하나의 TCP 연결을 여러 번 재사용하며 응답과 요청을 수행할 수 있습니다.

Keep-Alive란?

HTTP 프로토콜에서 클라이언트와 서버 간 여러 요청을 단일 TCP 연결을 재사용하는 방식으로 처리하는 기능을 말합니다. HTTP/1.1 프로토콜부터 도입됐습니다. 이 기능을 활성화하면 여러 HTTP 요청 및 응답 과정에서 발생하는 네트워크 오버헤드를 줄일 수 있습니다.

 

keep-alive를 사용하는 경우 HTTP 요청 헤더에 Connection: Keep-Alive라는 값을 포함시킵니다.

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)

 

사용 이점

keep-alive가 없으면 클라이언트와 서버는 각 요청과 응답에 대해 매번 새로운 TCP 연결을 생성하고 닫아야 합니다. 이 방식은 네트워크 리소스가 비효율적으로 사용됩니다. 반면 keep-alive를 사용하면 단일 TCP 연결에서 여러 요청과 응답이 이루어지기 때문에 네트워크 지연 시간이 줄어들고 웹 사이트 성능이 좋아집니다.

 

초기 HTTP/1.0 프로토콜에서는 각 HTTP 요청에 대해 매번 TCP 연결을 새로 생성해야 했기 때문에 위에서 언급한 문제들이 존재했습니다. 이를 해결하기 위해 HTTP/1.1 프로토콜에 해당 기능이 도입됐습니다.

 

keep-alive
출처=hostinger.com

 

keep-alive의 상황을 비유하자면, 전화 통화하는 상황을 떠올릴 수 있습니다. 한 고객이 고객센터에 전화를 걸어 제품에 대해 궁금한 정보를 하나씩 묻는다고 해봅시다. 이때 하나의 질문을 할 때마다 대답을 듣고 전화가 끊어진다고 생각해 보세요. 전화를 걸고 다시 물어보는 과정이 반복된다면 매우 피곤할 것입니다. 한번 연결된 전화를 통해 모든 궁금증을 해결할 수 있는 편이 훨씬 효율적입니다.

 

예시) keep-alive 활성화 vs 비활성화

1. keep-alive 비활성화

웹 브라우저가 웹 서버에 html 페이지를 요청합니다. 웹 서버는 html 페이지를 전송하고 연결을 종료합니다. 웹 브라우저가 이미지 파일을 요청하기 위해 새로운 연결을 맺습니다. 웹 서버는 이미지 파일을 전송하고 연결을 종료합니다.

 

2. keep-alive 활성화

웹 브라우저가 웹 서버에 html 페이지를 요청합니다. 웹 서버가 html 페이지를 전송하고 연결을 유지합니다. 웹 브라우저가 이미지 파일을 요청합니다. 이때 기존 연결을 재사용해서 요청을 전송합니다. 웹 서버는 이미지 파일을 전송하고 연결을 유지합니다. 이 과정이 반복됩니다.

반응형

댓글

Designed by JB FACTORY