Windows使用程序员

NTP/SNTP协议介绍和校时服务器搭建

2018-02-08  本文已影响581人  046ef6b0df68

文|Seraph

本文主要简单介绍用于校时的NTP/SNTP协议
同时,以windows 2008 R2为例,搭建NTP/SNTP服务器
NTP可参考文献RFC1305,SNTP可参考文献RFC1796

1. 应用场景

一般应用,连上公网即可通过NTP/SNTP协议进行校时,例如Windows系统上自带的NTP/SNTP服务器地址:time.windows.com。
然而,有些应用要求校时精度比较高,所以需要局域网内自行搭建NTP/SNTP校时服务。

2. NTP与SNTP功能

网络时间协议可以估算出数据包在网络上往返延迟,并可独立地计算出计算机时钟偏差。NTP可以提供1~50ms的可靠时钟源。
在实际很多应用中,可能不需要如此高精度,此种情况可以使用SNTP。SNTP通常是用于网络中叶子节点设备的时间同步,因为通常该站点对时间精度的要求并不是非常高。
NTP和SNTP的数据包格式是一样的,计算客户时间、时间偏差以及包往返时延的算法也是一样的。

3. NTP工作原理
时间序列图
双向延时: A相对于B的时间差:
如果往返的传输时间相等,根据四个时刻可以求得时钟偏差和传输时间
3. NTP协议格式
NTP协议格式
4. NTP工作模式

5. Windows搭建NTP/SNTP服务器

以下是使用WIndows Time(W32Time)service建立一个SNTP/NTP服务器,为windows或非windows客户端提供时间服务。

手动修改步骤

<1> 修改注册表

<2> 重启win32time服务

使用.bat制作一键处理

命令功能包含:修改注册表并启动W32Time服务,将该代码段Copy到.bat文件中,保持运行即可。

@echo off
echo 正在初始化SNTP服务器......
echo Windows Registry Editor Version 5.00 >t1.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config] >>t1.reg 
echo "AnnounceFlags"=dword:00000005 >>t1.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer] >>t1.reg 
echo "Enabled"=dword:1 >>t1.reg
regedit /s t1.reg 
del /q t1.reg 
sc config W32Time start=auto
sc stop W32Time
sc start W32Time
echo SNTP服务器启动完成!
echo. & pause

<3> 客户端测试

建议:

  • 客户端请求要大于1min,以免SNTP服务器负担过重,无法及时响应。
  • 高可靠性系统中,最好配置多台SNTP服务器,利用DNS实现负载均衡。
  • 客户端应该能识别服务器故障,一旦故障,应丢弃时间戳,转向其他服务器请求授权。
6. 相关软件资源
上一篇下一篇

猜你喜欢

热点阅读