상세 컨텐츠

본문 제목

[매일메일] Keep Alive에 대해 설명해 주세요.

본문

음 잘모르겠다 아것도

Keep Alive란, 네트워크 또는 시스템에서 커넥션을 지속해서 유지하기 위해 사용되는 기술이나 설정을 의미한다고 한다.

HTTP 프로토콜에서 Keep-Alive는 하나의 TCP 커넥션으로 여러 개의 HTTP 요청과 응답을 주고 받을 수 있도록 하는 기술이라한다.

HTTP 1.0에선 요청마다 새로운 커넥션 열고 닫았으나, 1.1부터 Keep-Alive가 기본적으로 활성화 되어 있어 커넥션을 재사용 가능하다고 함.

 

장점과 단점은 무엇이 있을까

 

  • 커넥션 재사용 - 네트워크 비용 절감
  • handshake에 필요한 RTT(Round Trip Time)가 감소하여 네트워크 지연 시간을 줄일 수 있다.
  • handshake 과정에서 발생하는 CPU, 메모리 등 리소스 소비를 줄일 수 있다. 
  • (여기서 말하는 handshake란, 네트워크 통신에서 두 장치 또는 시스템 간 연결 설정 등의 과정을 이야기 한다 함)

 

단점은?

  • 유휴 상태일 때도 커넥션을 점유하는 상황이기 때문에 서버의 소켓이 부족해질 수 있다.
  • DoS 공격으로 다수의 연결을 길게 유지하여 서버를 과부하 시킬 수 있다.
  • 타임아웃 설정이 적절치 않다면, 커넥션 리소스가 낭비될 수 있다.

그렇다면 HTTP와 TCP의 Keep Alive의 차이는?

 

HTTP의 Keep-Alive는 클라이언트에서 일정 시간 요청이 없으면, 타임아웃만큼 유지하고 지나면 끊어진다.

TCP의 경우는, 유휴 상태 시 주기적으로 패킷을 전송하여 커넥션 살아있음을 확인하고, 살아있다면 커넥션을 유지한다.

관련글 더보기