HTTP는 state less이며 connection less이다.
즉 계속 연결되어 있는 상태가 아니라 하고싶은 말만하고 연결을 끊는다.
이 방식을 채택하게된데는 바로 "여러 클라이언트의 접속"을 원활히 하기 위해서이다.
하지만 당연히 비연결 지향이라는것은 단점역시 가지고 있다.
인터넷에서 모든 데이터는 보내는데 생각보다 많은 비용을 지불한다.
그래서 추가한 기능이 바로 keep alive이다.
왼쪽의 경우를 보면 데이터를 주고 받을 때 열고 닫고를 반복한다.
그러나 keep alive를 설정하면 데이터를 계속 주고 받을 수 있다. 바로 우리가 지정한 시간 내에서 말이다.
데이터를 빈번하게 주고받아야한다면 좋은 선택이 될 수 있다.
단 무조건 좋은 기능은 아니다.
사실 keepalive는 오히려 성능 하락의 주범인 경우가 많다.
사용자가 많다면 연결이 늘어나서 새로운 사용자를 받아들이지 못하는 경우가 빈번히 일어난다.
그래서 사용자가 많고 유동이 많은 서비스에서는 사용이 권장되지 않는다.
보통 KeepAlive의 개념은 TCP Connection에서 많이 이용되지만, 이동통신 Server에서도 존재하는 개념이다. 이 개념을 알아두도록 하자.