通信协议 - ntp时间同步

概述

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

注意

小编所有文章均是自己亲手编写验证,由于文件太多,小编就不在公众号后台一一回复列举了,若需要小编的工程代码,请关注公众号,后台回复需要的工程文件小编看到后会第一时间回复。

发展

NTP是由美国Delaware大学David L .Mills教授设计的,是最早用于网络中时钟同步的标准之一。NTP是从时间协议和ICMP时间戳报文演变而来,NTP的版本演进如下所示。

894f76db46c6453fbe144279492efcbf.png

报文

NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文。控制报文仅用于需要网络管理的场合,它对于时钟同步功能来说并不是必需的,这里不做介绍。

0b09bf7608303f501a57c14310403ab8.png

关于各字段说明如下:

d64cb5d3586461ce49e08672bd41227f.png

原理

NTP最典型的授时方式是Client/Server方式。

客户机首先向服务器发送一个NTP 包,其中包含了该包离开客户机的时间戳T0,当服务器接收到该包时,依次填入包到达的时间戳T1、包离开的时间戳T2,然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T3。

ba8f5348e68f915260ff6a4e04f917cd.png

假设Server相对于Client时间偏移位offset,数据在网络中传输时间为delay(这里假设网络上的传输延迟相等,即T0传输到T1=T2传输到T3的时间),则:

1ceedd94f0e42ce7fe299314e9b50adb.png

得到

offset = ((T1-T0)+(T2-T3))/2    

delay = ((T1-T0)+(T3-T2))/2

精度分析

对往返路由延时对称的假设

由于以上公司是在假设NTP请求和回复包在网上传送延时相等,即均为delay的情况下得出的,因而NTP授时精度与NTP服务器与用户间的网络状况有关,主要取决于NTP包往返路由的延时对称程度。

由于往返路由的延时不对称值最大不超过网络延时,从而delay1、delay2的取值范围在(0…delay1+delay2)间,根据式(1),t也可表示为:t=(T1-T0)+delay1=(T1-T0)+(delay1+delay2)/2, 可以得出最大授时误差是±(delay1+delay2)/2。一般广域网的网络延时在10 ms~500ms之间;局域网的网络延时在计时操作系统内核处理延迟的情况下通常小1ms。

为何实际的往返路由时延是不同?这主要是因为那些排队。路由器中有队列,交换机中有队列,甚至终端设备的网络堆栈中也有队列。尽管消息通常在队列中花费最少的时间,但有时它们在等待交换机结束与同一端口上的其他消息的通信,或者等待操作系统完成正在执行的操作,以便获取时间戳。在某些情况下,等待造成的延迟可能非常长,如几十微秒,甚至毫秒。很明显,如果这些都发生在一个方向上的传输,而非另一方向上,将造成很大的延时不对称。

对客户端与服务器间的时钟偏差offset不变的假设

以NTP服务器时钟为标准时间,在某一时刻设置NTP客户机时间为NTP服务器当前时间T0,经过一段时间后,NTP服务器时间为T0+tsn,NTP客户端时间为T0+tcn。

因为存在时钟频率偏差,tsn与tcn并不相等。NTP客户端时间tcn需乘以时钟频率偏差系数k才等于tsn,即tsn=k×tcn,所以k=tsn/tcn。

任何晶振实际工作频率都是不稳定的,只是程度不同,晶振实际频率是受外界多种因素(温度、电压、老化等)影响而改变的。因此,时钟频率偏差系数k并非恒定不变的。每隔一定时间,NTP客户机要对时钟频率偏差系数k进行校正,才能保证计时精度。

往期 · 推荐

实时系统vxWorks - 任务(重要)

实时系统vxWorks - 加载应用程序的方法

实时系统vxWorks - 在线调试

实时系统vxWorks - 虚拟机环境搭建

实时系统vxWorks - zynq7020移植vxWorks

 关注

更多精彩内容,请关注微信公众号:不只会拍照的程序猿,本人致力分享linux、设计模式、C语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要获得更多内容教程请关注公众号:不只会拍照的程序猿。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不只会拍照的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值