LogoMark.png

NTP

NTP

Network Time Protocol

ネットワーク・タイム・プロトコルは、ネットワークに接続された機器の時計を同期するための通信プロトコルで、協定世界時(UTC) を使っています。


概要

私たちは、日々ファイルの「更新」を行なっています。それは、いつどこにいても整合性が保たれている必要があって、どちらが新しいのかが確実に把握できなればなりません。その意味で、コンピュータの時刻を常に正確に保っておく事は非常に大切です。そこで時刻を合わせる手段として用意されたのが、NTPプロトコルです。NTPプロトコルは協定世界時(UTC)を使うクライアント/サーバー型のプロトコルで、UDP 123番ポートを使用します。
 特定のNTPサーバに問い合わせが集中すると応答が遅延するので、負荷を分散する為に階層構造による管理がなされています。世界各地の第一階層NTPサーバ(stratum 1)から、第二階層NTPサーバ(stratum 2)、そしてNTPクライアントへと連なっています。
 さてここで正しい時刻というものは、GPS時計(衛星を利用)、ATOM時計(原子を利用)、無線電波時計などで計測されていて、これらのハードウェアデバイスを接続したNTPサーバが世界中に設置されています。
 NTPにはサーバから取得した時刻値そのサーバから機器に時刻値が到達するまでの通信時間の補正が考慮されていて、最も妥当と思われる時刻同期ができるようになっています。具体的には、1) クライアントがクエリを発信した時刻、2) サーバがクエリを受信した時刻、3) サーバが応答を発信した時刻、4) クライアントが応答を受信した時刻 といったものが計算に加味されています。

参考:TIMEプロトコル
古典的な方法として「Time Protocol」というものがありますが、ネットワーク経路間の時刻補正が含まれておらず誤差が発生してしまいます。このプロトコルでは、1900年1月1日0時0分0秒(GMT)からの経過秒数をTCP及びUDPの37番ポートを使用して返します。


NTPサーバーの例

Terminal から以下のように打つと、動作を試すことができます。


標準時について

NTPプロトコルでは、標準時としてUTC を使っていますが、私たちに身近な時間の基準として、以下のようなものがあります。


タイムスタンプについて

ファイルには、作成時刻や、更新時刻の情報が記録されていて、これをタイムスタンプといいます。銀行取引をイメージしてみて下さい。ファイル更新の順序を確認するための指標であるタイムスタンプは、絶対に混乱があってはならない非常に重要な情報です。これはファイルが国を超えて移動したり、サマータイムが導入されたりしても、一意に保たれる必要があります。
 よってタイムスタンプは UTC 基準で記録するという発想が採用されます。パソコンの内臓時計は簡単に狂うので、NTPサーバーの時刻を使います。

一般に以下のいずかの方法が採用されます。

ちなみにサーバーに代表される UNIX 系 OS は UTC とタイムゾーン情報でローカルタイムを決めています。

余談ですが、サマータイムの導入について
基幹系の重要なサーバーシステムは、世界標準の時刻を採用していて、地域ごとのタイムゾーンの差やサマータイムの時差は影響がありません。ローカルタイムへの置き換え表示についても、すでに何年も前からサマータイムの導入を前提とした対応がとられているので、世間が騒ぐほど大きな混乱は少ないと思われますが、小規模システムや個人PCレベルの場合、特にサマータイムから戻るとき(同じ時刻が2回繰り返すとき)1時間あるいは2時間は、システムを止めるのが賢明かもしれません。




PAGES

GUIDE

DATA

Last-modified: 2019-07-05 (金) 20:51:17