正点原子lwIP学习笔记——NTP实时时间实验

news/2024/5/18 13:16:55 标签: 学习, 笔记, udp, stm32, 网络协议

1. NTP简介

NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网
络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能

NTP 服务器(Network Time Protocol(NTP))是用来使计算机时间同步化的一种协议,它
可以使计算机对其服务器或时钟源(如石英钟,GPS 等等)做同步化,它可以提供高精准度
的时间校正(LAN 上与标准间差小于1 毫秒,WAN 上几十毫秒)
,且可介由加密确认的方式来防止恶毒的协议攻击。时间按NTP 服务器的等级传播。按照离外部UTC源的远近把所有服
务器归入不同的Stratum(层)中。

NTP的数据报文格式如下图所示:
NTP数据报文
NTP 数据报文格式的各个字段的作用,如下表所示:

字节段描述
LI:2 比特11 为告警状态,表示时钟未被同步
VN:3 比特表示 NTP 的版本号
Mode:3 比特0 为未定义、1 为主动对等体模式、2 为被动对等体模式、3 为客户模式、4 为服务器模式、5 为广播模式或组播模式
Strat:8 比特表示系统时钟的层数,取值范围为1~16
Poll:8 比特表示轮询时间,即两个连续 NTP 报文之间的时间间隔
Prec:8 比特表示系统时钟的精度
Root Delay:32 比特表示本地到主参考时钟源的往返时间
Root Dispersion 32 比特表示系统时钟相对于主参考时钟的最大误差
Reference Identifier 32 比特表示参考时钟源的标识
Reference Timestamp64 比特表示系统时钟最后一次被设定或更新的时间
Originate Timestamp 64 比特表示 NTP 请求报文离开发送端时发送端的本地时间
Receive Timestamp 64 比特表示 NTP 请求报文到达接收端时接收端的本地时间
Transmit Timestamp 64 比特表示应答报文离开应答者时应答者的本地时间
Authenticator 96 比特表示验证信息我们怎么获取阿里云NTP 实时时间数据

当然这其中不是所有的报文都需要用到,我们要做的就是根据项目的需要来构建 NTP 请求报文,并完成报文的数据内容解析,完成实时时间校对。

使用网络调试助手以 UDP 协议连接阿里云 NTP 服务器,接着在发送框上填入 NTP 请求报文,发送完成之后网络调试助手接收到一段数据,然后解析进行实时时间的校准。

需要的步骤如下:

  1. 以UDP 协议连接阿里云NTP 服务器;
  2. 发送NTP 报文到阿里云NTP 服务器;
  3. 获取阿里云NTP 服务器返回的数据,取第40 位到43 位的十六进制数值;
  4. 把40 位到43 位的十六进制数值转成十进制;
  5. 把十进制数值减去1900-1970 的时间差(2208988800 秒);
  6. 数值转成年月日时分秒。(可通过在线
    转换器时间转换链接上计算当前时间)

2. NTP实验

例程功能:
使用UDP 协议连接阿里云的NTP 服务器,并周期发送NTP 请求报文,发送完成之后对阿里云NTP 服务器返回的数据进行解析,把它转换成实时时间信息。

通过lwip_ntp_client_init构建NTP的报文,需要配置的就是version和mode都为3,然后转换成16进制;

lwip_get_seconds_from_ntp_server就是在连接服务器之后,获取40-43位的16进制数,并减去1900-1970的时间差后,调用lwip_calc_date_time把秒数换算成年月日;

lwip_demo中,就是netconn方式实现UDP连接。

总结

NTP就是通过开发板作为Client,然后去连接云服务器,获取NTP报文后取出40-43位的16进制数,然后进行年月日的转换,来完成时间校准。


http://www.niftyadmin.cn/n/5053216.html

相关文章

Mac电脑剪切键Command-X键失灵

在Mac上,Command-X键的剪切功能失效可能是由于键盘快捷键设置出现错误或者剪切的目标文件处于只读状态。 可以尝试以下方法进行解决: 1.检查键盘快捷键设置:转到Apple菜单 > 系统偏好设置 > 辅助功能 > 键盘 > 快捷键&#xff0c…

线性代数+分治:446E

https://codeforces.com/problemset/problem/446/E 把官方题解翻译了一遍 考虑暴力,肯定想到dp,然后变成矩阵。设用代替 (这样子数之间的差值不会变化,但对于问题的处理能方便很多) 我们先令(也就是初始…

Apache DolphinScheduler 在奇富科技的首个调度异地部署实践

奇富科技(原360数科)是人工智能驱动的信贷科技服务平台,致力于凭借智能服务、AI研究及应用、安全科技,赋能金融机构提质增效,助推普惠金融高质量发展,让更多人享受到安全便捷的金融科技服务。作为国内领先的…

四川玖璨公司抖音收费多少?

首先,从公司背景来看,四川玖璨电子商务有限公司是一家专注于电子商务领域的公司,经验丰富且有一支优秀的团队。作为一家专业的抖音培训公司,他们推出的抖音培训项目肯定是建立在自己经验与实践的基础上,并且对市场的变…

笔记本电脑查询连接wifi密码

笔记本电脑查询连接wifi密码 1、背景2、环境3、实操3.1、已连接wifi查看密码3.2、之前连接过的wifi密码查看 1、背景 在日常使用过程中遇到两个使用场景。网络管理员跳过一下步骤,针对wifi使用人员。 1、刚到一个新环境中需要连接wifi的场景 2、在一个场所连接过一…

MySQL常见数据类型、特点以及使用场景

以下是一些常见的MySQL数据类型及其特点,包括数据类型的占用字节数、最大存储值和适用场景: 1. 整数类型: TINYINT:1字节,范围从-128到127(有符号),0到255(无符号&…

【随笔记】我的1024创作纪念日

一、机缘 还记得 2020 年 12 月 06 日,我为记录一段刚实践的经验,撰写了第一篇技术博客:【数学建模】层次分析法(AHP)Matlab实现。 在那一刻,我已在创作这趟旅程中出发。今天,距离我第 1 次创作已经过去了 1024 天&a…

docker系列文章说明

docker系列专栏笔记总算完成了,平时下班比较晚,利用晚上的一些时间整理了这一系列的学习笔记。 docker系列教程包含以下几个方面: docker环境篇 介绍docker环境的搭建,已经管理平台工具(portainer)的简单使用。 docker常用命令篇…