Time 如何使用时间戳和往返时间设置机器时钟

Time 如何使用时间戳和往返时间设置机器时钟,time,distributed-system,clock-synchronization,Time,Distributed System,Clock Synchronization,与单一时间服务器同步的机器记录时间戳和往返时间。从时间戳和往返时间中,您如何知道应该使用哪个时间来设置时钟?机器应该把时钟调到什么时候?您如何估计设置的准确度?我将用一个例子来说明如何做到这一点 让您的机器M的时钟比时间服务器S的时钟早x=50ms。任务是让M计算出这个50毫秒。进一步假设网络延迟为d=10ms 在时间1000米时,我认为时间是1050。它发送1050到S 在时间1010,S接收消息,并发回其当前时间1010 在时间1020,S认为时间是1070,它接收到包含1010的消息

与单一时间服务器同步的机器记录时间戳和往返时间。从时间戳和往返时间中,您如何知道应该使用哪个时间来设置时钟?机器应该把时钟调到什么时候?您如何估计设置的准确度?

我将用一个例子来说明如何做到这一点

让您的机器M的时钟比时间服务器S的时钟早x=50ms。任务是让M计算出这个50毫秒。进一步假设网络延迟为d=10ms

  • 在时间1000米时,我认为时间是1050。它发送1050到S
  • 在时间1010,S接收消息,并发回其当前时间1010
  • 在时间1020,S认为时间是1070,它接收到包含1010的消息
现在M建立了两个方程:

  • (1050-x)+d=1010//M在(1050-x)发送消息;以延迟d到达S
  • 1070-x=1010+d//M在1070-x接收消息,即1010加上延迟d

通过解方程,M知道它的时钟提前了x=50ms。

我将用一个例子来说明如何做到这一点

让您的机器M的时钟比时间服务器S的时钟早x=50ms。任务是让M计算出这个50毫秒。进一步假设网络延迟为d=10ms

  • 在时间1000米时,我认为时间是1050。它发送1050到S
  • 在时间1010,S接收消息,并发回其当前时间1010
  • 在时间1020,S认为时间是1070,它接收到包含1010的消息
现在M建立了两个方程:

  • (1050-x)+d=1010//M在(1050-x)发送消息;以延迟d到达S
  • 1070-x=1010+d//M在1070-x接收消息,即1010加上延迟d
通过解方程,M知道它的时钟超前x=50ms