NTP(Network Time Protocol)

ネットワーク上のコンピュータが正確な時刻を刻めるのはNTPという 通信プロトコルがあるからです。
このページでは、NTPの意味や、NTPサーバーの構成、使用するポート番号、 時刻同期のしくみについて、初心者向けにわかりやすく解説します。

NTPとはコンピュータ機器の時刻同期を行うプロトコル

NTP(Network Time Protocol)とは、 コンピューターネットワーク を介して、 コンピュータ機器内の内部時計を正確にするために、 時刻の同期を行う 通信プロトコル の一つです。

時刻を配信するのがNTPサーバー側、時刻を合わせるのがNTPクライアント側です。 サーバー側もクライアント側も ポート番号 123番を使用して通信を行います。

インターネット技術の標準化団体である IETF によって、NTPが標準化されたのが1985年で、 インターネット上で 古くから使われている通信プロトコルになります。

NTPの必要性

複数のコンピュータが繋がっているネットワーク環境において、 コンピュータによって時刻が異なると、次のような問題が生じます。

  • サービスやプログラムの開始時刻に差異が出る
  • ログのはき出す時刻が異なる
  • 誤作動(バグ)の原因にもなりえる

重要なサービスやシステムを稼働させているコンピュータほど、 時間の正確性が重視されるため、NTPによる時刻同期が必要となります。

NTPサーバーは階層構造

NTPサーバーの構成は下図のような階層構造になっています。

NTPサーバーの階層構造

最も上位にあるNTPサーバーを「Stratum 1」と呼び、 最も時刻が正確なNTPサーバーになります。 英単語「stratum(ストラタム)」は「階層」の意味です。

「Stratum 1」の時刻を参照するのが「Stratum 2」のNTPサーバーで、 以下「Stratum 3」「Stratum 4」...と続き、 最大で15階層まで構築可能です。 時刻の精度は下の階層になるほど精度が低くなります。

「Stratum 1」のNTPサーバーは何と同期をとる?

最上位に位置する「Stratum 1」のNTPサーバーは、 GPS時計や原子時計といった正確な時刻を持つ時計と同期をとっています。 GPS時計や原子時計は「100万年に1秒ずれるかどうか」 といったレベルの正確性を持つ時計です。

同期の仕組み

NTPサーバーから送られる時刻情報だけを頼りに同期すると、 コンピューターネットワーク が遅延した時間だけ時刻がズレることになります。

ですから、NTPメッセージを発信した時刻、受信した時刻を NTPサーバー側・NTPクライアント側のそれぞれが情報として含めます。 これらの情報を基にネットワークの遅延を計測し、 正確な時刻同期を行うようになっています。

さらに1台だけの時刻情報を参照するのではなく、 複数台の上位NTPサーバーの時刻を参照し、 より正確な情報が取得できる仕組みになっています。