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 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |LI | VN |Mode | Stratum | Poll | Precision | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 根延迟 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 根差量 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 参考标识符 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 参考时间戳(64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 原始时间戳(64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 接受时间戳 (64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 传送时间戳(64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | 认证符(可选项) (96) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+如下一部分描述,在SNTP 里大多数这些字段被预规定的数据给赋初值。
为完整起见,每个字段的功能在下面被简要总结 1. LI 闰秒标识器:这是一个二位码,预报当天最近的分钟里要被插入或删除的闰秒秒数用1/0表示,分别说明如下:LI Value 含 义00 0 无预告01 1 最近一分钟有61秒10 2 最近一分钟有59秒11 3 警告状态(时钟未同步)2. VN 版本号:这是一个三bits的整数,表示NTP的版本号,现在为33. Mode 模式:这是一个三bits的整数,表示模式,定义如下:mode 含 义0 保留1 对称性激活2 被动的对称性3 客户端4 服务器5 广播6 为NTP控制性系保留7 为自用保留在点对点模式下,客户端机在请求中设置此字段为3,服务器在回答时设置此字段为4;在广播模式下,服务器在回答时设置此字段为5。
4. 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/Ti。





