当前位置:网站首页>GMT,UTC,CST,DST,RTC,NTP,SNTP,NITZ: 嵌入式的时间
GMT,UTC,CST,DST,RTC,NTP,SNTP,NITZ: 嵌入式的时间
2022-08-10 21:25:00 【子氚】
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报文格式
- LI 闰秒标识器,占用2个bit
- VN 版本号,占用3个bits,表示NTP的版本号,现在为3
- Mode 模式,占用3个bits,表示模式
- stratum(层),占用8个bits
- Poll 测试间隔,占用8个bits,表示连续信息之间的最大间隔
- Precision 精度,占用8个bits,,表示本地时钟精度
- Root Delay根时延,占用8个bits,表示在主参考源之间往返的总共时延
- Root Dispersion根离散,占用8个bits,表示在主参考源有关的名义错误
- Reference Identifier参考时钟标识符,占用8个bits,用来标识特殊的参考源
- 参考时间戳,64bits时间戳,本地时钟被修改的最新时间。
- 原始时间戳,客户端发送的时间,64bits。
- 接受时间戳,服务端接受到的时间,64bits。
- 传送时间戳,服务端送出应答的时间,64bits。
- 认证符(可选项)
交互过程
客户端在 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)
边栏推荐
- DDL:CREATE 创建数据库——《mysql 从入门到内卷再到入土》
- shell编程之正则表达式与文本处理器
- 华为路由器旁挂引流实验(使用流策略)
- 【PCBA方案设计】蓝牙跳绳方案
- shell (text printing tool awk)
- D. Game With Array
- 财务年报怎样翻译,为什么要选择专业翻译公司?
- shell编程之免交互
- Kubernetes Notes / Getting Started / Production Environment / Installing Kubernetes with Deployment Tools / Starting a Cluster with kubeadm / Creating a Cluster with kubeadm
- xshell (sed 命令)
猜你喜欢
Play RT-THREAD of doxygen
The use of TortoiseSVN little turtle
【PCBA scheme design】Bluetooth skipping scheme
LeetCode-36-二叉搜索树与双向链表
LeetCode-402 - Remove K digits
财务年报怎样翻译,为什么要选择专业翻译公司?
LeetCode-402-移掉K位数字
什么是Jmeter?Jmeter使用的原理步骤是什么?
服务——DNS正向反向域名解析服务
Black cats take you learn Makefile article 13: a Makefile collection compile problem
随机推荐
一篇文章教你Pytest快速入门和基础讲解,一定要看
INSERT:插入操作语法&使用例——《mysql 从入门到内卷再到入土》
shell编程之免交互
TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》
2022.8.9 Mock Competition
Huawei router clock near the drainage experiment (using stream strategy)
【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示
How to translate financial annual report, why choose a professional translation company?
Regular expression of shell programming and text processor
黑猫带你学Makefile第12篇:常见Makefile问题汇总
LeetCode每日一题(1573. Number of Ways to Split a String)
labelme - block drag and drop events
shell programming without interaction
找的笔试题的复盘(一)
D. Game With Array
为什么一般公司面试结束后会说「回去等消息」,而不是直接告诉面试者结果?
apr_thread使用内存之谜
Likou 215 questions, the Kth largest element in an array
LeetCode-402-移掉K位数字
C. Even Picture