서버측에서는 TCP 연결 유지를 사용하여 다운 또는 네트워크 분할된 클라이언트에 대해 시스템 자원이 낭비되지 않도록 합니다. 오랫동안 유지된 서버에서 이 자원이 정리되지 않을 경우 클라이언트 충돌 및 재부트 시 자원 낭비가 무한대로 증가합니다.
클라이언트-서버 통신에서 TCP 스트림을 사용할 경우 클라이언트와 서버 모두에서 TCP 연결 유지 기법을 사용해야 합니다. 비HA 단일 서버의 경우에도 마찬가지입니다.
다른 연결 지향 프로토콜에도 연결 유지 기법이 있을 수 있습니다.
클라이언트측에서 TCP 연결 유지를 사용하면 물리적 호스트 간에 네트워크 주소 자원이 페일오버되거나 스위치오버된 경우 클라이언트에게 이를 알릴 수 있습니다. 네트워크 주소 자원을 전송하면 TCP 연결이 끊어집니다. 그러나 클라이언트에서 연결 유지를 사용하지 않는 한, TCP 연결이 끊어지더라도 이러한 사실을 알 수 없습니다.
예를 들어, 클라이언트가 장기간 실행 중인 요청에 대한 서버의 응답을 기다리고 있고, 클라이언트의 요청 메시지는 이미 서버에 도착하여 TCP 계층에 인식된 것으로 가정합니다. 이 경우 클라이언트의 TCP 모듈은 요청을 계속 재전송할 필요가 없으며 클라이언트 응용 프로그램이 차단된 상태로 요청에 대한 응답을 기다립니다.
가능한 경우 클라이언트 응용 프로그램은 TCP 연결 유지 기법을 사용하는 것 외에도 응용 프로그램 수준에서 자체적으로 연결 유지를 주기적으로 수행해야 합니다. 모든 상황에서 TCP 연결 유지 기법이 완벽한 것은 아니기 때문입니다. 일반적으로 응용 프로그램 수준의 연결 유지를 사용하면 클라이언트-서버 프로토콜에서 null 작업을 지원하거나 최소한 상태 작업과 같은 효율적인 읽기 전용 작업을 지원해야 합니다.