一、概念
- NTP(Network Time Protocol),互联网时间协议。
- UTC(Coordinated Universal Time),协调通用时间。根据原子振荡周期所计算的物理时钟,这种计算方式对于时间的计算误差时很小的。
- GMT(Greenwich Mean Time),表示的是格林尼治时间,是根据地球的自转周期计算的标准时间,由于各种不稳定因素的影响,计时不是很理想。
- 软件时钟:表示的是操作系统从1970/01/01开始计算的秒数。
- 硬件时钟:主机硬件上面的时钟,主要是BIOS内部时间的记录了。
二、原理
- NTP是为实现高精确度的时间同步,而设计的网络时钟同步协议,基于IP和UDP,相关标准在RFC1305中有定义。
- NTP客户端按照规定的时间间隔内向时钟源发出探测报文,一次发出8份报文,报文中记录了进行时间同步需要的所有信息。如果当前客户端和时钟源之间的时差和同步距离在容忍之内,则进行平滑同步(不允许时间跳变),若超出容忍值,则认为该时钟源不可信,返回400标识,不同步。
- NTP工作室可以构建树形结构进行时间同步。
NTP共有四种工作模式:client/server、对等体模式、广播模式、组播模式。
NTP数据报文
这里仅对常用的模式简单介绍一下:
- VN:NTP版本号。
- Mode:NTP工作模式。
- Stratum:时钟层数,表示时钟精确度。取值1-15,精确度递减。
- Poll:发送探测报文的最小间隔时间。
- Precision:时钟精度,由多个计算量经一系列算法计算得到(时差、网络拥塞等)。
- Root Delay:到主参考时钟的总往返时间。
- Root Dispersion:本地时钟相对于主参考时钟的最大误差。
- Reference Timestamp:本地时钟最后一次被设定或更新的时间。如果值为0表示本地时钟从未被同步过。
- Originate Timestamp:NTP报文离开本地NTP客户端的时间戳(T1)。
- Receive Timestamp:NTP报文到达对端时钟源(server)的本地时间(T2)。
- Transmit Timestamp:应答报文离开对端时钟源(server)的本地时间(T3)。
上述几个报文字段有如下关系:先假设应答报文到达本地的时间为T4,则,
- 报文往返时延Delay=(T4-T1)-(T3-T2)
- 客户端与时钟源的时间差offset=((T2-T1)+(T3-T4))/ 2
我们在分析问题时一般不会直接管制NTP的数据报文,除非要定位系统底层问题。当NTP同步状态异常时,分析控制报文往往会事半功倍。
NTP控制报文