admin 管理员组

文章数量: 887021

嵌入式的时间概念: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(t1​−t0​)+(t2​−t3​)​
    • 网络往返延迟 δ = ( t 3 − t 0 ) − ( t 2 − t 1 ) \delta=(t_3-t_0)-(t_2-t_1) δ=(t3​−t0​)−(t2​−t1​)

本文标签: 嵌入式的时间概念GMT UTC CST DST RTC