NTP时间服务器工作原理

NTP简介

NTP(Network Time Protocol, 网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步,NTP基于UDP保温进行传输,使用UDP端口号为123。
使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。
对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以喝其他设备互相同步。

NTP工作原理

NTP的基本工作原理如图1-1所示。Device A和Device B通过网络相连,他们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:

  • 在Device A和Device B的系统时钟同步之前,DeviceA的时钟设定为10:00:00am,DeviceB的时钟设定为11:00:00am。
  • 设备B作为NTP时间服务器,即设备A将使自己的时钟与设备B的时钟同步。
  • NTP报文在设备A和设备B之间单向传输所需要的时间是1秒
  • FAQ

    图1-1 NTP原理图
    系统时钟同步过程如下:

  • 设备A发送一个NTP报文给设备B,该报文带有它离开设备A时的时间戳,该时间戳为10:00:00am(T1)。
  • 当此NTP报文到达设备B时,设备B加上自己的时间戳,该时间戳为11:00:01am(T2)。
  • 当此NTP报文离开设备B时,设备B再加上自己的时间戳,改时间戳为11:00:02(T3)。
  • 当设备A接收到该响应报文时,设备A的本地时间为10:00:03am(T4)。
  • 至此,设备A已经拥有足够的信息来计算两个重要的参数:
  • NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2 秒。
  • 设备A相对设备B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。
  • 这样,设备A就能够根据这些信息来设定自己的时钟,使之与设备B的时钟同步。
    以上内容只是对NTP工作原理的一个粗略描述,更详细的资料可以参阅RFC 1305。

    NTP工作模式

    设备可以采用多种NTP工作模式进行时间同步:

  • 客户端/服务端模式
  • 对等体模式
  • 广播模式
  • 组播模式
  • 用户可以根据需要选择合适的工作模式。在不能确定服务器或对等体IP地址、网络中需要同步的设备很多等情况下,可以通过广播或组播模式实现时钟同步;服务器和对等体模式中,设备从指定的服务器或对等体获得时钟同步,增加了时钟的可靠性。
    1、客户端/服务器模式
    FAQ
    在该模式下,客户端能同步到服务器,而服务器无法同步到客户端。Mode3客户模式,mode4服务模式,
    适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。
    2、对等模式
    FAQ
    主动对等体和被动对等体可以互相同步。如果双方的时钟都已经同步,则以层数小的时钟为准。Mode1是主对等体模式,mode2被对等体模式,mode3客户模式,mode4是服务模式
    3、广播模式
    FAQ
    在广播模式中,服务器端周期性地向广播地址255.255.255.255发送时钟同步报文,报文中的Mode字段设置为5(广播模式)。客户端侦听来自服务器的广播报文。流程如图1-4所示。Mode3客户模式,mode4服务模式
    4、组播模式
    FAQ
    在组播模式中,服务端周期性地向组播地址发送时钟同步报文。报文中的mode5是组播模式,mode4是服务器模式,mode3是客户模式。