-
以前のコラムで「MSさんちの2036年問題」としましたが
インターネットで使用されているNTPプロトコルにも同様な
問題がありました。
NTPプロトコルはインターネット機器間で
時間の同期を合せる為に広く用いられていますが、これにも
2036年問題がありました。
NTPプロトコルは64ビット幅で時間を表し、上位32ビットが
1900年1月1日からの経過秒を表します。
これで行くとMSさんと同様に2036年2月7日6時28分16秒に
桁あふれがでます。
MSさんちのCランタイムはここから取ってきたようです。
この問題に対して、インターネット界はどう考えているかというと、
この仕様を定義?しているRFC2030では、先ほどの上位32ビットを
1ビットの状態ビットと31ビットの経過秒に分けて対応するようです。
すなわち、状態ビットが'1'の場合は現在の経過秒が1968年から
2036年の間に有ることを示し、'0'の場合の2036年以降にある事を
示します。この方法だと、2104年までは対処できます。
でも、この方法では約68年毎に状態ビットの状態で判別しなければ
ならず、その度にアプリ側の修正が必要になります。
根本対策には経過秒の桁数を増やすしかなさそうですね。