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

news2024/12/29 10:48:45

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.coloradmin.cn/o/1044119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ERROR in docs.42140ac.js from UglifyJs webpack打包报错

ERROR in docs.42140ac.js from UglifyJs 原因是UglifyJs 针对js压缩 不支持es6语法(或者引入的第三方插件存在es6语法) ERROR in docs.42140ac.js from UglifyJs 使用的 uglifyjs-webpack-plugin 解决方法 降低uglifyjs-webpack-plugin的版本 “ugl…

系统化思考,从初级到高级书单推荐

用思考工具进行系统思考,解决复杂问题,成为某个领域的高手,下面这几本书就是补充你脑海的系统思考的工具,一定要保存。 《简单的逻辑学》 作者:麦克伦尼 一切的系统源自于逻辑,如果你没有逻辑分析的能力&…

[谷粒商城笔记]07、Linux环境-虚拟机网络设置

1.本机cmd,输入命令ipconfig,查看本地ip 192.168.56.1是虚拟机的ip 2.自定义虚拟机ip 修改这个文件下的 这里,把ip换成 192.168.56.‘10’ 引号内数字自定义 3.在本机和虚拟机命令行,互相ping IP 查看是否设置成功

静态NAT,动态NAT,NAPT(实验配置+原理讲解)

目录 静态NAT,动态NAT,NAPT 实验一:静态NAT地址转换 实验二:动态NAT配置 实验三:NAPT配置 静态NAT,动态NAT,NAPT 静态地址转换:只能实现一个私网与一个公网的一对一映射 动态地址转换:创建…

Python 编程基础 | 第一章-预备知识 | 1.5、开发工具

一、开发工具 - VSCode VSCode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、轻量化、启动时间快、颜值高的特质。 1、下载VSCode VSCode下载地址:https://code.visualstudio.com/ 2、安装VSCode 载软件包,一步步安装即可&#x…

CSS笔记——基本语法及相关知识

CSS层叠样式表是用于定义 HTML 或 XML 文档的样式和布局的语言。它可以让开发者更加灵活地控制页面元素的样式和排版,从而提高页面的可读性和用户体验 一、css样式书写顺序和规范 CSS样式的书写顺序和规范是为了让代码更易读、易维护和易扩展。下面是一些常见的规…

嵌入式Linux应用开发-Makefile 的使用

嵌入式Linux应用开发-Makefile 的使用 第三章 Makefile 的使用3.1 配套视频内容大纲3.1.1 Makefile 规则与示例3.1.2 通用 Makefile 的使用3.1.3 通用 Makefile 的解析 3.2 Makefile 规则3.3 Makefile 文件里的赋值方法3.4.1 字符串替换和分析函数3.4.2 文件名函数3.4.3 其他函…

NeRF中的位置编码

朴素NeRF中直接采用频率变换来做位置编码,为的是避免空间相邻采样点在MLP表示中的过平滑问题。比如位置(237, 332, 198)和位置(237,332,199)这两个点作为MLP的输入,MLP可能对个位不够敏感,导致输出过平滑的问题。例如: 由于缺乏位…

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…

特种设备安全监测终端,降低安全隐患风险!

特种设备运行关系到人民生命财产安全,关系到经济健康发展,关系到社会的稳定。有关特种设备的事故基本都发生在使用过程中,因此,使用过程的安全管理是特种设备的管理重点。针对国内特种设备本身存在事故隐患及安装、维修、操作、指…

基于微信小程序的快递配送管理平台系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

亚马逊投资Anthropic; OpenAI将推出新版ChatGPT

🦉 AI新闻 🚀 亚马逊投资Anthropic获得可靠AI基础模型开发合作 摘要:亚马逊投资Anthropic至多40亿美元,将共同开发可靠高性能的基础模型,并能提前使用Anthropic技术。Anthropic将主要依赖亚马逊的云服务来训练未来的…

cJSON.c 在mfc中编译失败报 lnk2005错误

问题一、在MFC工程中导入cJson.c 编译时报以下错误: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1853 “x64\Release\xxx.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C 而在 C 中使用它(或相反) xxx …

机器学习与数据挖掘第三、四周

为什么第二周没有呢……因为刚换老师,自学要适应一段时间。 本课程作者之后的学习目标是:实操代码,至少要将作者参加数学建模中用到的数据处理方法都做一遍。 首先,作者复习一下李宏毅老师的两节课程。 机器学习概述 机器学习就…

前言技术 VScode + 其他插件-1

一、VScode 提升编程效率,免费 IDE(Integrated Development Environment,集成开发环境)是含代码编辑器、关键词高亮、智能感应、智能纠错、格式美化、版本管理等功能于一身的 "高级代码编辑器" 每个 IT 工程师都要有自…

【专升本】1. 英语考试介绍

一、考试方式 基础题:80% 难题:20% 二、试卷结构 1. 语音 级别:不重要原因:1分/题 2. 语法与词 级别:基础,一般 原因:1分/题 3. 汇完形填空 级别:比较重要原因:…

PyTorch 深度学习之逻辑斯蒂回归Logistic Regression(五)

Revision-Linear Regression Classfication The MNIST dataset train: 训练集还是测试集 The CIFAR-10 dataset 1. Regression VS Classfication 输出概率 1.1 How to map [0,1] 导数: 正态分布 1.2 Sigmoid functions 2. Logistic Regression model loss function for Bin…

Spring事务this自调用的理解误区?真的会让事务失效吗?

文章目录 前言this调用是什么this调用事务失效案例this调用事务仍然生效案例?总结 如何解决this调用事务失效 前言 我们经常谈到Spring事务失效会有多种场景导致:可参考我另外一篇文章 一文清晰讲解Transactional 注解失效场景 Transactional 应用在非…

代码随想录算法训练营第四十九天 | 动态规划 part 10 | 买卖股票的最佳时机i、ii

目录 121. 买卖股票的最佳时机思路代码 122.买卖股票的最佳时机II思路代码 121. 买卖股票的最佳时机 Leetcode 思路 贪心:记录最低值,并且遍历股票逐个寻找股票卖出最大值 动态规划: dp[i][0] 表示第i天持有股票所得最多现金 dp[i][1] 表示…

uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。