Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서

TCP 연결 유지를 사용하여 서버 보호

서버측에서는 TCP 연결 유지를 사용하여 다운 또는 네트워크 분할된 클라이언트에 대해 시스템 자원이 낭비되지 않도록 합니다. 오랫동안 유지된 서버에서 이 자원이 정리되지 않을 경우 클라이언트 충돌 및 재부트 시 자원 낭비가 무한대로 증가합니다.

클라이언트-서버 통신에서 TCP 스트림을 사용할 경우 클라이언트와 서버 모두에서 TCP 연결 유지 기법을 사용해야 합니다. 비HA 단일 서버의 경우에도 마찬가지입니다.

다른 연결 지향 프로토콜에도 연결 유지 기법이 있을 수 있습니다.

클라이언트측에서 TCP 연결 유지를 사용하면 물리적 호스트 간에 네트워크 주소 자원이 페일오버되거나 스위치오버된 경우 클라이언트에게 이를 알릴 수 있습니다. 네트워크 주소 자원을 전송하면 TCP 연결이 끊어집니다. 그러나 클라이언트에서 연결 유지를 사용하지 않는 한, TCP 연결이 끊어지더라도 이러한 사실을 알 수 없습니다.

예를 들어, 클라이언트가 장기간 실행 중인 요청에 대한 서버의 응답을 기다리고 있고, 클라이언트의 요청 메시지는 이미 서버에 도착하여 TCP 계층에 인식된 것으로 가정합니다. 이 경우 클라이언트의 TCP 모듈은 요청을 계속 재전송할 필요가 없으며 클라이언트 응용 프로그램이 차단된 상태로 요청에 대한 응답을 기다립니다.

가능한 경우 클라이언트 응용 프로그램은 TCP 연결 유지 기법을 사용하는 것 외에도 응용 프로그램 수준에서 자체적으로 연결 유지를 주기적으로 수행해야 합니다. 모든 상황에서 TCP 연결 유지 기법이 완벽한 것은 아니기 때문입니다. 일반적으로 응용 프로그램 수준의 연결 유지를 사용하면 클라이언트-서버 프로토콜에서 null 작업을 지원하거나 최소한 상태 작업과 같은 효율적인 읽기 전용 작업을 지원해야 합니다.