Connection: keep-alive는 HTTP 헤더의 한 부분으로, 클라이언트와 서버 간의 연결을 유지하는 데 사용됩니다. 이를 통해 여러 요청을 동일한 TCP 연결을 통해 처리할 수 있어 성능을 개선하고 리소스 사용을 줄일 수 있습니다.
기본 원리:
HTTP/1.0: 기본적으로 각 요청/응답 후 연결을 닫습니다. Connection: keep-alive 헤더를 사용하여 연결을 유지할 수 있습니다.
**HTTP/1.1: 기본적으로 연결을 유지(keep-alive)**하며, 이를 명시적으로 닫으려면 Connection: close 헤더를 사용해야 합니다.
예시:
클라이언트에서 서버로 요청: 이 요청은 서버에게 응답 후에도 연결을 유지하도록 지시합니다.
**GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive**
서버의 응답: 서버는 클라이언트의 요청을 받아들이고, 응답 후에도 연결을 유지합니다.
**HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Connection: keep-alive
<html>...</html>**
장점:
성능 향상: 동일한 연결을 여러 번 재사용함으로써 연결 설정과 종료에 따른 오버헤드를 줄입니다.
지연 시간 감소: 새로운 연결을 설정하는 데 걸리는 시간을 줄여 응답 시간을 개선합니다.
리소스 절약: 서버와 클라이언트 모두에서 연결 설정과 종료에 필요한 리소스를 절약합니다.
주의 사항:
연결 유지 시간: 연결을 너무 오래 유지하면 서버의 리소스를 낭비할 수 있습니다. 따라서 적절한 타임아웃 설정이 필요합니다.
동시 연결 수: 너무 많은 연결을 유지하면 서버의 동시 연결 수 제한에 도달할 수 있습니다. 이는 서버의 성능에 영향을 미칠 수 있습니다.