맨위로가기

킵얼라이브

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

킵얼라이브는 주로 정해진 시간 간격으로 신호를 보내어 인터넷 연결을 유지하는 데 사용되는 기술이다. 데이터 링크가 끊어진 경우를 감지하고, 유휴 상태의 연결을 유지하기 위해 사용되며, 짧은 메시지로 적은 대역폭을 차지한다. TCP, HTTP, SMB, TLS, OpenVPN 등 다양한 프로토콜에서 킵얼라이브 기능을 구현하며, TCP 킵얼라이브는 유휴 상태에서 킵얼라이브 시간, 간격, 재시도 횟수 등의 매개변수를 설정하여 작동한다. HTTP 킵얼라이브는 클라이언트와 서버 간의 연결을 유지하며, HTTP 1.1에서는 기본 기능으로 제공된다.

더 읽어볼만한 페이지

  • 컴퓨터 네트워킹 - 유니캐스트
    유니캐스트는 데이터를 단일 목적지로 전송하는 방식으로, 브로드캐스트 및 멀티캐스트와 대비되며, 개인적 또는 고유한 리소스가 필요한 네트워크 프로세스에 사용되지만, 대량 데이터 전송 시 비용이 증가하는 단점이 있다.
  • 컴퓨터 네트워킹 - 노드 (네트워크)
    노드(네트워크)는 데이터 통신에서 데이터를 주고받는 장치를 의미하며, 물리적 네트워크 노드, 인터넷 노드, 통신 네트워크 노드, 분산 시스템 노드, 네트워크 가상화 노드 등으로 분류된다.
킵얼라이브

2. 설명

킵얼라이브 신호는 주로 미리 정해진 시간 간격마다 보내지며 인터넷에서 중요한 역할을 한다. 이 신호를 보냈는데 응답이 오지 않는 경우에는 데이터 링크가 끊어졌다고 가정하고, 복구될 때까지 이후 데이터들을 다른 경로로 보낸다. 킵얼라이브 신호는 인터넷 기반시설에게 연결을 유지해야 한다는 의미로 사용될 수도 있다. 이런 의미로 사용될 때 킵얼라이브 신호가 일정 시간 동안 없다면, 중간에 있는 NAT 지원 라우터가 연결을 끊을 수도 있다.

이 신호는 단순히 동작하지 않는 데이터 링크를 찾거나 링크 유지를 위해서만 사용될 뿐이기 때문에 대체로 메시지의 길이가 짧고 매우 적은 대역폭을 차지한다. 그러나 정확한 메시지 형태와 사용되는 방식은 통신 프로토콜에 따라 다를 수 있다.

TCP 연결이 설정되면 해당 연결은 한쪽에서 닫을 때까지 유효한 것으로 정의된다. 연결이 연결된 상태가 되면 무기한으로 연결된 상태로 유지된다. 그러나 실제로는 연결이 무기한으로 지속되지 않는다. 많은 방화벽 또는 NAT 시스템은 일정 기간 동안 활동이 없으면 연결을 닫는다. 킵얼라이브 신호는 중간 호스트가 비활성으로 인해 연결을 닫지 않도록 속이는 데 사용할 수 있다. 또한 한 호스트가 더 이상 수신 대기하지 않을 수도 있다(예: 애플리케이션 또는 시스템 충돌). 이 경우 연결이 닫히지만 FIN이 전송되지 않았다. 이 경우 킵얼라이브 패킷을 사용하여 연결이 여전히 유지되는지 확인하기 위해 연결을 질의할 수 있다.

킵얼라이브는 미리 정해진 주기로 상대 장치로 전송된다. 킵얼라이브를 전송한 후 상대 장치로부터 응답이 돌아오지 않거나, 상대 장치로부터 킵얼라이브가 장시간 전송되지 않는 경우, 연결이 끊어졌다고 판단하여 통신 회선을 닫거나, 다시 연결하는 등의 처리를 수행한다.

3. TCP 킵얼라이브

TCP 킵얼라이브는 선택적인 기능이며, 포함된 경우 기본적으로 꺼져 있어야 한다.[1] 킵얼라이브 패킷에는 데이터가 포함되어 있지 않다. 이더넷 네트워크에서는 최소 크기 프레임(64바이트)이 발생한다. 킵얼라이브와 관련된 세 가지 매개변수가 있다.[3]


  • '''킵얼라이브 시간'''은 유휴 상태에서 두 킵얼라이브 전송 사이의 기간이다. TCP 킵얼라이브 주기는 구성 가능해야 하며 기본적으로 2시간 이상으로 설정된다.
  • '''킵얼라이브 간격'''은 이전 킵얼라이브 전송에 대한 응답이 수신되지 않은 경우 두 번의 연속적인 킵얼라이브 재전송 사이의 기간이다.
  • '''킵얼라이브 재시도'''는 원격 끝점을 사용할 수 없다고 선언하기 전에 수행할 재전송 횟수이다.


두 호스트가 TCP/IP를 통해 네트워크로 연결된 경우, TCP 킵얼라이브 패킷을 사용하여 연결이 여전히 유효한지 확인하고 필요한 경우 종료할 수 있다.

TCP를 지원하는 대부분의 호스트는 TCP 킵얼라이브도 지원한다. 각 호스트(또는 피어)는 주기적으로 응답을 요청하는 TCP 패킷을 피어에게 보낸다. 특정 수의 킵얼라이브가 전송되었지만 응답(ACK)이 수신되지 않으면, 전송 호스트는 자체적으로 연결을 종료한다.

TCP 킵얼라이브 시간 초과로 인해 연결이 종료되었고 다른 호스트가 결국 이전 연결에 대한 패킷을 보내는 경우, 연결을 종료한 호스트는 RST 플래그가 설정된 패킷을 보내 다른 호스트에게 이전 연결이 더 이상 활성화되지 않음을 알린다. 그러면 다른 호스트가 연결을 자체적으로 종료하여 새로운 연결을 설정할 수 있다.

일반적으로 TCP 킵얼라이브는 유휴 TCP 연결에서 45초 또는 60초마다 전송되며, 3개의 연속적인 ACK가 누락된 후 연결이 끊어진다. 이는 호스트에 따라 다르며, 예를 들어 기본적으로 Windows PC는 7200000ms(2시간) 후에 첫 번째 TCP 킵얼라이브 패킷을 보낸 다음 1000ms 간격으로 5개의 킵얼라이브를 전송하며, 킵얼라이브 패킷에 대한 응답이 없으면 연결을 끊는다.

리눅스 호스트는 2시간(리눅스 2.2부터 기본값) 후에 첫 번째 TCP 킵얼라이브 패킷을 보낸 다음, 75초(리눅스 2.4부터 기본값) 간격으로 9개의 킵얼라이브 프로브(리눅스 2.2부터 기본값)를 전송하며, 킵얼라이브 패킷에 대한 응답이 없으면 연결을 끊는다.[4]

TCP 킵얼라이브는 확장 기능으로, 기본적으로 비활성화되어 있다.[10] 킵얼라이브 패킷은 빈 데이터를 실은 패킷이다. 이더넷에서는 킵얼라이브 패킷의 프레임 길이는 60바이트이며, 이에 대한 응답(이 또한 빈 데이터이다)은 54바이트이다.[11] 킵얼라이브와 관련된 매개변수는 다음 세 가지이다.

  • '''킵얼라이브 시간''' : 무통신 상태가 된 후 처음 킵얼라이브 패킷을 전송하기까지의 시간. 가변 값이며, 기본값은 2시간이다.
  • '''킵얼라이브 간격''' : 킵얼라이브 패킷에 대한 응답이 없을 경우, 다음 킵얼라이브 패킷을 전송하기까지의 시간.
  • '''킵얼라이브 재시도''' : 킵얼라이브 패킷 전송의 최대 횟수. 이 횟수만큼 전송을 시도해도 응답이 없을 경우, 통신을 끊는다.

3. 1. 킵얼라이브 시간 (Keepalive Time)

TCP 프로토콜에서 킵얼라이브는 선택적인 기능이다. 만약 포함된다면 기본 상태에서는 사용하지 않도록 되어있어야 한다.[13] 킵얼라이브 패킷은 널(null) 데이터를 가지고 있는데, 이더넷 네트워크에서의 킵얼라이브 프레임 길이는 60바이트이다. 이에 대한 서버응답도 역시 널(null) 데이터를 가지고 있는데, 길이는 54바이트이다.[14]

킵얼라이브와 관계된 파라미터는 다음과 같다.

  • '''킵얼라이브 시간'''은 휴지상태에서 두 킵얼라이브 전송 사이의 간격을 말한다. TCP 킵얼라이브 간격은 설정가능해야 하며 기본값은 2시간 이상으로 되어 있다.
  • '''킵얼라이브 간격'''은 이전 킵얼라이브 전송에 대한 응답이 오지 않았을 때 다시 보내는 킵얼라이브 전송과의 시간 간격을 말한다.
  • '''킵얼라이브 재시도'''는 상대방이 살아 있지 않다고 판단하기 위해 재전송하는 총 횟수를 말한다.

3. 2. 킵얼라이브 간격 (Keepalive Interval)

TCP 프로토콜에서 킵얼라이브는 선택적인 기능이다. 만약 포함된다면 기본 상태에서는 사용하지 않도록 되어있어야 한다.[13][10] 킵얼라이브 패킷은 널(null) 데이터를 가지고 있는데, 이더넷 네트워크에서의 킵얼라이브 프레임 길이는 60바이트이다. 이에 대한 서버응답도 역시 널(null) 데이터를 가지고 있는데, 길이는 54바이트이다.[14][11]

킵얼라이브와 관계된 파라미터로는 다음의 세가지가 있다.

  • '''킵얼라이브 시간'''은 휴지상태에서 두 킵얼라이브 전송 사이의 간격을 말한다. TCP 킵얼라이브 간격은 설정가능해야 하며 기본값은 2시간 이상으로 되어 있다.
  • '''킵얼라이브 간격'''은 이전 킵얼라이브 전송에 대한 응답이 오지 않았을 때 다시 보내는 킵얼라이브 전송과의 시간 간격을 말한다.
  • '''킵얼라이브 재시도'''는 상대방이 살아 있지 않다고 판단하기 위해 재전송하는 총 횟수를 말한다.

3. 3. 킵얼라이브 재시도 (Keepalive Retry)

TCP 프로토콜에서 킵얼라이브는 선택적인 기능이다. 만약 포함된다면 기본 상태에서는 사용하지 않도록 되어있어야 한다.[13] 킵얼라이브 패킷은 널(null) 데이터를 가지고 있는데, 이더넷 네트워크에서의 킵얼라이브 프레임 길이는 60바이트이다. 이에 대한 서버응답도 역시 널(null) 데이터를 가지고 있는데, 길이는 54바이트이다.[14]

킵얼라이브와 관계된 파라미터로는 다음 세 가지가 있다.[10][11]

  • '''킵얼라이브 시간'''은 휴지상태에서 두 킵얼라이브 전송 사이의 간격을 말한다. TCP 킵얼라이브 간격은 설정가능해야 하며 기본값은 2시간 이상으로 되어 있다.
  • '''킵얼라이브 간격'''은 이전 킵얼라이브 전송에 대한 응답이 오지 않았을 때 다시 보내는 킵얼라이브 전송과의 시간 간격을 말한다.
  • '''킵얼라이브 재시도'''는 상대방이 살아 있지 않다고 판단하기 위해 재전송하는 총 횟수를 말한다.

4. HTTP 킵얼라이브

HTTP는 클라이언트와 서버 간의 연결을 유지하는 기능을 제공한다. 이 기능은 HTTP 1.0에서 "Connection:Keep-alive" 헤더를 사용하여 추가되었으며, HTTP 1.1에서는 기본 기능이 되었다.[12][9] 하이퍼텍스트 전송 프로토콜은 "Keep-Alive" 키워드를 "Connection" 헤더에 사용하여 연결을 유지한다.[8] HTTP 1.0에서는 각 요청/응답 쌍마다 새 연결을 사용하는 것이 기본값이었지만, HTTP 1.1 에서는 연결을 재사용하는것이 기본값이다.[8]

5. 상위 계층에서의 킵얼라이브

TCP 킵얼라이브는 선택 사항이므로, 다양한 프로토콜(예: SMB[5]TLS[6])은 TCP 상에서 자체적인 킵얼라이브 기능을 구현한다. 또한, UDP를 통한 OpenVPN[7]과 같이 비연결형 프로토콜을 통해 세션을 유지하는 프로토콜에서도 자체적인 킵얼라이브를 구현하는 것이 일반적이다.

6. 기타 용도

참조

[1] 간행물 Requirements for Internet Hosts - Communication Layers http://tools.ietf.or[...] 1989-10
[2] 서적 IEEE Standard for Ethernet IEEE Standard for Ethernet, 802.3-2015 – section one
[3] 웹사이트 Using TCP keepalive under Linux http://tldp.org/HOWT[...] 2016-07-29
[4] 웹사이트 tcp(7) - Linux manual page https://man7.org/lin[...] 2024-08-14
[5] 간행물 Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts and Methods https://tools.ietf.o[...] 1987-03
[6] 간행물 Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension https://tools.ietf.o[...] 2012-02
[7] 웹사이트 OpenVPN manual page https://community.op[...] 2015-06-18
[8] 웹사이트 HTTP Keep Alive discourse by Jim Driscoll http://www.io.com/~m[...]
[9] 웹사이트 HTTP Keep Alive discourse by Jim Driscoll http://www.io.com/~m[...] 2013-11-08
[10] 웹사이트 Requirements for Internet Hosts - Communication Layers https://datatracker.[...] 2013-11-08
[11] 웹사이트 File Session Traffic http://technet.micro[...] 2013-11-06
[12] 웹인용 HTTP Keep Alive discourse by Jim Driscoll http://www.io.com/~m[...] 2014-01-29
[13] 웹인용 Requirements for Internet Hosts - Communication Layers http://tools.ietf.or[...] 2013-11-08
[14] 웹인용 File Session Traffic http://technet.micro[...] 2013-11-06



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com