なんとなくわかる「Network Time Protocol」

スポンサーリンク

NTP(Network Time Protocol)とは

NTP(Network Time Protocol)とはネットワーク機器間で時刻合わせを行うプロトコルのことです。

時刻の同期には非常に大きな意味がありメールやファイルの送受信をはじめとして多くの機能において時刻が正しくないと機器同士でログを付き合わせた解析ができなくなるため、統一された時刻で同期する必要があリます。

機器自身が持つ時計は精度が低いため時間経過とともに時刻のズレが発生するため、定期的に時刻を合わせる仕組みとしてNTPというプロトコルが誕生しました。

時刻を要求するNTPクライアント、応答するNTPサーバ間でのやりとりによってクライアントの時刻の調節を行います。

NTPではクライアントはポート番号123を使います。

NTPのサーバについて

NTPサーバは階層構造となっており、stratum(ストレイタム)と呼ばれています。stratumは0~15まで存在し原子時計やGPSの時計はstratum0でありこの世で一番正確な時計である。stratum1はstratum0の時刻を参照、stratum2はstratum1の時刻を参照、という形でstratum15までつながっています。

stratumの特徴として

  • stratumは数字が増えるごとに設置しているサーバの数が増える
  • stratumの数字が低いほど正確な時間を刻んでいる

があります。

stratumは複数台の自分以下の番号をもつstratumのサーバから時刻を取得し、まずは明らかに時刻の外れているものがあればそれを除外します。そして次に残ったすべての時刻情報から、精度が高いと思われるものを 3 つ選び、それを使って時刻修正を行います 。もし3つ以下しか時刻情報として使えるものがない場合はすべてを使って時刻修正します。

クライアントのNTPについて

クライアント(私たちが使っているデバイス)でNTPを使うためにはNTPサーバからの時刻情報を受け取った後に通信時間や遅延などを加味して時刻を算出します。

ここで考慮するべき遅延は、NTPクライアントから要求した時刻、NTPサーバで受信した時刻、NTPサーバから応答した時刻、NTPクライアントが受信した時刻の4つになります。この4つを加味して時刻を算出してデバイスに表示する時刻を調節しています。

コメント

タイトルとURLをコピーしました