咨询热线:18384123230
对Windows熟悉的人都知道,在计算机系统时间设置里,可以设置本地计算机时间与Internet时间服务器时间同步,这样计算机就会定期与网络时间进行同步,不用就担心自己的计算机在经历较长时间后发生时间偏差。
我们都知道,计算机的时间来源于主板上的晶振,别管你的电脑有多贵,几百块的N手货,或者是几万块的吃鸡神装,这玩意儿的时间精度和你买给孩子的电子手表精度不会有太大差异。非互联网环境下的计算机,难道就没有办法自动更新时间了吗?当然不是的!计算机通过网络授时,是利用了一个叫NTP的网络授时协议,NTP的服务器通过高精度的原子钟来维持时间(新闻里常说的叫,叫什么一万年误差不超过一秒,具体误差有多大,还得看原子钟的具体类型),客户端计算机通过和NTP服务器通信,接收高精度且可信的时间来源,计算自己的时间误差,从而进行修正。
有人就说了,我的网络速度特别卡,打开个网页就要几分钟,量你服务器时间再准确,传输到我这里,就已经慢了十几秒了,这怎么办?放心,计算机的工程师们早就考虑到这个问题,NTP的协议,肯定不会那么简单。为了让更多人能理解这个NTP的协议,我说一下其中的原理算法:假设客户端C和服务器S在当前时刻下,各自的时钟时间分别为C1和S1,此时刻下客户端与服务器进行时间同步,他们之间应该会有这样的对话交流:客户端对服务器说:“我的时间是C1。”这句话经过网络延迟t1后被服务器听到,服务器说:“我在S2时刻听到你说时刻是C1,并在S3时刻告诉你。”
这句话又经过网络延迟t2后,在C4时刻被客户端听到。t1+t2=(C4-C1)-(S3-S2)
这就是两次网络传输的总共延迟时间,假定发送和接收延迟相等,那么单次网络传输延迟就是t3=(t1+t2)/2。这样,客户端最后一次收到服务器发来的时刻是S3,S3-t3就是客户端要修正的正确时间。
当然,真实的NTP协议比这个要复杂,经过多次计算后,广域网的NTP授时精度通常能达到50ms,也就是1/20秒,对一般人的授时需求,可以说是完全能够满足了。如果数据局域网、城域网,经过的路由交换少,多次传输间的网络延迟比较稳定,没有大的偏差,授时精度甚至能达到10ms。
所以,言归正传,在非互联网环境下,要实现整个内部网络的时间同步,把NTP服务器搬到局域网下,为其他主机授时,是一个非常不错的办法,这样只需要花精力让一台或几台时间服务器的时间保持精准就行了。
假设你找了一台电脑来做NTP的服务器,打算买一台原子钟来给服务器授时(铷钟6万、铯钟50万、氢钟130万),授时精度0.1ns至5ns,老板看了你的预算认为太高,不同意你买原子钟,但是要求你必须在三天之内搞定公司内部授时的问题,防止员工以时间不准为由借机提前下班,否则就要开除你。于是你花100块钱从淘宝上买了一个GPS模块连接到电脑上,通过GPS信号实现了卫星授时,授时精度50ns。接下来,就要想办法实现公司内部局域网的时间同步了。虽然很多人都知道Windows可以设置与服务器同步时间,但是很少有人知道他也可以反过来被设置为时间服务器,正如同刚才我们模拟的客户端与服务器的对话,只需要让客户端侦听别人的询问,并充当服务器的角色进行回答就可以了。
扫一扫在手机上阅读本文章