2036年問題

読み:にせんさんじゅうろくねんもんだい
外語:year 2036 problem 英語
品詞:名詞

NTPが抱える時限爆弾の一つ。

NTPは、インターネットで接続されたコンピューター同士で時刻を同期させるために使われる、時刻通知プロトコルである。

NTPは、基点である1900年1月1日 00:00:00(UTC)からの経過秒数を32ビットで返す。これはつまり、232−1秒、すなわち4,294,967,295秒までしか数えることができない。これを超えた場合、経過秒数は0に戻ってしまう。これが2036年問題である。

NTPでは先述のように、「1900年1月1日 00:00:00 + 0xffffffff秒より後が表現できない」という問題を抱えている。

すなわちNTPで表現可能な日時は2036年2月6日 06:28:15(UTC)まで、つまり2036(平成48)年2月6日15:28:15(日本時間)(@311)までであり、これより後は表現できずに1900年に戻ってしまう。

そこで、現在ではSNTPv4などのRFCにより対応案が提案されている。具体的には、次のようにして問題を先送りする。

  • 0x80000000〜0xffffffff: 1968年〜2036年 (2036(平成48)年2月6日15:28:15(日本時間)(@311)まで)
  • 0x00000000〜0x7fffffff: 2036年〜2104年 (2036(平成48)年2月6日15:28:16(日本時間)(@311)から)

この仕様は2104年問題を生じさせるが、その頃に再び同様の改修をすることで乗り切ることが出来ると考えられている。