Kuzunoha-NEのブログ

pythonの勉強中。

インターネットにつなげると時間が自動で正確になるのです

インターネットにつなげると時間が正確になるのです

※追加:スマートフォンについて、時刻修正は基本的にNTPを使用していないのではないのでは?というご指摘をいただきましたので、後ほど記事を修正を行います。パソコンについての記載と読み替えていただければと思います。ごめんなさい。


 

ずいぶんご無沙汰しております。葛の葉です。

 

いつのまにか5月に突入しており、びっくりしております。時計をちゃんと見ていないと、日付ってわからなくなりますよね。ところで(?)、スマートフォンやパソコンをインターネットにつなげると、すぐに正確な時刻に修正されることをご存知でしょうか。

 

これって、実はすごいことだと思いませんか?ほんの10数年前までは、「117」の時報に電話をして、それに併せておかしくなった時計を手動で直していたのです。ですが、現在はインターネットに接続すれば、時間を確認することも、直すのも自動なのです

 

今回はスマートフォンやパソコンの時刻を正確に直す仕組みについて、書いていこうと思います。

 

  

「正確な時刻」を知っているNTPサーバーさんに聞いているわけです

 

すごーく簡単な話をしますと、ネットワークを介して、正確な時刻を知っているNTPサーバーさんと呼ばれるコンピューターに定期的に現在の時刻を確認しているからなんです。

 

ほんとそれだけ。

 

正確な時刻を知っているNTPサーバーさんに対してスマートフォンやパソコンが「いま日本の時間は何時なのん?」って聞いていまして、

NTPサーバーさんは「あー…日本だと…2018年のぉ…5月3日の水曜日でぇ…10時14

分23秒だねぇ」って言ってるだけなんです。

 

f:id:Kuzunoha-NE:20180522212556p:plain

 

それを聞いたスマートフォンやパソコンは「OK~じゃあ、その時間にするわ~」っていって、時刻の修正を行います。

 

こうやって、正確な時刻になっているわけなんですね。

 

 

ちょっとまてよ、どうしてNTPサーバーさんは正確な時刻を知っているのだろう?

 

 

NTPサーバーさんもまた聞きなわけです

 

NTPサーバーさんはどうして正確な時刻を知っているのだろう?そもそもNTPサーバーさんが知っている時刻って正確なのだろうか?適当な時間を言ってないだろうか?

 

実は、NTPサーバーさんが正確な時刻を知っているのは、NTPサーバーさんも別のNTPサーバーさんに時刻を聞いているのです。つまり、また聞きをしているのです。

 

NTPサーバーさんはインターネットに沢山いまして、階層構造になっております。上長だったり、ボスがいるみたいに思ってください。

 

NTPサーバーさんはボスのNTPサーバーさんに「親分、今の時間は何時ですかい?」と聞いて、ボスのNTPサーバーさんは「おう、今は何月何日の何時何分何秒だぜぃ」と教えています。そして、そのボスのNTPサーバーさんも、自分よりも上のボスのNTPサーバーさんから時刻を教えてもらっています。

 

なんてこった。また聞きのまた聞きを繰り返していくわけですね。

 

しかしそうなると、最後のボスのNTPサーバーさんは誰から「正確な時刻」を聞いているのだろう?

 

Stratum0と呼ばれるNTPサーバーさんのボス、つまりはトップ

 

先程、NTPサーバーさんは沢山いて、段階構造になっていると書いたと思います。その階層構造のことをStratum(ストラタム、ストレイタムとも)と呼びます。

 

トップのNTPサーバーさんのことをStratum1と呼び、その下流にいくにつれStratum2、3、4…と数字が増えていきます。先程のボスの例えで言えば、Stratum3のNTPサーバーさんのボスはStratum2に当たります。

 

f:id:Kuzunoha-NE:20180522212616p:plain

 

 

 Stratum1のNTPサーバーさんはStratum0に時刻を聞きます…このStratum0さんは何者かと言うと原子時計であったりGPS時計であったりするのです。

 

専門的なことはよくわからないですけど、原子時計GPS時計もかなり正確な時刻を刻むものらしいので、その時計から時間を聞いているのでStratum1のNTPサーバーさんは正確な時刻を知ることが出来ているわけなんですねぇ。

 

きちんとした情報源からまた聞きを繰り返してきて、最終的にスマートフォンやパソコンは正確な時刻を把握しているわけなんです。

 

鳥瞰的に考えてみよう

 

じゃあ最初からまた聞きなんかしないで、Stratum0にみんなが時間を聞けばいいじゃん!って思うかもしれませんが、そういうわけにもいかんのです。

 

世界中のパソコンやスマートフォンがStratum0にアクセスしてみたとしましょうか。

 

Stratum0さんはてんやわんやになります。所謂、ワンオペになっちゃいます。

 

だから、同じ役割をもつNTPサーバーさんを束に揃えて、それぞれに問い合わせをするようにしたわけなんですね。それがStratumという階層構造になるのです。

 

 

WinパソコンがどのNTPサーバーさんに時刻を聞いてるか確認しよう

 

今、自分のパソコンがどのStratumのNTPサーバーさんに時刻を聞いているか確認してみましょう。

 

コマンドプロンプトを立ち上げて

w32tm /query /peers

と入力し、エンターを押してみてください。

 

コマンドプロンプトの立ち上げ方はちょっと調べてみてください。)

 

f:id:Kuzunoha-NE:20180522212633j:plain

 

ピアが、現在、お使いのパソコンで時刻を聞いているNTPサーバーさんのアドレスです。このアドレスにあるコンピューターに時刻を確認しているわけですね。

 

階層が、Stratumになります。このtime.windows.comはStratum4に当たるようです。

 

時間が自動で修正されるってすごいことだ

 

NTPサーバーさんについて、簡単に説明しましたけど、何となくわかってもらえたでしょうか?本当はもう少し複雑なので、残りは君自身の眼で確かめてみてくれ!

 

インターネットに繋ぐことで自動化が出来ていることは他にもあるので、次回も同じような感じの記事を作りたいと思います。