※略語(「NTP」等)の上にマウスカーソルを合わせますと、対応ブラウザにおいては完全形をポップアップ表示します《ルビふりマクロ》。
コンピュータの時刻を常に正確に保っておく事は非常に大切です。現在のようなネットワーク社会となりますと、時刻がずれていた場合に他者にかける迷惑も増幅しますので尚更です(メールが未来から届いたり過去から届いたりしては受け取った人が困ります。もっと重大な事例も勿論容易に想像がつくでしょう)。
そこで時刻を合わせる為の手段がネット社会には用意されています。TIMEプロトコル(RFC868)、NTPプロトコル(RFC1305)、その簡易版であるSNTPプロトコル(RFC1769)などです。
TIMEプロトコルは37番ポート(TCP及びUDP)を使用し、1900年1月1日0時0分0秒(GMT)からの経過秒数を符号無し32ビットバイナリデータとして返します。
NTPプロトコル及びSNTPは123番ポート(UDP)を使用します。階層構造を使用し、問合せや応答にも複雑な決まりがあるようです。
現在、時計を合わせる目的に一般的に使われているのはNTPプロトコル(及びSNTPプロトコル)です。NTPの仕組みはクライアント/サーバ型です。本稿をお読みの方が自分のコンピュータにインストールする時刻合わせソフトはNTPクライアントということになります。NTPクライアント(NTPプロトコルを用いて時刻合わせをする為のソフト)は多々出ています。検索サイトなどで探してみて下さい。
なお、Windows XPではNTPクライアントが標準装備となった(但し同期間隔は1週間に1回と固定されている)。詳しくはMicrosoft社のサイトにて「日付と時刻を自動的に調整する方法」を御覧あれ。
以下本稿ではNTPプロトコル(及びNTPサーバ、NTPクライアント)について記述します。
さて正しい時刻を問い合わせするNTPサーバはどのような仕組みで「正しい時刻」を確保しているのでしょうか。これには色々と方法があるようです。私が知っているのは以下の四通りです。
1.GPS時計(衛星を利用した時計)
2.ATOM時計(原子を利用した時計)
3.無線電波時計(無線の電波を利用した時計)
4.ISDN時計(原理はわかりません。)
これらのハードウェアデバイスを接続したNTPサーバが世界中に設置されています(第一階層サーバ。後述)。
さて或る特定のNTPサーバに時刻問い合わせが集中しては時刻取得までに時間がかかり過ぎ、応答が遅延してしまいます(勿論NTPプロトコルは時刻を伝達する間にかかる時間も計算に入れている優れ物ですが、負荷はなければないほうがよいのです)。この負荷を分散する為にNTPの世界でもツリー構造による管理がなされています。世界各地の第一階層NTPサーバ(GPS時計、原子時計などを用いている最も上位となるサーバ。stratum 1)から、第二階層NTPサーバ(stratum 2)、そしてNTPクライアントへと連なるツリー構造です。
日本にも第一階層NTPサーバがいくつか存在します。
なかでも公に開放しているものが二つあります。
clock.nc.fukuoka-u.ac.jp (133.100.9.2) GPS
clock.tl.fukuoka-u.ac.jp (133.100.11.8) GPS
どちらも福岡大学が無償で行っているサービスです。
この他にも
国立天文台(cesium.mtk.nao.ac.jp) ATOM
東京理科大学(ntp.sut.ac.jp) GPS
広島大学(ntp(ns).hiroshima-u.ac.jp) GPS
高エネルギー物理学研究所(gps.kek.jp) GPS
東京大学(ntp.nc.u-tokyo.ac.jp) GPS
東北大学(ntp1.tohoku.ac.jp) GPS
東北大学(ntp2.tohoku.ac.jp) GPS
豊橋技術科学大学(ntp.tut.ac.jp) GPS
大阪府立大学 (eagle.center.osakafu-u.ac.jp) GPS
神戸港湾職業能力開発短大(gps.kobe-pc.ac.jp) GPS
NTTソフト研(ntp.nttsl.mfeed.ne.jp) ISDN
などがあります。
日本には公開第二階層NTPサーバは存在しませんでしたが最近ようやく一台登場しました。
ntp.cyber-fleet.net
です(但し利用する際には通知が必要)。上位サーバにはclock.nc.fukuoka-u.ac.jpを使用しているようです。
その他にも
筑波大学ネット研(ntp.netlab.is.tsukuba.ac.jp)
もあります。上位サーバにはclock.tl.fukuoka-u.ac.jpを使用しています。
ここでちょっと休憩がてら豆知識を。
NTPクライアントにサーバを指定する時はFQDNではなくIPアドレスで指定した方が余計なDNS問い合わせが発生せず素早く時刻合わせができますのでお勧めです。
(例)
△:clock.nc.fukuoka-u.ac.jp
○:133.100.9.2
さて、日本中のコンピュータが第一階層サーバに問い合わせていたら負荷がかかり過ぎますので絶対に避けるべきです。「クライアントが直接第一階層サーバに問い合わせをする」などということはとても自分勝手な行為と言えましょう。無償で管理を行ってくださっている第一階層サーバ管理者にも申し訳ないことです。
そこで各会社や大学、或いは(親切な)プロバイダなどではネットワーク内にNTPサーバを一つ立て、そこが第一階層サーバに問い合わせ、各クライアントは自分のネットワーク内のNTPサーバに問い合わせるという形を取っています。
これには先述の「第一階層サーバの負荷軽減」という目的の他に、「NTPクライアントからNTPサーバへの経路が近い」という大きな利点があります。
NTPクライアントの「問合せ先サーバ」には第一階層サーバではなく、会社や大学、プロバイダなどのNTPサーバを指定するようにしましょう。
改訂履歴 | |
---|---|
日付 | 内容 |
2000. 7.18 | 仁衡琢磨 記 |
2001. 1.19 | 改訂第二版 |
2001. 1.22 | 誤記修正 |
2001. 9.18 | 誤記修正 |
2001.10. 9 | 改訂第三版 |
2002. 2.12 | 追記(XPにおけるntpクライアント標準実装) |
NIHIRA Takuma
I use "ルビふりマクロ".