私たちの多くは、コンピューターやその他のデバイスが正確な時刻設定を保持するという問題を時々抱えていますが、NTPサーバーとの迅速な同期によりすべてが再びうまくいきます。しかし、私たち自身のデバイスが精度を失う可能性がある場合、NTPサーバーはどのようにしてそれほど正確な状態を維持することができますか?
今日の質疑応答セッションは、コミュニティ主導のQ&AWebサイトのグループであるStackExchangeの下位区分であるSuperUserの好意で行われます。
写真提供: LEOL30(Flickr) 。
質問
スーパーユーザーリーダーのFrankThorntonは、NTPサーバーがいかに正確であり続けることができるかを知りたがっています。
私のサーバーや他のマシンでは、時計が常にドリフトするため、正確さを保つために同期する必要があることに気づきました。 NTPサーバーのクロックがドリフトしないようにし、常に正確な状態を維持するにはどうすればよいですか?
NTPサーバーはどのようにしてこれほど正確な状態を維持できますか?
答え
スーパーユーザーの寄稿者であるMichaelKjorlingが答えを持っています。
NTPサーバーは、正確な計時のために非常に正確な時計に依存しています。中央NTPサーバーの一般的なタイムソースは、原子時計またはGPS受信機です(GPS衛星には原子時計が搭載されていることに注意してください)。これらのクロックは、非常に正確な時間基準を提供するため、正確であると定義されています。
GPSや原子時計には、正確に何時かを教えてくれる魔法のようなものは何もありません。原子時計はどのように機能するのかという理由で、今何時かと言われたことがあるので、とても上手です。 維持する 正確な時間( 2番目は原子効果の観点から定義されています )。実際、それは注目に値します GPS時間はUTCとは異なります 私たちが見ることに慣れていること。これらの原子時計は順番に同期されます 国際原子時またはTAI 時間の経過を正確に伝えるだけでなく、 インクルード 時間。
インターネットなどのネットワークに接続された1つのシステムで正確な時刻を取得したら、信頼性の低いネットワークを介してホスト間で正確な時刻を転送できるようにするのはプロトコルエンジニアリングの問題です。この点で、Stratum 2(または実際のタイムソースから遠い)NTPサーバーは、一連のNTPサーバーと同期するデスクトップシステムと同じです。
(NTPサーバーまたは他の場所から取得した)正確な時刻がいくつかあり、ローカルクロックの進行速度(簡単に判断できます)がわかっているときまでに、「信じられている正確な" 時間の経過。ロックインされると、この値を使用してローカルクロックを継続的に調整し、ローカルリアルタイムクロック自体が非常に不正確であっても、正確な時間の経過に非常に近い値をレポートすることができます。あなたのローカル時計が高くない限り 不安定 、これにより、何らかの理由でアップストリームタイムソースが使用できなくなった場合でも、しばらくの間正確な時刻を維持できます。
一部のNTPクライアント実装(おそらくほとんどのntpdデーモンまたはシステムサービス実装)はこれを実行し、他の実装(ntpdのコンパニオンntpdateのように時計を1回設定するだけ)は実行しません。これは一般的に ドリフトファイル クロックドリフトの測定値を永続的に保存しますが、厳密に言えば、ディスク上の特定のファイルとして保存する必要はありません。
NTPでは、Stratum0は定義上正確なタイムソースです。 Stratum 1は、Stratum 0タイムソースをタイムソースとして使用するシステムです(したがって、Stratum 0タイムソースよりもわずかに精度が低くなります)。 Stratum 2は、Stratum 1ソースと時刻を同期しているため、Stratum1よりもわずかに精度が低くなります。実際には、この精度の低下は非常に小さいため、最も極端な場合を除いて、完全に無視できます。
説明に追加するものがありますか?コメントで音を立ててください。他の技術に精通したStackExchangeユーザーからの回答をもっと読みたいですか? ここで完全なディスカッションスレッドをチェックしてください 。