NTP协议
NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP是基于UDP报文进行传输的,使用UDP的端口号为123
使用NTP的目的是对网络内所有具有时钟的设备进行时间同步,使网络内所有的设备时钟保持一致,从而使设备能够提供基于统一时间的多种应用。
对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
NTP工作原理
NTP的基本工作原理如图。Device A和Device B通过网络连接,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:
在Device A和Device B的系统时间同步之前,Device A的时钟设定为10:00:00am,Device B的系统时间为11:00:00am。
Device B作为NTP时间服务器,即Device A将自己的时钟与Device B的时钟同步。
NTP报文在Device A和Device B之间单项传输所需要的时间为1S。
系统时钟同步的工作过程如下:
Device A 发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。
当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。
当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)
当Device A收到该响应报文时,Device A的本地时间为10:00:03am(T4);
至此,Device A已经拥有足够的信息来计算过两个重要参数:
NTP报文往返时延Delay=(T4-T1)-(T3-T2)=2s。
Device A相对Device B的时间差offset=(T2-T1)+(T3-T4)/2=1小时。
这样,Device A就能够根据这些信息来设定自己的时钟,使之与Device B的时钟同步。
NTP报文格式
NTP有两种不同类型的报文格式,一种是时钟同步报文,一种是控制报文。控制报文仅用于需要网络管理的场合,它对于时钟同步功能来时并不是必要的,这里不做介绍。
主要字段解释如下:
1. LI (Leap Indicator):长度为2bit,值为“11”时表示告警状态,时钟未被同步。为其他值时NTP本身不做处理。
2. VN(version Number): 长度为3bit,表示NTP的版本号,目前最新的版本为3.
3. Mode:长度为3bit,表示NTP的工作模式。不同值的含义分别是:0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用。
4. Poll:轮询时间,即两个连续NTP报文只之间的时间间隔。
5. Precision:系统时钟精度
6. Root Delay:本地到主参考时钟源的往返时间
7. Root Dispersion: 系统时钟相对于主参考时钟的最大误差。
8. Reference Identifier:参考时钟源的标识。
9. Reference Timestamp:系统时钟最后一次被设定或更新的时间。
10. Originate Timestamp:NTP请求报文离开发送端时发送端的本地时间
11. Receive Timestamp:NTP请求报文到达就收端时接收端的本地时间。
12. transmit timestamp:应答报文离开应答者时应答者的本地时间
13. Authenticator :验证信息。
NTP的工作模式
设备可以采用多种NTP工作模式进行时间同步:
客户端/服务器模式
对等体模式
广播模式
组播模式
用户可以根据需要选择合适的工作模式。在不能确定服务器或对等体(在OSI七层模型中处于同一层的网络实体)IP地址,网络中需要同步设备等很多情况下,可以通过广播或组播模式实现时钟同步;客户端/服务器和对等体模式中,设备从指定的服务器或对等体获得时钟同步,增加了时钟可靠性。
1. 客户端/服务器模式
在客户端/服务器模式中,客户端向服务器发送时钟同步报文,报文中的MODE字段为3,客户模式。服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的MODE字段设为4(服务器模式)。客户端收到应答报文后,进行是时钟过滤和选择,并同步到优选的服务器。
在该模式下,客户端能同步到服务器,而服务器无法同步到客户端。
2.对等体模式
在对等模式中,主动对等体和被动对等体之间首先交互MODE字段为3(客户端模式)和4(服务器模式)的NTP报文。之后,主动对等体向被动对等体发送时钟同步报文,报文中的MODE字段设为1(主动对等体),被动对等体收到报文后自动工作在被动对等体模式,并发送应答报文,报文中的MODE字段设为2(被动对等体)。经过报文的交互后,对等体模式建立起来。主动对等体和被动对等体可以互相同步。如果双方的时钟都已经同步,则以层数小的时钟为准。
3. 广播模式
在广播模式中,服务器端周期性地向广播地址255.255.255.255发送时钟同步报文,报文中的MODE字段设为5(广播模式)。客户端侦听来自服务器的广播报文。当客户端接收到第一个广播报文后,客户端和服务器交互MODE字段为3(客户模式)和4(服务器模式)的NTP报文,以获得客户端与服务器间的网络延迟。之后,客户端就进入广播客户端模式,继续侦听广播报文,根据来到的广播报文对系统进行时钟同步。
4. 组播模式