NTP报⽂解析及对时原理
参考:
NTP(Network Time Protocol)⽹络时间协议基于UDP,默认端⼝为123。
1、NTP报⽂⽰例
其中192.10.10.189为NTP的server端,192.10.10.32为client端。
2、NTP服务端与客户端的交互过程
记住我
客户端和服务端都有⼀个时间轴,分别代表着各⾃系统的时间,当客户端想要同步服务端的时间时,客户端会构造⼀个NTP协议包发送到NTP服务端,客户端会记下此时发送的时间t0,经过⼀段⽹络延时传输后,服务器在t1时刻收到数据包,经过⼀段时间处理后在t2时刻向客户端返回数据包,再经过⼀段⽹络延时传输后客户端在t3时刻收到NTP服务器数据包。t0和t3是客户端时间系统的时间、t1和t2是NTP服务端时间系统的时间,它们是有区别的。
t0、t1、t2分别对应着server->cient NTP报⽂中的三个参数:
t0:origin timestamp
t1: receive timestamp
t2: transmit timestamp
t3为client收到回复报⽂时本地的时间。
3、延时和时间偏差计算
假设:客户端与服务端的时间系统的偏差定义为θ、⽹络的往/返延迟(单程延时)定义为δ。
推导过程:
1)根据交互原理,可以列出⽅程组:
t0+θ+δ=t1
t2-θ+δ=t3
2)求解⽅程组,得到以下结果:
θ=(t1-t0+t2-t3)/2
δ=(t1-t0+t3-t2)/2
记忆时可以采⽤极限法,分别假设延时和偏差为0.
4、client时间校准:
对于时间要求不那么精准设备,client端可把server端的返回时间t2固化为本地时间。但是作为⼀个标准的通信协议,必须计算上⽹络的传输延时,需要把t2+δ固化为本地时间。以上client时间校准算法只为理解过程,不代表真实做法
5、报⽂中其他参数说明
mode:⼯作模式
服务器 / 客户模式(server / client)
对等体模式(symmetric active / symmetric passive)
⼴播模式(broadcast server / broadcast client)
组播模式(multicast server / multicast client)
关于NTP的层数
层数(取值范围 1-15): 层数是NTP中⼀个⽐较重要的概念,它基本上可以说是代表了⼀个时钟的准确度,层数为1的时钟准确度最⾼,从1到15依次递减.