使用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通常使用多个时间服务器校验时间,该算法使用多种方法来确定这些获取的时间值是否准确,包括模糊因子和识别与其他时间服务器不一致的时间服务器,然后加速或减慢系统时钟的漂移率,使系统时间可以做到
- 系统的时间总是正确的;
- 在初始校正时间后,系统时间不会再有任何时间跳跃。
<