NTP协议

参考地址:

http://bjtime.cn/info/view.asp?id=270

https://blog.csdn.net/dosthing/article/details/81588219

https://www.pianshen.com/article/87901514241/

https://www.ietf.org/rfc/rfc5905.txt

一. 什么是NTP

NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。提供NTP对时的服务器有很多,比如微软的NTP对时服务器,利用NTP服务器提供的对时功能,可以使我们的设备时钟系统能够正确运行。

二. NTP工作原理

该图显示了NTP的基本工作原理。设备A和设备B通过网络连接。它们都有各自独立的系统时钟,并且它们需要通过NTP实现其系统时钟的自动同步。为了便于理解,进行以下假设:

1. 设备A向设备B发送NTP消息。消息离开设备A时带有时间戳。时间戳为10:00:00 am(T1)。

2. 当此NTP消息到达设备B时,设备B添加其自己的时间戳。时间戳是11:00:01 am(T2)。

3. 当此NTP消息离开设备B时,设备B添加其自己的时间戳并将时间戳更改为11:00:02(T3)。

4. 设备A收到响应消息后,设备A的本地时间为上午10:00:03(T4)。

5. 此时,设备A具有足够的信息来计算两个重要参数:

(1)NTP数据包的往返延迟为Delay =(T4-T1)-(T3-T2)= 2秒。

(2)设备A和设备B之间的时间差为offset =((T2-T1)+(T3-T4))/ 2 = 1小时。

这样,设备A可以根据该信息设置自己的时钟,并将其与设备B的时钟同步。以上内容只是对NTP工作原理的粗略描述

三. 时间戳和校时算法

struct TimeStamp {

    unsigned int integer;

    unsigned int fraction;

};

前32bits表示1900年以来的秒数。后32bits用以表示秒以下的部份,是微秒数的4294.967296(=2^32/10^6)倍

Originate Timestamp       T1        客户端发送请求的时间 

Receive Timestamp         T2        服务器接收请求的时间 

Transmit Timestamp        T3        服务器答复时间 

Destination Timestamp     T4        客户端接收答复的时间 

计算网络延时 d 和服务器与客户端的时差 t:

d = (T2 - T1) + (T4 - T3); 

t = [(T2 - T1) + (T3 - T4)] / 2;

如果网络延时和服务器运行稳定,理论上可以精确到到2的-32次方秒。实际使用大约只有50ms(广域网)左右,在局域网可达1ms。精度和您选择什么样的一组服务器有关

posted @ 2021-05-19 09:54  人生充满不确定性  阅读(382)  评论(0)    收藏  举报