每个 GPS 卫星都背着一台原子钟。你以为它在告诉你在哪,其实它主要在告诉你几点了——精确到 30 纳秒的那种。定位只是「拿几个时间差解个方程」的副产品。
这个每次打开地图都被你在用的技术,主业是授时。
下面三件事,你可以亲手做:① 看时钟误差怎么毁掉定位;② 量你浏览器的时钟精度;③ 量你设备离真实时间差多远。
忘掉公式。GPS 定位这件事,画三个圆就能看懂。分三步走,每一步都能动手拖。
拖拽你的接收机(金色点),圆会跟着重新找交点。
光速是 299,792,458 米/秒。所以时钟误差每差 1 纳秒,你算出的距离就偏 30 厘米;每差 1 毫秒,位置就偏 300 公里。
为了防 Spectre 侧信道攻击,浏览器故意把你的高精度时钟削钝。打开这个开关,当场在你的设备上量出它被削到了什么粒度。
点「测量」,看看你的浏览器把 performance.now() 削到了多少。
真正网络校时(NTP)走 UDP/123,浏览器发不了。所以我们用 HTTP 近似一次伪 NTP:连打几个样本,套四时间戳公式,挑网络抖动最小的那次。
点「测量」,结果会诚实标注这是 HTTP 近似,不是真 NTP。
2012 年 6 月 30 日,世界协调时间多了 1 秒(闰秒)。全球一大片机器的时钟被「往前跳了一秒」然后倒回去——结果很多程序直接卡死。
很多系统用「单调递增"时间差"」来判断超时。闰秒让墙上钟往回跳 1 秒,这些差值瞬间变成负数,超时判断直接错乱。