NTPとは?時刻同期の仕組みとUDP123番・サーバーの選び方

4 min 8,095 views

あなたのパソコンやスマホの時計は、どうやって正確な時間を表示しているのでしょうか?

実は裏側で「NTP」という仕組みが静かに働いています。

時計がズレていると、ログの時刻が突き合わせられなくなったり、ログインが弾かれたり、共有フォルダに入れなくなったりします。

この記事では、私たちの生活を支えている「NTP(Network Time Protocol)」について、専門知識がなくても理解できるように解説します。

項目説明
プロトコル名NTP(Network Time Protocol)
ネットワーク時刻同期プロトコル
トランスポート層UDP
ポート番号123番
説明ネットワーク上のコンピュータが時刻同期するためのプロトコル

NTPとは?

時計から放射状に線が伸び「NTP?」と書かれたイラスト(NTPとはの節の扉絵)

NTPを簡単に説明すると次の通り。

NTPとは?

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

NTPは、時刻を合わせるNTPクライアントと、正確な時刻を保持するNTPサーバが通信する時に利用するプロトコルです。

通信には UDP の 123番ポート を使います。応答の速さが命なので、確実さより速さを優先するUDPが選ばれています。ファイアウォールでこの番号が塞がれていると、時刻が永久に合いません。

NTPを使った時刻同期は次の手順で行われます。

  1. NTPクライアントがNTPサーバに対して、現在のクライアントの時刻を書き込んだパケットを送信します。
  2. パケットを受け取ったNTPサーバは受け取った時刻と返信する時刻をパケットに書き加えて返信します。
  3. NTPクライアントはこの返信パケットを受け取った時刻と、パケットに書き込まれた時刻を元に、正しい時刻を計算します。

設定すべき正しい時刻は、「パケットが往復にかかった時間」を2で割り、NTPサーバから受け取った時刻に加えることで求められます。

設定すべき正しい時刻の計算

設定すべき正しい時刻 =(パケットが往復にかかった時間 ÷ 2)+ NTPサーバから受け取った時刻

NTPはこのようにしてパケットのやり取りの際の遅延を調整しています。

NTPの詳細はこちらのサイトが参考になります。

NTPがなぜ必要なの?

中央の時計をパソコン・スマホ・サーバー・ルーターなどが囲んでいるイラスト(NTPがなぜ必要かの節の扉絵)

ネットワークでサービスを提供しているサーバーにとって時刻は重要です。

メールやSNSメッセージの時刻、オンラインゲームの時刻がずれている状況をイメージするとわかりやすいのではないでしょうか?

そうならないように、インターネット上のサーバーは正しい時刻にあわせる必要があり、その「時刻同期」に使われるのがNTPという通信プロトコルです。

取得した時刻は、すぐには適用されない

時計の中央に黄色い警告マークが入ったイラスト(取得した時刻をすぐ適用しない話の扉絵)

しかし、NTPで取得した時刻はすぐに適用するわけではありません。

例えば、サーバではバックアップ処理を時刻で起動することがありますが、NTPにより時刻が数分とんでしまうと、処理が起動されないままスキップされてしまいます。

そうのような事態を避けるため、コンピュータのクロックを早くしたり遅くしたりして少しずつ正しい時刻にあわせるようなしくみがあります。

NTPの仕組み:Stratum(階層)で負荷を分散する

NTPサーバの階層構造を示した図。最上位の原子時計・GPS・人工衛星に同期したStratum1のサーバがあり、その下にStratum2のサーバ群、さらに下にメールサーバやファイルサーバが並ぶ。パソコンはSNTPで同期することもあると注記されている

NTPサーバーは、負荷を分散するため「Stratum」(ストラタム)と呼ばれる階層構造になっています。

階層のいちばん上は、Stratum 0 と呼ばれる基準になる時計そのものです。セシウム原子時計や、GPS衛星から時刻を受け取る装置がこれにあたります。上の図でいちばん上に描かれている原子時計・人工衛星が Stratum 0 です。

その基準時計に直接つながっているNTPサーバが Stratum 1、Stratum 1 を見に行くサーバが Stratum 2 …と、基準から遠ざかるほど数字が増えます。数字が小さいほど信頼できる、と読めばよいということです。

基準になるセシウム原子時計は、1億年に1秒しかずれないと言われるほど精密なものです。

NTPを簡略化したSNTP

モニターの横に時計が描かれたイラスト(SNTPの節の扉絵)

NTPを簡略化したSNTP(Simple Network Time Protocol)というプロトコルもあります。

簡略化といっても別物ではありません。NTPの仕様書である RFC 5905 は、SNTPをNTPの一部(サブセット)と位置づけ、両者は完全に混在させて使えるとしています。パケットの形も Stratum の考え方もそのままです。

省かれているのは、複数のサーバを見比べて怪しい答えを除くといった精度を高めるための計算です。上位サーバを1台しか見ないパソコンや家電では、そこまでの精度は要らないためSNTPで足ります。

NTPサーバはどこがおすすめ?

円形に並んだ複数の丸から、カーソルで1つを選んでいるイラスト(サーバの選び方の節の扉絵)

おすすめのNTPサーバは「ntp.nict.jp」です。

「ntp.nict.jp」は情報通信研究機構が管理している、日本標準時に直結した時刻サーバです。

本サービスでは、NICTで独自開発した インターネット用時刻同期サーバーを用いています。
時刻サーバはNICT内に設置され、 日本標準時に直結しています(stratum 1)。
その時刻精度は日本標準時と10ナノ秒以内、 処理能力は毎秒100万リクエスト以上の性能を有しています。

引用:日本標準時グループ -公開NTP
使う前に確かめること

公開されているNTPサーバは、誰でも自由に叩いてよいわけではありません。NICTは、1時間平均で20回(1日の合計が480回)を超えないように案内しています(それ以上が必要なら事前連絡)。

パソコン1台なら気にする必要はありません。気をつけるのは、社内の何十台もが直接NICTを見に行く設定にしてしまうときです。その場合は社内に1台NTPサーバを立て、そこだけがNICTを見るようにします。

NTPサーバ名に「ntp.nict.jp」を設定することで利用可能です。

WindowsでNTPサーバを設定する方法

モニターにピンクの歯車が描かれたイラスト(Windowsでの設定手順の節の扉絵)

Windowsでは、デフォルトのNTPサーバに「time.windows.com」が設定されています。

以下の画面は Windows 10 のものです。Windows 11 では「設定」の項目名と並びが変わっています。Windows キー + R を押して timedate.cpl と入力すれば、STEP4 の「日付と時刻」ダイアログを直接開けます(Windows 10 / 11 共通)。設定アプリをたどるより確実です。

変更する場合は下記の手順で変更が可能です。

  1. STEP

    Windowsのスタートをクリックし設定アイコン(歯車マーク)をクリックします。

    Windowsのスタートメニューが開き、左側に歯車の設定アイコンが表示されている画面
  2. STEP

    「時刻と言語」をクリックします。

    Windowsの設定画面。「時刻と言語」の項目が並んでいる
  3. STEP

    「関連設定」の「別のタイムゾーンの時計を追加する」をクリックします。

    「日付と時刻」の設定画面。下方に「別のタイムゾーンの時計を追加する」のリンクがある
  4. STEP

    「日付と時刻」ダイアログの「インターネット時刻」をクリックし「設定の変更」をクリックします。

    「日付と時刻」ダイアログの「インターネット時刻」タブ。「設定の変更」ボタンがある
  5. STEP

    サーバー欄にNTPサーバー名を入力し「OK」をクリックします。

    デフォルトで「time.windows.com」が設定されています。

    「インターネット時刻設定」ダイアログ。サーバー名の入力欄とプルダウンが表示されている

    NTPサーバに「ntp.nict.jp」を使用する場合は次のように入力します。

    サーバー欄に ntp.nict.jp を入力し「今すぐ更新」を押した状態のダイアログ

    「OK」をクリックすると設定完了です。

NTPまとめ

この記事では「NTPについて簡単に知りたい!」というネットワーク初心者の方のために、NTPとは何なのか、イメージでつかめるようわかりやすく説明しました。

要点は3つです。

  • NTPはネットワーク越しに時刻を合わせるためのプロトコル
  • サーバは Stratum という階層になっていて、上位ほど正確
  • 日本で使うなら ntp.nict.jp(情報通信研究機構・日本標準時に直結)
NTPとは?

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

関連記事