最近遇到一个问题,需要程序进行严格的时间同步,因此学习一下网络时间协议。
NTP同步原理
网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。
NTP基于UDP报文进行传输,使用的UDP端口号为123。
NTP最典型的授时方式是Client/Server方式:
- 客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;
- NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
- 客户端在接收到响应报文时,记录报文返回的时间戳t4。
客户端用上述4个时间戳参数就能够计算出2个关键参数:
- NTP报文从客户端到服务器的往返延迟delay。
$delay=(t_4-t_1)-(t_3-t_2)$
- 客户端与服务端之间的时间差offset。
联立方程组:
$t_2=t_1+offset+delay/2$
$t_4=t_3+offset+delay/2$
可得:
$offset=((t_2-t_1)+(t_3-t_4))/2$
NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。
NTP时间同步频率
NTP时间同步频率修改请参考:
NTP时间同步精度
打开站点 https://time.is/ 可查看机器的时间精度。
参考链接
- 六千字详细图解网络时间协议(NTP),带你领略NTP的魅力!,by 网络技术联盟站.
- 什么是NTP?,by 高洋洋.
- 北斗授时原理及应用,by 西安同步.
- 各种Windows系统ntp客户端配置详解,by 西安同步.
- windows修改ntp同步时间间隔,by 梳碧湖的少年.