NTP网络时间协议:电脑的时间从哪里来

NTP,全称 Network Time Protocol(网络时间协议),是目前互联网上使用最广泛的时间同步协议。它的任务只有一个:让分布在全球各地的计算机时钟,尽可能与标准时间(UTC)保持一致。你现在手机、电脑上显示的准确时间,绝大多数情况下都是 NTP 校时的结果。

一、NTP 的基本工作原理

NTP 客户端向时间服务器发送一个带有发送时刻戳的数据包,服务器收到后记录接收时刻,再回包时附加自己的发送时刻,客户端收到后记录到达时刻。通过这四个时刻戳,客户端可以计算出数据包在网络上的往返延迟,并据此推算客户端与服务器之间的时钟偏差,然后对本地时钟进行渐进式调整。

之所以要计算往返延迟,是因为网络传输本身需要时间。NTP 假设去程与回程延迟大致对称,用往返时间的一半估算单向延迟,从而把误差降到最低。在公网环境下,NTP 通常可以把误差控制在几十毫秒以内;在局域网中,精度可以达到亚毫秒级。

二、层级(Stratum)是怎么回事

NTP 采用树状的层级结构,用 Stratum(层)表示时间源的距离:

Stratum 0:原子钟、GPS 接收机、无线电授时台等高精度时间源,本身不直接接入网络。
Stratum 1:直接连接 Stratum 0 设备的服务器,是网络上可获得的最高层级时间源。
Stratum 2:向 Stratum 1 服务器校时的服务器,以此类推。
Stratum 15 为最低可用层级,Stratum 16 表示时钟未同步。

层级每往下走一级,精度会略有损失,但可获得性大幅提升。普通用户设备通常连接 Stratum 2 或 Stratum 3 的公共服务器,对日常使用已经完全足够。

三、常见的公共时间服务器

国内外都有大量免费开放的 NTP 服务器,例如中国国家授时中心提供的 ntp.ntsc.ac.cn、阿里云的 ntp.aliyun.com、以及国际上的 pool.ntp.org 项目。操作系统默认的 time.windows.com、time.apple.com 本质上也是大型厂商维护的 NTP 集群。

四、普通用户需要做什么

绝大多数情况下不需要手动干预。Windows 默认每周与 time.windows.com 同步一次,macOS 与主流 Linux 发行版默认启用网络时间同步,手机则同时依赖网络授时与基站、卫星信号。如果发现设备时间长期走偏,通常是主板电池(CMOS 电池)失效,导致关机后时钟无法维持,这时更换电池才是根本解决办法。

五、NTP 与 UTC 的关系

NTP 传输的是 UTC 时间戳,不包含任何时区信息。设备拿到 UTC 之后,再根据自身设置的时区换算出本地时间。这也解释了为什么把手机时区从北京切换到纽约,显示的钟点会变化,但底层时间值并没有改变。想了解时区换算的细节,可以参考本站的 全球时区划分 说明。