计算机是如何进行时间同步的 电脑时间同步

计算机时间同步(计算机如何同步时间)
为什么在网络世界中,时间同步是所有计算机协同工作的一个非常重要的基础 。电脑有自己的时间 。这个时间是通过模拟内部晶体资源网络振荡器产生的固定频率的时间流逝来计算的 。虽然频率很稳定,也有误差,虽然目前工艺水平误差很小 。(对于振荡的具体原理,这里不做说明 。)
由于本地时间会出现错误,因此会导致两台服务器之间的时间不一致 。要消除不一致,需要一个统一的时间标准,然后我们都用这个标准作为参考时间,校准我们的当地时间,这不仅仅是坐标世界时(UTC),这个时间是怎么来的也不是本文的重点 。
好了,现在,在另一个地方,有一个标准时间,如何通过网络将这个标准时间同步到你的本地电脑上?同步过程中如何尽可能消除网络延时的影响?
怎么如果直接进行网络请求,能否得到返回时间戳并修改本地时间?显然不是 。别忘了,数据包在网络中传输是需要时间的 。你不知道这个请求从对方传到本地计算机有多久了 。过程中的延迟会严重影响时间校准的结果 。
好了,我们现在遇到的问题是网络延迟 。如果能消除网络延迟,就能精确同步 。但是,资源网以目前的技术水平是做不到的 。既然延迟无法消除,如果能知道延迟的时间,也可以通过计算消除延迟的影响 。
网络中数据包的传输大致如下:

计算机是如何进行时间同步的 电脑时间同步

文章插图


这些值如下:
C1:客户发出请求的当地时间
C2:客户收到返回的当地时间
S1,时间服务器接收请求的服务器时间
S2:时间服务器发送响应的服务器时间
SC1:客户端发出请求的服务器时间
SC2:客户端接收返回的服务器时间
CS1:时间服务器接收请求的本地时间
CS2:时间服务器发送响应的本地时间
我们现在的目的似乎很简单,就是在收到退货的时候,把当地时间C2校准到SC2 。首先要明确的是,【div】[/div】C2和SC2不想等,否则在时间相同的情况下不需要校准 。
首先我们本地知道的信息是:【div】[/div]C1、【div】[/div】C2,可以让服务器告诉我们S1、【div】[/div】S2 。资源网络,我们假设网络中的延迟基本固定,即S1-C1=C2-S2 。
好了,现在已经成功转化成数学题了 。你是不是突然觉得简单多了?步骤如下:
Da = (C2-C1)-(S2-S1) #总延迟时间
D = da/2 #单延迟时间
SC1 = S1
SC2 = SC1 + (C2 - C1)
怎么样?巧妙地消除了网络延迟 。
以上就是时间同步ntp协议的内容 。然而,这种同步时间存在误差 。首先,假设往返网络时延相同 。如果延迟不对称,同步结果会不准确 。而且协议运行在应用层,从物理层到应用层的延迟也会影响最终的结果 。
app应用在实际编程中,我们经常编写这样的代码:
$t1=time();//dosometing...$t2=time();如果在获取$t1变量后,我们碰巧同步了时间,那么$t2可能会小于$t1,这并不奇怪 。幸运的是,有不同的同步方法可供我们选择 。在Ubuntu系统上进行了以下测试 。
Ntp:时间平滑过度,保证本地时间增加,减少本地和远端时间差 。
【计算机是如何进行时间同步的 电脑时间同步】Ntpdate:立即同步,上述$t2小于$t1的场景可能出现在这种功能情况下


    推荐阅读