通信协议 - ntp时间同步

article/2025/10/6 18:02:26

概述

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语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要获得更多内容教程请关注公众号:不只会拍照的程序猿。


http://chatgpt.dhexx.cn/article/cx1jHqyS.shtml

相关文章

NTP协议原理

什么是NTP协议 当第一次听到NTP时,完全不知道是什么概念,只好问度娘。度娘搜到的答案如下: 看了度娘的解释后,才大概明白该协议是进行网络对时的协议,比如当自己的电脑时间不对,可以从另外一台电脑病基于…

网络时间协议NTP

网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议。NTP用于在一系列分布式时间服务器与客户端之间同步时钟。 随着网络拓扑的日益复杂,整个网络内设备的时钟同步将变得十分重要。如果依靠管理员手工修改系统时钟&a…

NTP网络时间协议

转自https://www.sohu.com/a/206862105_130560 SNPT 秒级时间精度 NTP授时精度与NTP服务器与用户间的网络状况有关:广域网授时精度通常能达50ms级,但有时超过500ms;局域网授时不存在路由器路径延迟问题,因而授时精度理论上可以提…

NTP协议解析

NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。 使用NTP的目的是对网络内所有具有时钟的…

NTP协议详解

前言 NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。提供NTP对时的服务器有很多,比如微软的NTP对时服务…

NTP 协议

NTP: Network Time Protocal 一、定义:为实现高精确度的时间同步,而设计的网络时钟同步协议。在Linux系统中,它的最新实现是NTP 4.0(一个分布式的网络时钟同步程序)。相关定义和实现参看RFC1305和www.ntp.org。NTP协议…

NTP(Network Time Protocol)协议详解

一、NTP的基本概念: NTP(Network Time Protocol)------网络时间协议-----应用层协议,用来在分布式时间服务器和客户端之间进行时间同步。 二、采用NTP的目的: 是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟…

Windows10 debug安装、下载

目录 背景下载安装和使用 背景 由于Windows 10不支持debug命令,如果装虚拟机Windows XP就比较耗内存,所以我用的是DOSBox,然后挂载debug程序文件目录。 下载 DOSBox、debug、masm等等,我已经整理好了,下载地址&…

【WINDOWS系统】WinDbg调试工具

一、Windows 10 调试工具 (WinDbg)的安装 1、下载地址https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools#small-classic-windbg-preview-logo-debugging-tools-for-windows-10-windbg 2、安装 记录WinDbg安装目录,待会…

windbg 调试崩溃

前言 windbg 是非常强大的调试工具,但是在使用windbg 进修调试时候,很多的命令不知道如何使用。文章简单介绍如何使用windbg进行调试 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools 一、Windows 调试入…

windbg 调试学习

符号服务器地址 微软的公共符号服务器地址:Symbol information 五种符号加载状态 1. deferred: 延迟加载,现在还不需要使用这个模块的符号,将在后面需要的时候加载 2. no symbols: 没有找到相应的符号文件 3. export: 没有找到symbols,但…

Windbg调试(使用方法)

一、Windbg版本信息 Windbg分32位和64位版本,32位程序应使用32位Windbg调试,64位程序应64位Windbg调试。 若想使用64位的Windbg分析32位的程序, 使用如下命令进行CPU模式的切换: .load wow64exts;!sw//例如: 1.查看线程停在哪里…

Windebug

1、 安装drwtsn32(Dr.Watson win7没有了) 用户可以通过drwtsn32命令,查看dmp文件会被保存在何处。 2、 安装windbg,Windbg下载地址: http://www.microsoft.com/whdc/devtools/debugging/default.mspx 3、 设置windbg A、符号表路径…

windbg调试分析dump工具,使用windbg分析Qt崩溃原因

目录 windbg下载和安装windbg调试exe可执行文件windbg分析dump文件 在非开发环境,windbg工具可以对.exe可执行文件进行调试,也可以分析dump文件,是release版本运行模式解决bug的神器。 windbg下载和安装 一般在安装windows系统软件时会安装w…

02-windows调试工具(DebugDiag使用)

工具下载地址:https://www.microsoft.com/en-us/download/details.aspx?id49924csdn的下载地址:https://download.csdn.net/download/qq_37103755/87089384DebugDiag的简介: DebugDiag 工具主要用于帮助解决如挂起、 速度慢、 内存泄漏或内存…

如何使用Debugging Tools for Windows (windebug)简单的使用心得

1.安装debug工具 ​ 下载页面地址:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 选择合适的版本安装 ​ 2.安装Symbols(特征库) 建议可以多安装以免出现分析不出来的情况 ​ 下载地址:http://www.mi…

WinDebug快速使用及调试注意事项

参考文献: http://www.cnblogs.com/killmyday/archive/2010/03/14/1685331.html WinDbg是微软发布的一款强大的源码级调试工具,支持用户态和内核态两种模式的调试,支持Dump文件分析、内存泄露诊断、同时支持跨机器远程附加进程调试。在具体…

Windows下调试工具Windbg入门

前言 Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg是一个强有力的利器。 一、下载 微软官网提供的Windbg为windows10版本&#xff…

这可能是最详细的 Windows Debug 详解 了

Debug概览 Debug是什么? debug是Windows 16位或者32位机器上的一款调试工具。也就是说,在WindowsXP及以前的机器上都有debug,直接WinX debug就可以调出;在之后的32位机也有;但是在之后的64位机器上不存在&#xff0c…

Debugging Tools for Windows (WinDbg)的使用

安装 可能大家安装时,直接从外部的网址下载或者拷贝,一般这也是可行的,只不过可能安装的不是最新版本,或者找不到和自己当前系统匹配的版本,所以最简单的方法还是去微软的官网下载 下载地址: Download Debugging tool…