MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

初心者のためのNetwork Time Protocol (NTP)入門

目次

Network Time Protocol: NTPとは

Network Time Protocol: NTPは、

ネットワーク上のコンピュータの時刻を同期するための通信プロトコルです。

 

それぞれのコンピュータは大抵、

リアルタイムクロック(RTC)という時計が内蔵されており、

それらは電源が切れている状態でも時間を測ることができます。

 

しかし、このリアルタイムクロックは精度が悪く、

徐々に誤差が蓄積してしまうので、

定期的に補正をする必要があります。

その補正をネットワーク越しに実施するプロトコルがNTPです。

 

NTPはインターネットにおける標準的な通信プロトコルであり、

OSI参照モデルではアプリケーション層に位置します。

(FTPやHTTPなどと同じ層です。)

また、ポート番号に関してはUDPポートの123番を使うことが多いようです。

NTPの仕組み

NTPの仕組みについて簡単に説明します。

NTPの階層構造

NTPは下記の図のように、

stratumという階層構造を持ちます。

f:id:meison_amsl:20150913211837p:plain

stratum0がGPSなどの標準時間を与えるもので、

その下にstratum16までの階層を持つことができます。

NTPでは上位のstratumだけでなく、

下位のstratumにも時刻同期通信を実施し、

それらのデータを元に、精密な時刻同期を実現することができます。

 

NTPの時刻補正計算

NTPはNTPサーバとクライアントの間の通信遅延を考慮した上で、

時刻誤差を計算します。

 

f:id:meison_amsl:20150913103518p:plain

上記のようなサーバとクライアント間の時刻データを取得できた時、

通信の遅延時間は

となり、

サーバとクライアントの時刻誤差(時刻補正量)は

で計算できます。

この時刻誤差は通信遅延が行きと帰りで同じだと仮定しているため、

最大δ/2の分だけは誤差を持つ可能性があるといえます。

 

NTPでは、この時刻補正量と誤差量を

複数回、そして複数種類のサーバークライアント間で計算することで、

最終的な時刻補正量を統計的に決定します。  

Linux NTPサーバツール ntpd

ntpdは、NTPサーバ用のツール兼プロセス名です。

NTPサーバをデーモンとして起動したり、停止したりすることができます。

 

NTPサーバの状態確認

ntpq -p

で現在のコンピュータのNTPサーバの状態を確認できます。 

 

NTPサーバの設定ファイル

ntpサーバの設定ファイルは

/etc/ntp.conf

に書いてあることが多いようです。

Linux NTPクライアントツール ntpdate

ntpdateはNTPサーバと接続し、

クライアントコンピュータの時刻を補正したり、

時刻誤差を計測したりするLinuxツールです。

下記のコマンドでサーバ(ntp.nict.jp)と繋がることができます。

時刻同期させる場合

ntpdate -v ntp.nict.jp

オプションの-vは詳細情報を表示させるものです。

現在の時刻を確認

date

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com