NTP协议学习笔记

最近遇到一个问题,需要程序进行严格的时间同步,因此学习一下网络时间协议。

NTP同步原理

网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。
NTP基于UDP报文进行传输,使用的UDP端口号为123。

NTP最典型的授时方式是Client/Server方式:

  1. 客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;
  2. NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
  3. 客户端在接收到响应报文时,记录报文返回的时间戳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/ 可查看机器的时间精度。

参考链接

  1. 六千字详细图解网络时间协议(NTP),带你领略NTP的魅力!,by 网络技术联盟站.
  2. 什么是NTP?,by 高洋洋.
  3. 北斗授时原理及应用,by 西安同步.
  4. 各种Windows系统ntp客户端配置详解,by 西安同步.
  5. windows修改ntp同步时间间隔,by 梳碧湖的少年.