NTP(Network Time Protocol)とは

NTP(Network Time Protocol)は、ネットワークに接続されたデバイスの時計を正確な時刻に同期するためのプロトコルです。OSI参照モデルのアプリケーション層(レイヤー7)で動作し、Internet Engineering Task Force(IETF)による「RFC 1305」で定義されています。

NTPを使用して時刻を同期する場合、NTPクライアントはNTPサーバーにリクエストを送信します。基盤となるトランスポートプロトコルにはUDPが使用され、サーバーのポートはUDP 123です。NTPサーバーは、セシウム原子時計によって維持される国際原子時に基づく時刻標準である協定世界時(UTC)を返します。地球の自転速度に基づくGMT(グリニッジ標準時)など、ほかにも世界時の基準はありますが、UTCが最も広く使用されています。UTCとUT1の間にはずれが生じることがあるため、地球の自転により正確に合わせる目的で、UTCにうるう秒が挿入される場合があります。

NTPサーバーは、インターネット上で階層的に構成されています。最上位のNTPサーバーはStratum 1と呼ばれ、階層が1つ下がるごとにStratum値が増加します。NTPサーバーは、複数の上位サーバーと時刻を同期します。Stratum 1サーバーは、GPSや原子時計などの高精度な時刻源を含む「Stratum 0」から正確な時刻を取得します。Stratum 0の時刻源は、1マイクロ秒(1秒の1,000,000分の1)未満の精度を維持し、Stratum 1サーバーに直接接続されています。

NTPはネットワーク経由で時刻データをやり取りするため、通信遅延を測定し、その影響を補正する必要があります。NTPは通信の往復時間を算出し、その値を使用してネットワーク遅延を補正します。ただし、これは往路と復路の遅延が対称であることを前提としています。往路と復路の遅延に差がある場合、その差の半分が誤差となります。