• GMT,UTC,CST,DST,RTC,NTP,SNTP,NITZ: 嵌入式的时间


    GMT,UTC,CST,DST,RTC,NTP,SNTP,NITZ: 嵌入式的时间

    ref

    嵌入式开发中,几个时间概念?
    彻底搞懂UTC时间
    NTP协议详解
    使用NTP协议获取网络时间戳(C/C++实现)
    NTP协议详解

    时区

    • GMT:格林尼治标准时间
      • GMT+8 12:00: 东八区北京当地时间12:00
      • 地球在椭圆轨道速度不均, 可能与实际太阳时差16min
    • UTC: 协调世界时, 世界标准时间 ∼ \sim GMT
      • 原子时为基础, 非常准确, ≈GMT
    • CST: 中国标准时, G M T + 8 = U T C + 8 = C S T GMT+8=UTC+8=CST GMT+8=UTC+8=CST
    • DST: 夏令时, 夏季调快一小时, 中国不用

    时钟

    • RTC: 硬件时钟
      • 高精度晶振作时钟源, 外加电池掉电可工作, (片内RTC, 外部RTC)
    • 系统时钟: linux, RTOS中启动时读取硬件时钟RTC, 之后独立运行
    • 网络时钟: 授时服务器SNTP, NTP
      • 网络上指定若干时钟源服务器, 提供授时服务, 服务器间也可相互比较校正

    时间同步

    • NTP: 网络时间协议
      • 基于UDP, 用于网络时间同步的协议, 使网络中的计算机时钟同步到UTC
      • 可以分发, 授时
    • SNTP: 简单网络时间协议
      • 以1900年1月1日0点0分0秒为起点, NTP改编, 子集 (linux起点为1970年1月1日0点0分0秒)
      • 只有授时无分发, 只能获取时间, 简化了全部流程, 只能同步一个时钟源
      • 客户端/服务端工作方式
        • 服务端接收GPS信号/自带原子钟为时间基准
        • 客户端定期访问SNTP服务器得准确时间信息
      • 分辨率到毫秒级, SNTP必须联网
      • 一些SNTP服务器(打开cmd, ping ntp.ntsc.ac.cn 试一下)
        • 国家授时中心 NTP 服务器:ntp.ntsc.ac.cn
        • 阿里云公共 NTP 服务器:time.pool.aliyun.com
        • 腾讯云公共 NTP 服务器:time1.cloud.tencent.com
        • 教育网(高校自建)服务器:ntp.sjtu.edu.cn
    • NITZ: 无线网络向移动设备提供本地日期, 时间, 时区, 夏令时偏移
      • 质量与执行力若, 分辨率低(数分钟), 不用联网

    NTP协议

    • NTP: 网络时间协议, 基于UDP, 用于网络时间同步的协议, 使网络中的计算机时钟同步到UTC

    NTP报文格式

    1. LI 闰秒标识器,占用2个bit
    2. VN 版本号,占用3个bits,表示NTP的版本号,现在为3
    3. Mode 模式,占用3个bits,表示模式
    4. stratum(层),占用8个bits
    5. Poll 测试间隔,占用8个bits,表示连续信息之间的最大间隔
    6. Precision 精度,占用8个bits,,表示本地时钟精度
    7. Root Delay根时延,占用8个bits,表示在主参考源之间往返的总共时延
    8. Root Dispersion根离散,占用8个bits,表示在主参考源有关的名义错误
    9. Reference Identifier参考时钟标识符,占用8个bits,用来标识特殊的参考源
    10. 参考时间戳,64bits时间戳,本地时钟被修改的最新时间。
    11. 原始时间戳,客户端发送的时间,64bits。
    12. 接受时间戳,服务端接受到的时间,64bits。
    13. 传送时间戳,服务端送出应答的时间,64bits。
    14. 认证符(可选项)

    交互过程


    客户端在 t 0 t0 t0 发送一个NTP协议包到服务端, 经一段网络延时传输后, 服务端在 t 1 t1 t1 接收到数据包, 经过一段时间处理后, 在 t 2 t2 t2 向客户端返回数据包, 再经一段网络延时传输, 客户端在 t 3 t3 t3 收到NTP数据包

    • t 0 , t 3 t0, t3 t0,t3相对客户端, t 1 , t 2 t1, t2 t1,t2相对服务端, 有少许区别, 需要修正: t 2 + δ 2 t_2+\frac{\delta}{2} t2+2δ
      • 客户端&服务端时间系统偏移 θ = ( t 1 − t 0 ) + ( t 2 − t 3 ) 2 \theta=\frac{(t_1-t_0)+(t_2-t_3)}{2} θ=2(t1t0)+(t2t3)
      • 网络往返延迟 δ = ( t 3 − t 0 ) − ( t 2 − t 1 ) \delta=(t_3-t_0)-(t_2-t_1) δ=(t3t0)(t2t1)
  • 相关阅读:
    Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]
    代码随想录算法训练营第五十一天| 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
    01-旭日X3派测评——开箱测试&系统烧写&性能初测
    【vscode使用clang-format格式化代码】
    pytest文档81 - 如何管理Captured logging日志
    让物体动起来,Unity的几种移动方式
    深度学习的未来:继续焕发活力还是逐渐落寞?
    科技资讯|Canalys发布全球可穿戴腕带设备报告,智能可穿戴增长将持续
    AIE荧光聚苯乙烯微球/刺激响应性聚合物荧光AIE纳米微球/核壳结构AIE微球的制备
    Docker 安装最新版本 Jenkins
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126269217