对时同步协议NTP

302 阅读3分钟

1. 什么是NTP

NTP是时钟同步协议,位于应用层,在分布式时间服务器和客户端之间进行时间同步。

2. NTP工作模式

  • 客户端和服务器模式

    一对多以及服务器地址是已知的情况下使用。

    • NTP客户端主动向服务器发起时间同步请求。
    • NTP服务器响应客户端的请求,并提供时间信息。
    • 客户端需要知道服务器的IP地址或主机名。
    • 服务器需要配置为接受客户端的请求,并提供时间同步服务。
    • 适用于需要精确时间同步的网络环境,如金融交易系统、数据中心等。
    • 适合跨网络或互联网时间同步,客户端需要与特定的服务器进行通信。
  • 对等体模式

    两端相等的情况下使用。

  • 广播模式

    • NTP服务器在本地网络中定期广播时间信息,而无需客户端发起请求。
    • 客户端配置为被动接收这些广播数据包,并根据接收到的时间信息进行同步。
    • 客户端需要配置为监听特定的广播地址和端口(默认为UDP 123)。
    • 服务器必须在本地网络中,且客户端能够接收到其广播的数据包。
  • 组播模式

3. NTP工作过程

  1. 客户端发送NTP报文给服务端,客户端会记录发送时的时间例如12:00:00记T1。
  2. 服务端接收到NTP报文后,也会记录服务器的时间例如12:30:00记为T2。
  3. 服务端回应NTP报文,这时会记录当前时间例如12:30:01记为T3。
  4. 客户端收到NTP报文后会记录当前时间例如12:03:00记为T4。

对时公式为:((T2-T1)+(T3-T4))/2,得到时间差,客户端将T1加上时间差得到服务器时间,与之同步。

4. NTP广播模式下客户端配置(Windows)

4.1 打开注册表编辑器

4.2 找到路径计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

4.3 添加值

  • Type,REG_DWORD类型,设置为2。 表示启用NTP广播模式。
  • NtpServer,REG_SZ类型,设置为NTP服务器的IP地址。
  • SpecialPollInterval,REG_DWORD类型,表示客户端接收广播的时间间隔。

4.4 重启Windows时间服务。

服务中找到Windows Time,重启。 注意需要开启NTP端口,默认UDP123,以便客户端接收到NTP广播。自动接收时间更新,无需手动发起同步请求。

5. NTP客户端和服务端模式下客户端配置(Windows)

5.1 打开注册表编辑器

5.2 找到路径计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

5.3 添加值

  • Type,REG_DWORD类型,设置为2。表示启用NTP客户端模式。
  • NtpServer,REG_SZ类型,设置为NTP服务器的IP地址。
  • SpecialPollInterval,REG_DWORD类型,表示客户端接收广播的时间间隔。

5.4 重启Windows时间服务。

服务中找到Windows Time,重启。