Keep Alive 란 지속적인 연결 상태를 뜻 합니다!
현재 Keep Alive는 HTTP 1.0 에서는 "Connection:Keep-alive" 헤더를 추가하여 사용하였는데 HTTP 1.1 에서 부터는 기본 기능이 되었습니다!
Keep Alive을 사용하기 위해서는 HTTP 요청 헤더에 Connection: Keep-Alive 라는 값이 있어야 합니다!
HTTP 프로토콜 Keep Alive 기능으로는 클라이언트와 서버 간의 요청 및 응답 과정을 효율적으로 유지하기 위해 사용합니다!
Keep Alive를 활성화 하면 데이터가 잘 동작하는지 확인 하며 데이터 링크가 끊어지는 것을 방지 할 수 있어요!!
keep-alive OFF 하게 되면(사용하지 않으면) 클라이언트와 서버는 각 요청과 응답에 대해 매번 새로운 TCP 연결을 생성하고 닫아야 합니다.
OFF 일 경우 네트워크 리소스가 비효율적으로 사용 하게 됩니다.
반면 keep-alive를 ON 할 경우(사용하면) 단일 TCP 연결에서 여러 요청과 응답이 이루어집니다!
ON 일 경우 네트워크 지연 시간이 줄어들고 웹 사이트 성능이 좋아집니다.
keep-alive OFF
사진과 같이 클라이언트가 하나 요청하고 웹 서버가 클라이언트가 요청한 1건을 전송하고 종료하고 또 하나 요청하고 1건 전송 하고 종료 하는 형태이다. 이 과정을 반복한다.keep-alive ON
사진과 같이 클라이언트가 하나 요청하면 웹 서버가 클라이언트에게 전송 하고 연결을 유지 해준다. 그리고 클라이언트가 한 가지를 더 요청 할 경우 기존에 연결을 재사용 해서 요청을 전하는 형태이다. 이 과정을 반복하는 형태이다.아래 사진 참조
초창기에는 HTTP/1.0 프로토콜에서는 각 HTTP 요청에 대해 매번 TCP 연결을 새로 생성해야 했어야 해서 위와 같은 문제들이 발생 했는데 HTTP/1.1 프로토콜에서는 해당 기능이 도입됐습니다!! 짝짝짝!!!
keep-alive의 예시
keep-alive의 예시를 하나 들어 보겠습니다!
친구와 카톡을 하는 상황에 친구 채팅방으로 들어가 채팅을 한 번씩 보낼 경우!!!
이때 하나 보냈더니 카톡이 꺼지고 다시 들어가서 켜서 들어가서 보내고 꺼지는 상황을 생각 할 수 있습니다!
그 부분이 반복이 될 경우 매우 불편할 것 입니다!
한번 연결된 카톡을 통해 모든 채팅을 보낼 수 있도록 해결 할 수 있는 편이 훨씬 효율적 입니다.