NTP、SNTP のフォーマット


詳細についてRFC-1305、RFC-2030 を参照して下さい。


回線のトレース等を取ると、IPヘッダ部38バイト程度付加されることに注意すること。
宛先MACアドレス 48ビット
送信元MACアドレス 48ビット
ETYPE 16ビット
Version  4ビット
ヘッダ長  4ビット
サービスタイプ  8ビット
パケット長 16ビット
識別子 16ビット
フラグ  3ビット
フラグメント・オフ・セット 13ビット
TTL  8ビット
プロトコル  8ビット
ヘッダ・チェック・サム 16ビット
送信元IPアドレス 32ビット
宛先IPアドレス 32ビット
オプション 可変長
パッティング 32ビット

NTP、SNTPフォーマット

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN | MODE |     階層    | ポーリング間隔 |       精度       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          ルート遅延                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          ルート拡散                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          参照識別子                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     参照タイムスタンプ(64)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     開始タイムスタンプ(64)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     受信タイムスタンプ(64)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     送信タイムスタンプ(64)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    鍵識別子(任意)(32)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     メッセージダイジェスト(任意)(128)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


閏秒指示子(LI : Leap Indicator) : その日最後の1分において、閏秒を挿入、削除する事を示す。

00 (00)d : 警告無し (通常時はこれ)
01 (01)d : 最後の1分が61秒
10 (02)d : 最後の1分が59秒
11 (03)d : 警告

バージョン番号(VN : Version Number) :

000 (00)d :
001 (01)d : バージョン 1
010 (02)d : バージョン 2
011 (03)d : バージョン 3 (通常のNTPサーバ)
100 (04)d : バージョン 4 (通常のSNTPサーバ)

モード(Mode) : 動作モードを表す

000 (00)d : 予約
001 (01)d : 対称アクティブモード
010 (02)d : 対称パッシブモード
011 (03)d : クライアント
100 (04)d : サーバ
101 (05)d : ブロードキャスト
110 (06)d : NTP制御メッセージのため予約
111 (07)d : 私的使用のため予約

階層(Stratum) : 階層を表す。

00000000 (00)d : 不明または有効ではない
00000001 (01)d : 1次参照 (セシウム原子時計、GPS時計を参照している)
00000010 〜 00001111 (02)d〜(15)d : 2〜15次参照 (NTP、SNTPを経由して参照している)
00010000 〜 11111111 (16)d〜(255)d : 予約

ポーリング間隔(Poll Interval) : 8ビットの符号付き整数で、連続するメッセージの最大間隔を、秒単位で2のべき乗で表される。

00000000 :    0秒間隔
00000001 :    1秒間隔
00000010 :    2秒間隔
00000011 :    4秒間隔
00000100 :    8秒間隔
00000101 :   16秒間隔
00000110 :   32秒間隔
00000111 :   64秒間隔 ( 1分 4秒)
00001000 :  128秒間隔 ( 2分 8秒)
00001001 :  256秒間隔 ( 4分16秒)
00001010 :  512秒間隔 ( 8分32秒)
00001011 : 1024秒間隔 (17分 4秒)
00001100 : 2048秒間隔 (34分 8秒)

精度(Precision) : 8ビットの符号付き整数でローカル時計の精度を、秒単位で2のべき乗で表される。

一般的な外部から参照されているStratum1のサーバは、−16〜−20程度となる。
(私の経験からですが、Windows NTで Stratum2を構成してみたところ−9程度だったが、Linux で構成したところ−16程度だった。この違いはどこから生まれるのかは調査不足のため不明です。)

ルート遅延(Root Delay) : 32ビット符号付き固定小数点で、1次参照源までの往復遅延の合計を表す。

ルート分散(Root Dispersion) : 32ビット符号付き固定小数点で、1次参照源までの相対的な誤差を表す。

参照識別子(Reference Identifier) :

 32ビットのビット列で階層0,1のサーバでは4文字のアスキーで左寄せされている。残りは0で埋められている。
それ以外のサーバでは時刻源のIPv4のIPアドレスがセットされる。

参照タイムスタンプ(Reference Timestamp) : ローカル時計が最後に設定、修正された時刻を表す。

64ビットのタイムスタンプフォーマットで表される。

開始タイムスタンプ(Originate Timestamp) : クライアントからサーバへリクエストを発信した時間を表す。

64ビットのタイムスタンプフォーマットで表される。

受信タイムスタンプ(Receive Timestamp) : サーバへリクエストが到着した時間を表す。

64ビットのタイムスタンプフォーマットで表される。

送信タイムスタンプ(Transmit Timestamp) : サーバからクライアントに応答が発信された時間を表す。

64ビットのタイムスタンプフォーマットで表される。

鍵識別子(Key Identifier)(任意)

メッセージダイジェスト(Message Digest)(任意)


● タイムスタンプフォーマット :

64ビットの符号無し固定小数点で表される。1900年1月1日0時を基準に相対的な差を秒単位で表す。上位32ビットは整数部を、下位32ビットは小数点以下を表す。

● SNTP メッセージのセット内容(サーバ・クライアント・モード)

  クライアント リクエスト サーバ 応答 クライアント 処理
閏秒指示子 0 or 3  
バージョン番号 1−4 リクエストからコピー  
モード 2 or 4  
階層 1−14  
ポーリング間隔 リクエストからコピー 無視
精度 精度(求め方は不明) 無視
ルート遅延 無視
ルート分散 無視
参照識別子 参照源識別コード 無視
参照タイムスタンプ 最後に時間を合わせた時間 無視
開始タイムスタンプ 送信タイムスタンプからコピー クライアントからのリクエスト送信時間がセットされている。
受信タイムスタンプ 日時 サーバの受信時間がセットされている。
送信タイムスタンプ 日時 日時 サーバの送信時間がセットされている。

●使用されるポート

NTP、SNTP共に UDP 123番ポートを使用


注意 : これは、私個人の覚え書きであり、何も保証するもではありません。自己責任でお読み下さい。
Create:2001/12/15   Last modified:2009/10/02
Copyright (c) 2001-2013 Yoshi All Rights Reserved