网络时间协议(ntpd)根据网络上的时间服务器自动设置我的系统时间(或类似的东西。;)
我一直想知道,这是如何运作的?网络上传输的所有内容都是以数据包的形式传输的,这些数据包会以非常异步的方式经过多次跳跃和延迟,那么时间信息如何从一个地方到达另一个地方,并补偿传输时间等?
答案1
这个过程相当复杂,但请注意,NTP 同步是一个对话,正如您所怀疑的,它需要计算往返时间才能有效同步,同时考虑数据包需要多长时间。
虽然客户端在请求时间更新时可能无法准确知道时间,但它至少知道何时发送了数据包。服务器知道它收到数据包的确切时间,以及它发送回复的确切时间。客户端知道它发送数据包和收到回复之间的时间间隔。
因此,只要对话过程中的延迟一致,就可以直接根据这些数字来计算正确的时间。
当然,它并不总是一致的,这就是为什么通常配置多个服务器以便可以平均错误,同时客户端保存状态跟踪信息以便它可以忽略任何疯狂的结果。
维基百科是一个很好的详细信息来源。