stm32 ntp时间同步

本文详细介绍了NTP(网络时间协议)在计算机系统中的作用,其基于UDP协议,依赖UTC时间进行同步。重点讲解了NTP数据报文的各个字段,包括工作模式、时间戳等内容,并特别关注服务器/客户端模式的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NTP是计算机系统中的时钟同步协议。它属于TCP / IP协议套件的最老部分之一,是基于用户数据报协议(UDP),端口号是123。

对于同步过程,NTP依赖于协调世界时(UTC),该时间是从分层系统中的各个客户端和服务器获得的。

NTP数据报文格式为:

NTP消息的标头字段如下:

LI:
0: 无leap秒调整
1: 一天的最后一分钟为61秒
2: 一天的最后一分钟为59秒
3:时钟未同步

VN:
NTP版本号 (3 bits) (当前版本为4),

Mode:
0:保留
1:对称主动
2:对称被动
3:客户端
4:服务器
5:广播
6:NTP控制消息
7:保留供私人使用

Strat:
0:未指定或无效
1:主服务器
2 – 15:辅助服务器
16:未同步
17 –255:保留

Poll:轮询间隔(8位有符号整数)连续NTP消息之间的最大间隔的2值,以秒为单位。

Precision: 时钟精度(8位有符号整数)。
Root Delay:本地到主参考时钟源的往返时间。

Root Dispersion:系统时钟相对于主参考时钟的最大误差。

Reference Identifier:参考时钟标识符,占用8个bits,用来标识特殊的参考源。

Reference Timestamp:该字段是上次设置或纠正系统时钟的时间,格式为64位时间戳。

Originate Timestamp:该值是请求离开服务器客户端的时间,采用64位时间戳格式。

Receive Timestamp: 该值是客户端请求以64位时间戳格式到达服务器的时间。

Transmit Timestamp:此值是服务器回复离开服务器的时间,采用64位时间戳格式。

NTP的四种工作模式,我们主要讲服务器 / 客户模式(server / client) 这种模式只需要在客户端配置,服务器端除了配置NTP 主时钟外,不需要进行其他专门配置。并且,只能是客户端同步到服务器,服务器不会同步到客户端。

发送内容为

23 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

接收内容为

24 02 03 E9 
00 00 00 84 //root delay 到主参考时钟的往返延迟时间
00 00 05 B0 //root dispersion 本地时钟相对于主参考时钟的最大误差
64 7A 24 C4 //reference identifier 表示特定参考时钟
E9 7E 76 17 96 D6 79 F3  //本地时钟最后一次被设定或者更新时间,0表示未更新
00 00 00 00 00 00 00 00  //NTP报文离开源端时的本地时间
E9 7E 76 59 F9 76 8F 48  //NTP报文到达目的端的本地时间
E9 7E 76 59 F9 77 D0 C7  //目的端应答报文离开服务器的本地时间

wireshark抓包如图:

时间验证,

注意这里时间戳转换,自动转成了北京时间。

参考文献

数据包捕获!网络时间协议(NTP)讲解_ntp数据包-CSDN博客

STM32同步NTP服务器时间_stm32 ntp-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值