Network Time Protocol
Network Time Protocol(ネットワーク・タイム・プロトコル、NTP)は、パケット交換による遅延時間が変動するネットワーク上のコンピュータシステム間で時刻同期させるための通信プロトコルである。1985年以前から運用されており、現在使用されている中で最も古いインターネットプロトコルの1つである。NTPは、デラウェア大学のデイヴィッド・L・ミルズによって設計された。NTPによって提供される数ミリ秒以下の誤差の時刻同期は情報システムにおいて時刻で管理される様々なデータや処理の整合性を保つために必要であり、NTPが利用できなくなり時刻同期が行えなくなった場合には直ちにシステム障害が発生するため非常に重要な通信プロトコルであると言える。
NTPサーバの実装の多くでは、時刻の校正のみならず、時計の進み遅れの度合いの校正も行う。一般的にコンピュータ内部の時計は、ハードウェアの時計が提供する時刻をそのまま利用する場合と、割り込みなどによりソフトウェア的に時計を進める場合がある。いずれの場合も、設計状態での時計は数ppm以上(1ppmは百万分の一、およそ10日で1秒程度の精度)の狂いがあるため、他のNTPサーバからの時刻と自機の時計を数回比較した後、時計の進み遅れの度合い(ドリフト)も修正する必要がある。さらに気温変動など外乱要因による2次以上のドリフト(上述した進み遅れ度合いの変化)も存在するが、多くのNTPサーバでは一次補正(直線的なドリフトの補正)を行う実装にとどまる。
なおNTPサーバプログラムを用いてコンピュータの時刻の校正を行う場合、突然『もっともらしい時刻』に校正するのは危険である。サーバ機能を提供しているコンピュータでは、時刻が飛ぶことにより、定時に実行されるサービス(UNIXのcron・atなど)が実行されなくなったり(時計を進める場合)同じサービスが2回実行される(時計を遅らせる場合)ことがあるからである。したがって、ドリフトを調整して時刻を目的の時刻に徐々に近づけていく実装が正しい。