|
|
本帖最后由 zds1210 于 2025-11-16 09:24 编辑
关于ntp校时提高精度的方法,引用无忧大佬 老九的的话,参考下:
大概原理用大家能懂的意思说下(有些词只能用类似生活中的词才方便大家理解,不够专业的),有4个时间戳:
T1是你电脑向授时服务器发送授时请求的时间;
T2是授时服务器收到你请求的时间;
T3是授时服务器将处理好的数据发回给你电脑的时间;
T4是你电脑收到授时服务器答复(专业称响应包)的时间。
注意T1和T4是同一个时钟,是你电脑时钟的时间,而T2和T3是另一个时钟,是服务器时钟的时间,这两个时钟是不同的,因为你电脑时钟的时间一般不正确。
T4 - T1就是往返延迟,我限定超过1秒为超时(以前的时间同步工具一般限定为3秒或5秒,因为以前网络环境差,现在网络环境好,我限定要求就高)。
有了上面四个时间戳后,就简单说下同步时间方法,比较好处理有三种方案:
1、直接用T3作正确时间,很多时间同步工具就这样,如论坛发了一个有源码的(我看过源码),这种方案对低延迟的服务器授时请求也够用,它比正确时间会慢大概0.几秒,慢的时间就是回程时间,从T3到T4的时间(此T3、T4要理解成地点)。
2、用T3加回程时间作补偿,这个方案比第1个方案肯定准确,回程时间不能用T4-T3计算,因为T3、T4不是同一时钟,计算方法是 [(T4 - T1) - (T3 - T2)]/2,为什么这样计算自己去理解。这种方法在网络上行和下行速度相等(也叫延迟对称)时,时间精度理论上是没有偏差了,但网络基本不是延迟对称,因而有第3种最常用的简单方法。
3、就是用上面的四个时间戳计算时间偏差(NTP时间协议中用θ表示,这个计算推导过程稍复杂,在此省略),时间偏差的实际意义就是你电脑时间比服务器的快(慢)多少,T4+θ就是正确时间。
GetNetTime用第3种方案,非延迟对称的网络比第2个方案准确,延迟对称时与第2个方案精确度一样。当然针对不同网络环境,不同精度要求,不同应用场所,还有更多方案可选择,但一般的同步时间,上述3种方案就够
老九兄弟总结得非常好,做ntp授时的精华。这个软件,估计就是用了第一种方案。其实就现在的网络环境,用第二种sntp的方案,国内外的服务器,误差肉眼看不出来。这货,用第一个方案,国外的服务器,时延大,肉眼可见。还有北京时间就显示为本地时间,这个bug……
还有,要安装net fra什么软件的,都让用户不好上手。
还有主程序可能没有默认以管理员权限运行之,菜鸟在win8以上系统就用起来不顺手。
|
|