NTP 协议简介
NTP,Network timestamp protocol,网络时间协议。
NTP client 简单来说,就是以网络上某个节点上的时间为基准,校正本机时间。
NTP server 即提供本机时间戳给 client 校准的服务器。
NTP 协议是基于 UDP 的。
原理
NTP 的实现是 C/S 结构的,client 向 server 发送时间校准请求,server 返回校准后时间。
既然是网络访问,那必然会有网络延时问题,这就必然导致 server 返回的时间戳不准。
如何解决呢?
我们来分别看一下 client 和 server 的时间线:
server -------------------------------------------- ts
t2 t3
t1 t4
client -------------------------------------------- tc
如上图,定义:
- ts 为 server 的时间戳
- tc 为 client 的时间戳
- ts、tc 在 NTP 协商之前互不干扰,设 ts、tc 之间的误差 设为 T
- t1 为 client 向 server 发起 NTP 请求的时间戳,这个时间戳在 tc 上
- t2 为 server 收到 client 的 NTP 请求的时间戳,这个时间戳在 ts 上
- t3 为 server 向 client 发起 NTP 响