Ntp工作原理

使用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之间单向传输所需要的时间为 X 秒。

时序图

系统时钟同步的工作过程如下:

1、Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。

2、当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。

3、当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。

4、当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。

至此,Device A已经拥有足够的信息来计算两个重要的参数:

NTP报文的往返时延 Delay=(T4-T1)-(T3-T2)= 2 * X秒

Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/ 2= 1小时

这样,Device A就能够根据这些信息(时间差offset)来设定自己的时钟,使之与Device B的时钟同步。

即:Device A调整后的时间 = Device A 当前时间 + 时间差offset

推导过程

上面的公式是如何推算过程如下:

我们认为,一个链接创建后,他的网络延时是稳定,即发送和接收过程的延时 delay 一致。

Device A 要同步 Device B 的时间,则认为Device A是不准确的时间,Device B是准确,所以有如下公式:

1、DeviceA 发送请求到Device B 时

T1 + offset(时间差) + delay(网络延时) = T2

2、DeviceA 接收Device B 响应时

T3 + delay(网络延时) = T4 + offset(时间差)

把公式2加上公式1,整理运算得出公式 offset = ((T2-T1)+(T3-T4))/ 2

NTP的工作模式

  • 客户端/服务器模式
  • 对等体模式
  • 广播模式
  • 组播模式

详细不叙述,参考NTP的工作原理以及工作模式