文|Seraph本文主要简单介绍用于校时的NTP/SNTP协议同时以windows 2008 R2为例搭建NTP/SNTP服务器NTP可参考文献RFC1305SNTP可参考文献RFC17961. 应用场景一般应用连上公网即可通过NTP/SNTP协议进行校时例如Windows系统上自带的NTP/SNTP服务器地址time.windows.com。然而有些应用要求校时精度比较高所以需要局域网内自行搭建NTP/SNTP校时服务。2. NTP与SNTP功能网络时间协议可以估算出数据包在网络上往返延迟并可独立地计算出计算机时钟偏差。NTP可以提供1~50ms的可靠时钟源。在实际很多应用中可能不需要如此高精度此种情况可以使用SNTP。SNTP通常是用于网络中叶子节点设备的时间同步因为通常该站点对时间精度的要求并不是非常高。NTP和SNTP的数据包格式是一样的计算客户时间、时间偏差以及包往返时延的算法也是一样的。3. NTP工作原理双向延时A相对于B的时间差如果往返的传输时间相等根据四个时刻可以求得时钟偏差和传输时间4. NTP协议格式5. NTP工作模式服务\客户端模式广播模式对等体模式组播模式6. Windows搭建NTP/SNTP服务器以下是使用WIndows TimeW32Timeservice建立一个SNTP/NTP服务器为windows或非windows客户端提供时间服务。手动修改步骤1 修改注册表打开运行输入regedit,打开注册表找到如下位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32time\Config双击AnnounceFlags项并输入数值5在注册表找到如下位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32time\TimeProviders\NtpServer双击Enabled项并输入12 重启win32time服务打开CMD命令行输入sc config W32Time startauto配置为自动启动输入net stop w32time关闭服务输入net start w32time启动服务显示WIndows Time 服务已经启动成功即表示服务器搭建成功使用.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 AnnounceFlagsdword:00000005 t1.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer] t1.reg echo Enableddword:1 t1.reg regedit /s t1.reg del /q t1.reg sc config W32Time startauto sc stop W32Time sc start W32Time echo SNTP服务器启动完成 echo. pause3 客户端测试找到局域网内另一天计算机打开cmd输入net time /setsntp:130.0.0.1(这里的IP为刚刚搭建的校时服务器IP输入net stop w32time再输入net start w32time现在客户端即可与服务器同步时间了可以手动改动服务器时间来看客户端是否同步更新。#####6. 相关软件资源Meinberg NTP