> 文章列表 > 使用SNTP协议从时间服务器同步时间

使用SNTP协议从时间服务器同步时间

使用SNTP协议从时间服务器同步时间

在互联网上校准时间,是几乎连接在互联网上的每台计算机都要去做的事情,而且很多是在后台完成的,并不需要人工干预;互联网上有很多时间服务器可以发布精确的时间,计算机客户端使用NTP(Network Time Protocol)协议与这些时间服务器进行时间同步,使本机得到精确时间,本文简要描述了NTP协议的原理,对NTP协议的时间同步精度做了简要分析,并具体实现了SNTP(Simple Network Time Protocol)下的客户端,本文附有完整的C语言SNTP客户端的源程序。阅读本文只需掌握基本的socket编程即可,本文对网络编程的初学者难度不大。

1. NTP协议和SNTP协议

  • SNTP协议使用与NTP协议同样的报文结构和格式,所以仅就从服务器进行时间同步而言,在服务器端看NTP和SNTP没有什么区别,使用SNTP协议的客户端可以从任何一台符合NTP协议的时间服务器上进行时间同步;
  • NTP和SNTP协议的区别在于错误检测和时间校准的算法上,这主要体现在客户端的软件上;
  • SNTP客户端程序向一台NTP时间服务器发出时间数据包,接收来自服务器的回应,并据此计算本机的时间偏差,从而校准本机时间;
  • NTP协议的算法比SNTP复杂得多,NTP通常使用多个时间服务器校验时间,该算法使用多种方法来确定这些获取的时间值是否准确,包括模糊因子和识别与其他时间服务器不一致的时间服务器,然后加速或减慢系统时钟的漂移率,使系统时间可以做到
    1. 系统的时间总是正确的;
    2. 在初始校正时间后,系统时间不会再有任何时间跳跃。
    3. <