NTP协议流程
NTP协议的时钟同步过程如下:
- 客户端A发送NTP消息给服务器B,消息中包含发送时间戳 T1
- 服务器B收到NTP消息后,将接收时间 T2 写入消息中
- 服务器B发送该NTP消息给客户端A,发送时间 T3 写入消息中
- 客户端A收到该NTP消息的时间为 T4
从上面的流程中可以很容易地计算出:
AB之间的网络往返时间RTT(Round Trip Time):δ = (T4 - T1) - (T3 - T2)
AB之间的时间偏移:θ = ( (T2 - T1) + (T3 - T4) ) / 2
推导过程:A从发送请求消息到收到响应的时间间隔是 T4 - T1,其中 T3 - T2 是B的处理时间,所以网络往返时间
δ = (T4 - T1) - (T3 - T2)。
假设A和B的时间偏差为θ,那么 T3 - θ = T3`(θ并不等于T4-T3`, θ代表两边的时间偏差, T4 - T3`代表网络时延)。
T4和T3` 的间隔是半个RTT:T4 - T3` = δ / 2
把T3`和δ代入上面这个等式,得到:θ = ( (T2 - T1) + (T3 - T4) ) / 2。