
NTP协议格式(中文).doc
6页NTP 协议格式1. NTP 时间戳格式SNTP使用在RFC 1305 及其以前的版本所描述标准NTP时间戳的格式与因特网标准标准一致, NTP 数据被指定为整数或定点小数,位以big-endian风格从左边 0 位或者高位计数除非不这样指定,全部数量都将设成unsigned的类型,并且可能用一个在bit0 前的隐含 0 填充全部字段宽度因为SNTP时间戳是重要的数据和用来描述协议主要产品的,一个专门的时间戳格式已经建立 NTP用时间戳表示为一 64 bits unsigned 定点数,以秒的形式从 1900 年 1 月 1 日的 0:0:0 算起整数部分在前 32 位里,后 32bits(seconds Fraction)用以表示秒以下的部分在Seconds Fraction 部分,无意义的低位应该设置为 0这种格式把方便的多精度算法和变换用于UDP/TIME 的表示(单位:秒) ,但使得转化为ICMP的时间戳消息表示法(单位:毫秒)的过程变得复杂了它代表的精度是大约是 200 picoseconds,这应该足以满足最高的要求了 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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Seconds |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Seconds Fraction (0-padded) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2. NTP 报文格式 NTP 和SNTP 是用户数据报协议( UDP) 的客户端 [POS80 ],而UDP自己是网际协议( IP) [DAR81 ] 的客户端. IP 和UDP 报头的结构在被引用的指定资料里描述,这里就不更进一步描述了。
UDP的端口是 123,UDP头中的源断口和目的断口都是一样的,保留的UDP头如规范中所述以下是 SNTP 报文格式的描述,它紧跟在 IP 和 UDP 报头之后SNTP 的消息格式与RFC-1305 中所描述的 NTP 格式是一致的,不同的地方是:一些SNTP的数据域已被风装,也就是说已初始化为一些预定的值NTP 消息的格式被显示如下 1 2 30 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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|LI | VN |Mode | Stratum | Poll | Precision |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 根延迟 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 根差量 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 参考标识符 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| | | 参考时间戳(64) || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| || 原始时间戳(64) || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| || 接受时间戳 (64) || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| || 传送时间戳(64) || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| || || 认证符(可选项) (96) || || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+如下一部分描述,在SNTP 里大多数这些字段被预规定的数据给赋初值。
为完整起见,每个字段的功能在下面被简要总结 1. LI 闰秒标识器:这是一个二位码,预报当天最近的分钟里要被插入或删除的闰秒秒数用 1/0 表示,分别说明如下:(闰秒(rùn miǎo)是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少 1 秒的调整由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的) ,会使世界时(民用时)和原子时之间相差超过到±0.9 秒时,就把世界时向前拨 1 秒(负闰秒,最后一分钟为 59 秒)或向后拨 1 秒(正闰秒,最后一分钟为 61 秒) ; 闰秒一般加在公历年末或公历六月末2012 年 3 月,中科院国家授时中心宣布我国 7 月 1 日进行闰秒调整,届时将现 7:59:60)LI Value 含 义00 0 无预告01 1 最近一分钟有 61 秒10 2 最近一分钟有 59 秒11 3 警告状态(时钟未同步)2. VN 版本号:这是一个三 bits 的整数,表示 NTP 的版本号,现在为 3。
3. Mode 模式:这是一个三 bits 的整数,表示模式,定义如下:mode 含 义0 保留1 对称性激活2 被动的对称性3 客户端4 服务器5 广播6 为 NTP 控制性系保留7 为自用保留在点对点模式下,客户端机在请求中设置此字段为 3,服务器在回答时设置此字段为 4;在广播模式下,服务器在回答时设置此字段为 54. stratum(层):这是一个 8bits 的整数(无符号) ,表示本地时钟的层次水平,数值定义如下:stratum 含 义0 未指定或难以获得1 主要参考(如无线电时钟钟)2.15 第二参考(通过 NTP/SNTP)16.255 保留5. Poll 测试间隔:八位 signed integer,表示连续信息之间的最大间隔,精确到秒的平 方及本字段的值从 4(16s)到 14(16284s) ;然而,大多数应用使用 6(64s)到10(1024s) 6.Precision 精度:八位 signed integer,表示本地时钟精度,精确到秒的平方级值从 -6(主平)到-20(微妙级时钟) 7. Root Delay 根时延:32 位带符号定点小数,表示在主参考源之间往返的总共时延,以小数位后 15~16bits。
数值根据相关的时间与频率可正可负,从负的几毫秒到正的几百毫秒8. Root Dispersion 根离散:32 位带符号定点小数,表示在主参考源有关的名义错误,以小数位后 15~16bits范围:0~几百毫秒9. Reference Identifier 参考时钟标识符:32bits,用来标识特殊的参考源在stratum 0(未指定)或 stratum 1(基本参考)的情况下,该字段以四个八位字节,左对齐,零填充的 string 表示当没有 NTP 枚举时,使用下列 ASCII 标识符:阶层 代码 意思 1 pps 精度校准源,例如ATOM(原子钟),PPS代表(每秒脉冲精度源),等等 1 service 除了一般的NTP报时服务外,例如ACTS (计算机自动化报时服务),TIME(UDP/Time协议),TSP(Unix 报时服务协议),DTSS. (数字化时间同步服务),等等 1 radio 一般的收音机服务,带有callsigns, 例如CHU, DCF77, MSF, TDF, WWV, WWVB, WWV。
