ネットワーク経由で機器の時刻を正確に合わせるプロトコル。
NTP(Network Time Protocol=ネットワーク時刻同期プロトコル)とは、ネットワーク経由で機器の時刻を正確に合わせるプロトコルです。プロトコル=機器同士が通信するときの決まりごとのことです。
パソコンやサーバの内蔵時計は、放っておくと少しずつズレていきます。NTPを使うと、正確な時計を持つNTPサーバに「今何時ですか」と問い合わせ、自分の時計をその時刻に合わせられます。上の図解は、その時刻が配られていく階層構造を示しています。
身近な例で考えると、学校で先生が「正午の時報に合わせて全員の腕時計を合わせなさい」と言うのに似ています。みんなが同じ基準に合わせることで、時計のズレをなくせるのです。
NTPは階層構造(ピラミッドのような段階構造)になっていて、各段階をStratum(ストラタム=層)と呼びます。番号が小さいほど基準の時計に近く、より正確です。
・Stratum 0:原子時計やGPSなど、基準となる極めて正確な時計
・Stratum 1:Stratum 0 に直結したNTPサーバ
・Stratum 2:Stratum 1 から時刻をもらう下位のNTPサーバ
・Stratum 3 以降:さらにその下位。最終的に末端のPCやルータに届く
上位から下位へ、まるでバケツリレーのように時刻が伝わっていきます。下位にいくほど基準から遠ざかるため、わずかに精度は下がりますが、その分多くの機器に時刻を行き渡らせることができます。
Stratum の最大値は 16 で、これは「どことも同期できていない(無効)」状態を表します。1段ずつ番号が増えながら時刻が広がっていく、と覚えると整理しやすいです。
時刻を合わせるとき、単に「今12時です」と受け取るだけでは、通信にかかった時間(遅延)の分だけズレてしまいます。NTPはこの遅延を計算して取り除き、より正確に合わせます。
具体的には、次の4つの時刻を記録します。
・t1:クライアントが問い合わせを送った時刻
・t2:サーバが問い合わせを受け取った時刻
・t3:サーバが返信を送った時刻
・t4:クライアントが返信を受け取った時刻
この4つから往復にかかった時間(遅延)と自分の時計とのズレ(オフセット)を計算し、片道分を差し引いて時計を補正します。手紙のやりとりで「届くまでにかかった日数」を考えて約束の時刻を決める感覚に近いです。
結論:複数の機器の時刻がバラバラだと、「いつ何が起きたか」が正確にわからなくなるからです。
コンピュータはログ(=操作・通信の記録)を残します。サイバー攻撃があったとき、機器の調子が悪くなったとき、「いつ何が起きたか」をログから調べます。このとき、それぞれの機器の時計がズレていると記録の順番がおかしくなり、原因の追跡が難しくなります。
時刻同期が必要な場面は他にもあります。
・セキュリティ証明書の有効期限チェック:証明書(=安全な通信を保証する電子文書)には有効期限があり、機器の時計がズレると「まだ有効なのに無効とみなす」誤作動が起きる
・ファイルの更新管理:複数台のサーバで同じファイルを管理するとき、どちらが最新かを時刻で判断するため、ズレると古い方を上書きしてしまう
身近な例では、グループで時刻を合わせずに活動すると「10時集合」なのに人によって集合時間がバラバラになるのと同じです。コンピュータも全員が同じ「今の時刻」を共有しないと、連携が崩れます。NTPはその「時計を一致させる仕組み」です。
NTPはUDP(User Datagram Protocol)の123番ポートを使って通信します。
なぜUDPを使うのか。UDP=確認応答なしで素早くデータを送れる通信方式です。時刻の同期は「少し精度が落ちても、速く届く方が大事」な用途なので、確認しながら届けるTCPより、高速なUDPが向いています。また、再送を繰り返すと遅延が増えてかえって時刻がズレてしまうという問題もあります。
123番はNTP専用に予約された番号(ウェルノウンポート=よく使われるサービスにあらかじめ割り当てられた0〜1023番のポート)です。また、Stratumの最大値であるStratum 16は「どのNTPサーバとも同期できていない、時刻が信頼できない」状態を意味します。覚えておくと仕組み全体が整理しやすくなります。
・通信方式:UDP(速さ優先)
・ポート番号:123(固定・予約済み)
・Stratum 16:同期不能(無効)を表す特別な値
Q1.NTPの役割として最も適切なものはどれか。
Q2.NTPのStratum(層)に関する記述として適切なものはどれか。
Q3.NTPが通信の遅延を考慮する理由として適切なものはどれか。