协议 NTP UDP 获取实时网络时间

1.使用串口调试工具 协议选择UDP,请求报文是十六进制0x1b开头47个0 总共四十八字节

bash 复制代码
1b 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

返回时间

🔹 1. 报文数据

1C 02 00 E7 00 00 00 52 00 00 02 A1 0A 89 35 59 EC 84 C4 5D 75 64 F8 E4 00 00 00 00 00 00 00 00 EC 84 C4 66 76 E7 57 25 EC 84 C4 66 76 E7 B9 D0

这正好 48 字节 ,标准 NTP 响应包。

我们只关心 Transmit Timestamp(偏移 40--47 字节)。


🔹 2. 定位字段

  • Reference Timestamp (16--23):EC 84 C4 5D 75 64 F8 E4

  • Originate Timestamp (24--31):00 00 00 00 00 00 00 00

  • Receive Timestamp (32--39):EC 84 C4 66 76 E7 57 25

  • Transmit Timestamp (40--47):EC 84 C4 66 76 E7 B9 D0 ✅ 我们要的就是它


🔹 3. 拆解 Transmit Timestamp

EC 84 C4 66 76 E7 B9 D0

  • 秒字段(前 4 字节):EC 84 C4 66 = 0xEC84C466 = 3968124006

  • 小数字段(后 4 字节):76 E7 B9 D0 = 0x76E7B9D0 = 1992276688


🔹 4. 转换为 Unix 时间戳

NTP 时间起点 = 1900-01-01

Unix 时间起点 = 1970-01-01

偏移量 = 2208988800

Unix 秒 = 3968124006 - 2208988800 = 1759135206 秒

换算成毫秒:

毫秒小数 = (1992276688 * 1000) / 4294967296 ≈ 464 ms Unix 毫秒 = 1759135206 * 1000 + 464 = 1759135206464 ms


🔹 5. 时间结果

  • UTC 时间:2025-09-29 08:40:06.464

  • 北京时间 (UTC+8):2025-09-29 16:40:06.464

  • 东京时间 (UTC+9):2025-09-29 17:40:06.464


✅ 这帧报文里的 Transmit Timestamp 对应北京时间:
2025 年 9 月 29 日 16:40:06.464

相关推荐
技术猴小猴2 小时前
如何使用Python实现UDP广播
开发语言·python·udp
歪歪1002 小时前
如何在项目中选择使用HTTP还是WebSocket?
网络·websocket·网络协议·计算机网络·http·网络安全
甄心爱学习2 小时前
计算机网络4
网络
^Moon^2 小时前
websocket网络通信协议
网络·websocket·网络协议
Cloud Traveler2 小时前
告别内网困局:cpolar破解Websocket远程访问难题
网络·websocket·网络协议
MonKingWD2 小时前
面试题-网络协议
网络·网络协议
不是笨小孩i2 小时前
Websocket+cpolar:如何轻松实现服务远程访问?
网络·websocket·网络协议
Mr.Ja3 小时前
【关于虚拟机执行ip addr 命令不显示ip地址问题】
网络协议·tcp/ip·php
雨声不在3 小时前
cronet从编译到修改之: 支持IP直连
python·网络协议·tcp/ip·cronet