キープアライブ【keep alive】キープアライブパケット/keep alive packet
概要

コンピュータや通信機器、ソフトウェアの中には、一対一で特定の相手と通信する際、無通信の時間が長く続くと接続を自動的に終了したり、相手から切断されたと判断して再接続動作を試みたりするものがある。また、ファイアウォールやルータ、NAT機器なども通信状態を記録しており、長時間通信のない接続情報を自動的に削除することが多い。
こうした意図しない切断を避けるため、一定時間ごとに接続を維持するためだけの内容のほとんどないパケットを送信し続ける仕組みがキープアライブである。業務データや利用者の操作による通信が発生していない間も、キープアライブによって接続状態は維持される。一定回数応答が得られない場合には、接続が失われたと判断して再接続などの処理が行われる。
キープアライブはトランスポート層のTCPやアプリケーション層のHTTPなど、様々な通信方式で利用されている。TCPでは「TCP Keep-Alive」と呼ばれる仕組みがあり、一定時間データ通信がない接続に対して確認用のパケットを送信し、応答の有無によって接続の維持または切断を判断する。
HTTPでは、1回の接続で複数のリクエストとレスポンスを連続して処理する「パーシステントコネクション」(persistent connection)を実現する目的でキープアライブが用いられ、接続の確立と切断を繰り返す負荷や通信遅延を削減している。WebSocketやVPNなどでも、接続維持のための定期通信が組み込まれることが多い。
なお、相手が正常に稼働しているかどうかを確認し続ける「死活監視」のために定期的に短い信号を送り、応答を調べる仕組みは「ハートビート」(heartbeat)と呼ばれ、キープアライブとは別の概念として扱われる。本来キープアライブは接続の維持や切断防止に主眼があり、ハートビートはシステムの稼働状況の監視に主眼を置くという技術的な目的の違いがある。しかし、いずれも定期的に微量の信号を送受信するという挙動が共通しているため、実際の製品やプロトコルの仕様においては両者が同様の意味で扱われることも少なくない。