LogoMark.png

NTP の変更点


#author("2018-09-26T02:32:50+00:00","default:inoue.ko","inoue.ko")
*NTP
Network Time Protocol
~

ネットワーク・タイム・プロトコルは、ネットワークに接続された機器の時計を同期するための通信プロトコルで、協定世界時(UTC) を使っています。
-RFC 5905 Network Time Protocol Version 4 Protocol and Algorithms 
https://tools.ietf.org/html/rfc5905
-RFC 7822 Network Time Protocol Version 4 (NTPv4) Extension Fields
https://tools.ietf.org/html/rfc7822
-RFC 958 Network Time Protocol (NTP)
https://tools.ietf.org/html/rfc958

~

**概要
私たちは、日々ファイルの「更新」を行なっています。それは、いつどこにいても整合性が保たれている必要があって、どちらが新しいのかが確実に把握できなればなりません。その意味で、コンピュータの時刻を常に正確に保っておく事は非常に大切です。そこで時刻を合わせる手段として用意されたのが、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サーバーの例

-NICT(独立行政法人 情報通信研究機構)|ntp.nict.jp
-国立天文台:gpsntp.miz.nao.ac.jp|133.40.41.175|ATOM
-東京理科大学:ntp.sut.ac.jp|133.31.180.6|GPS
-広島大学:ntp(ns).hiroshima-u.ac.jp|133.41.4.1(2)|GPS
-高エネルギー物理学研究所:gps.kek.jp|GPS
-東京大学:ntp.nc.u-tokyo.ac.jp|130.69.251.23|GPS
-東北大学:ntp1.tohoku.ac.jp|130.34.11.117|GPS
-豊橋技術科学大学:ntp.tut.ac.jp|133.15.64.8|GPS
-大阪府立大学:eagle.center.osakafu-u.ac.jp|157.16.213.52|GPS
-福岡大学:clock.nc.fukuoka-u.ac.jp |133.100.9.2|GPS
-NTTソフト研:ntp.nttsl.mfeed.ne.jp|210.173.162.106|ISDN 
-アメリカNASA:ntp.nasa.gov|198.123.30.132

Terminal から以下のように打つと、動作を試すことができます。
-NICT(stratum 1)に接続(遠いので回答までに時間がかかります)
 $ ntpdate -q ntp.nict.jp
-福大(stratum 2)に接続(近いので遅延が少ないです)
 $ ntpdate -q clock.nc.fukuoka-u.ac.jp

~

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

-''UTC''|協定世界時 Universal Time Coordinated
世界各地の標準時を決めるときの基準となる「世界標準時」です。PCの時刻表示などで見かける UTC+09:00 の表記は日本のローカル標準時(JST)が UTC よりも 9時間進んでいることを意味しています。
//天体観測を元に定める GMT(下記)とほぼ同じですが、1秒の長さを原子時計で計測して決定しており、GMTにおける1958年1月1日0時0分0秒からの経過時間を原子時計でカウントして定めた「国際原子時刻」に、GMTとのずれを調整するための「うるう秒」を追加したものです。

-''GMT''|グリニッジ標準時
天体観測を元に定めたもので、かつてはこれが国際的な基準時刻であり、また世界各地域の標準時の基準もこれでしたが、現在は概念を修正した上記協定世界時 (UTC) へ変更されています。

-''JST''|日本標準時
協定世界時よりも9時間進んでいるので + 0900 (JST)  などと表記されます。

~


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

一般に以下のいずかの方法が採用されます。
-タイムスタンプはローカル時間とし、UTCとのズレを明示する
-タイムスタンプは UTC とし、クライアント側でローカル時間に変換

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

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

~
~