最終更新日:2026年8月14日
fe fe-technology network time-synchronization
まず結論
NTP(Network Time Protocol)は、ネットワークを通してコンピュータの時刻を基準となるサーバの時刻に合わせるためのプロトコルです。
基本情報技術者試験では、4つの時刻から、
- 往復にかかった時間
- サーバ内部の処理時間
- 片道の伝送遅延
- 同じ瞬間におけるPCとサーバの時刻差
を順に求める問題が出ます。
一番大切なのは、
時計の進み・遅れは、同じ瞬間の時刻同士を比べる
という考え方です。
直感的な説明
PCがNTPサーバへ問い合わせを送っても、情報は一瞬では届きません。
PC
↓ 問合せ
NTPサーバ
↓ 応答
PC
この間には、
- PCからサーバまでの伝送時間
- サーバ内部で応答を作る時間
- サーバからPCまでの伝送時間
があります。
そのため、
サーバが送信した時刻
と
PCが受信した時刻
をそのまま引き算しても、時計のずれは分かりません。
サーバからPCへ届くまでの時間を考慮し、
PCが応答を受け取った瞬間
のサーバ時刻を推定してから比較する必要があります。
定義・仕組み
NTPによる時刻合わせでは、次の4つの時刻を使います。
T1:PCが問合せを送信した時刻
T2:NTPサーバが問合せを受信した時刻
T3:NTPサーバが応答を送信した時刻
T4:PCが応答を受信した時刻
図にすると、次のようになります。
PC NTPサーバ
T1 問合せ送信
| ----------------------------> |
T2 問合せ受信
|
| サーバ処理
|
T3 応答送信
| <---------------------------- |
T4 応答受信
FEでは、往路と復路の伝送遅延が同じと仮定して計算する問題がよくあります。
科目Aでどう出る?
ここでは、例として次の時刻が与えられたとします。
PCの問合せ送信時刻 1000 μs
NTPサーバの問合せ受信時刻 1300 μs
NTPサーバの応答送信時刻 1500 μs
PCの応答受信時刻 2200 μs
なお、往路と復路の伝送遅延は同じものとします。
① PC側で見た往復時間を求める
PCでは、
送信 1000
↓
受信 2200
なので、
2200 - 1000
= 1200 μs
です。
ただし、この1200μsには、サーバが内部で処理していた時間も含まれています。
② サーバ内部の処理時間を求める
NTPサーバでは、
受信 1300
↓
送信 1500
なので、
1500 - 1300
= 200 μs
です。
③ 往復の純粋な伝送時間を求める
PC側で見た1200μsから、サーバ内部の処理時間200μsを除きます。
1200 - 200
= 1000 μs
これが、問合せと応答を合わせた往復の伝送時間です。
④ 片道の伝送遅延を求める
往路と復路の遅延が同じなら、
1000 ÷ 2
= 500 μs
です。
つまり、サーバからPCへ応答が届くまでに500μsかかります。
⑤ PC受信時点でのサーバ時刻を求める
ここが最も重要です。
サーバが応答を送った瞬間の時刻は、
1500 μs
です。
そこからPCへ届くまでに500μsかかるので、PCが受信した瞬間には、サーバの時計も500μs進んでいるはずです。
1500 + 500
= 2000 μs
つまり、
PCが受信した瞬間のサーバ時刻
= 2000 μs
と推定できます。
⑥ 同じ瞬間のPCとサーバの時刻を比較する
PCが応答を受信した瞬間、
PCの時計 2200 μs
サーバの時計 2000 μs
です。
したがって、
2200 - 2000
= 200 μs
となります。
PCの時計の方が大きな時刻を示しているため、
PCの時計はNTPサーバより200μs進んでいる
と判断します。
なぜ「進んでいる」と分かる?
ここは計算よりも意味の理解が大切です。
同じ瞬間に、
正しい側の時計 2000
PCの時計 2200
を指しているとします。
PCの方が未来の時刻を示しているので、
PCの時計が先に進んでいる
という意味になります。
逆に、
サーバ 2000
PC 1800
なら、PCは200μs遅れています。
PC > サーバ
→ PCが進んでいる
PC < サーバ
→ PCが遅れている
と判断できます。
どんな場面で使う?
NTPは、複数のコンピュータの時刻をそろえるために使われます。
例えば、
- サーバのログ時刻をそろえる
- 複数システムの処理順序を正しく記録する
- 認証やセキュリティ処理で時刻のずれを防ぐ
- 分散システムでイベント発生時刻をそろえる
などです。
複数の機器で時計がずれていると、
どの処理が先に起きたのか
が分からなくなることがあります。
そのため、時刻同期はシステム運用で重要です。
よくある誤解・混同
サーバの送信時刻とPCの受信時刻を直接比べればよい?
違います。
サーバ送信
↓ 伝送時間
PC受信
なので、この2つは同じ瞬間ではありません。
サーバ送信時刻に伝送遅延を加えて、
PC受信時点のサーバ時刻
を求めてから比較します。
伝送遅延を補正した結果、PCが進むの?
違います。
伝送遅延の補正は、
同じ瞬間の時計同士を比較するため
に行います。
補正した結果、
PCの表示時刻 > サーバの推定時刻
ならPCが進んでいると判断します。
往復時間をそのまま2で割ればよい?
必ずしもそうではありません。
往復時間には、NTPサーバ内部で処理していた時間が含まれています。
そのため、
PC側の往復時間
-
サーバ内部の処理時間
を先に求めます。
その後、往路と復路の遅延が等しいという条件なら2で割ります。
時刻差の符号をどう見る?
同じ瞬間にそろえたあと、
PC時刻 - サーバ時刻
を考えます。
正
→ PCが進んでいる
負
→ PCが遅れている
と判断できます。
確認問題(基本情報技術者試験対策)
NTPによる時刻合わせで、次の4時刻が得られた。
PCの問合せ送信時刻 500 μs
NTPサーバの問合せ受信時刻 800 μs
NTPサーバの応答送信時刻 1000 μs
PCの応答受信時刻 1700 μs
問合せと応答の伝送遅延は等しいものとする。
PCの時計はNTPサーバの時計と比べてどのような状態か。
- ア. 100μs進んでいる
- イ. 200μs進んでいる
- ウ. 100μs遅れている
- エ. 200μs遅れている
▶ クリックして答えと解説を見る(ここを開く)
正解:イ
まず、PC側の往復時間は、
1700 - 500
= 1200 μs
です。
サーバ内部の処理時間は、
1000 - 800
= 200 μs
なので、往復の伝送時間は、
1200 - 200
= 1000 μs
です。
片道の伝送遅延は、
1000 ÷ 2
= 500 μs
となります。
サーバが応答を送信した時刻は1000μsなので、PCがその応答を受け取る瞬間のサーバ時刻は、
1000 + 500
= 1500 μs
です。
同じ瞬間にPCは1700μsを示しているため、
1700 - 1500
= 200 μs
となります。
PCの方が先の時刻を示しているので、PCの時計は200μs進んでいます。
まとめ(試験直前用)
- NTPはネットワーク経由で時刻を同期するプロトコル
- まずPC側の往復時間を求める
- サーバ内部の処理時間を差し引く
- 往路と復路の遅延が同じなら2で割って片道遅延を求める
- サーバ送信時刻に片道遅延を加えて、PC受信時点のサーバ時刻を求める
- 時計の進み・遅れは、同じ瞬間の時刻同士を比較する
- PC時刻の方が大きければPCが進んでいる
- PC時刻の方が小さければPCが遅れている