NTP 的 wikipedia 页面 表示需要进行两次计算才能同步时钟:
将偏移量应用于客户端时钟是有意义的,但是往返延迟如何发挥作用?我已经把它一路写到了RFC for NTP,但仍然无法弄清楚。
据我所知,您只需将偏移量应用到客户端时钟的当前时间即可使其同步。
您可以通过将往返延迟除以二并将其添加到偏移量并将该数字应用于初始客户端时钟时间(我认为)来使用往返延迟。但是,我不确定是什么让您直接应用偏移。
只用偏移量就可以了,还是直接把往返时延参与计算?
不,仅靠偏移量是不行的——往返延迟会直接参与计算,如下所示(参见 https://www.eecis.udel.edu/~mills/time .html).
基本上(还有更多内容),NTP 估计如下:
offset = ((T2 - T1) + (T3 - T4))/2
delay = (T4 - T1) - (T3 - T2)
-where:
T1 = client timestamp at time of departure of request packet from client
T2 = server timestamp at time of ARRIVAL of request packet at server
T3 = server timestamp at time of departure of REPLY packet from server
T4 = client timestamp at time of ARRIVAL of REPLY packet back at client
我也有同样的问题。我最好的猜测是,它仅在从多个服务器轮询以过滤更接近客户端的服务器时才有用。除此之外,考虑到两个公式使用相同的参数,我不明白计算“适当的客户端时间”有什么用处,尽管我可能会遗漏一些东西,但缺乏关于如何处理这些参数的解释很烦人同步客户端时间的变量。