sntp协议简介
SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度(几十毫秒)。SNTP是NTP协议的简化版,两者分别在RFC1305和RFC2030介绍。
SNTP工作方式
SNTP采用客户端/服务器的工作方式,可以采用单播或者广播的模式。
单播即客户端定期直接与SNTP服务器交互获取时间差进行校时。
广播则是SNTP服务器定期向指定的多播地址发送时间信息,SNTP客户端通过监听这些多播地址来获取时间信息进行同步。UNIX网络编程中有SNTP广播方式的部分实现代码。
SNTP校时原理
SNTP协议主要是通过记录客户端向服务器发送数据包时的时间戳t1,服务器端接收到该数据包时的时间戳t2,服务器向客户端回应时的时间戳t3和最后客户端接收到服务器回应时的时间戳t4来计算客户端时间和服务器端时间的偏差,从而进行校时操作,如下图所示。
则t1与t2之间的时间差为((T2-T1)+ (T3-T4))/2
数据包在网络上的传播时间是 (T2-T1) + (T4-T3)
知识点
1、NTP时间戳从1900年开始记秒数,而UNIX时间戳从1970年开始记秒数,即记录到NTP结构体中的时间要加上JAN_1970(1900到1970共70年的秒数),而从起获取出来需减掉JAN_1970
2、
- /* Offset between struct timeval.tv_sec anda tai64_t */
- #define NTPLEAPS_OFFSET (4611686018427387914ULL)
- /* Hide this ugly value from programmes */
- #define SEC_TO_TAI64(s) (NTPLEAPS_OFFSET + (u_int64_t)(s))
- #define TAI64_TO_SEC(t) ((t) - NTPLEAPS_OFFSET)
对于这部分我还没搞清楚,如有明白的麻烦跟我讲解下,如NTPLEAPS_OFFSET是怎么来的?
为啥要做这样的转换?
校时操作
获取时间差后就是进行本地校时操作。Linux系统分系统时间和RTC时间,如果只修改了系统时间,那么设备重启后并不时校时后正常运行的时间。如果修改了RTC时间,则重启后是校时后正常运行的时间。这两者的区别如下所述。
RTC(Real Time Clock)时间有一套独立的计时系统,是设备上由电池供电的硬件时钟。和设备状态无关,即使设备关机,RTC时间仍然在运行,是设备的标准时间,无夏令时和冬令时的区分,只有设置时间的时候才能修改,为UTC时间。
系统时间(System Clock),即设备当前时间,使用操作系统自带的晶振进行计时,在设备关机的时候将会清空,设备重启时会获取设备RTC时间来重新设置系统时间,之后独立于RTC时间运行。有夏令时,在没有开启夏令时的情况下,和设备RTC时间基本同步。
设备存在系统时间和RTC时间好处如只想临时修改下当前时间,则只需要修改下系统时间即可,过后想修改回原有时间,则只需同步下RTC时间便可。
sntp协议简介的更多相关文章
- Fiddler--一、HTTP协议简介
在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- JavaWeb:Web与HTTP协议简介
JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...
- OAUTH协议简介
OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...
- GRE 协议简介
1. 协议简介 gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...
随机推荐
- Bootstrap3组件--1
目录 1. Glyphicons字体图标 2.下拉菜单 3.按钮组 4. 输入框组 5.导航 6. 导航条 7. 路径导航 1. Glyphicons字体图标 出于性能的考虑,所有图标都需要一个基类 ...
- inline-block和同级的text-align问题
https://www.cnblogs.com/qjqcs/p/5551640.html margin:0 auto:是设置块标签在父级中居中对齐,是一种对齐方式.所以对于display:inline ...
- VCFtools
The C++ executable module examples This page provides usage examples for the executable module. Exte ...
- mysql中两表更新时产生的奇葩问题,产生死锁!
如下一个两表更新语句 UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3 ...
- 【转载】树链剖分.By.Xminh
轻重链剖分 其实就是俗称的树链剖分. PS:树链剖分不止有轻重链剖分.但是大多数时候的树链剖分指的就是轻重链剖分. dfs序 给树的节点重新编号,使得任意一个节点满足子树的dfs序都比它要大,而且它子 ...
- 【bzoj5055】膜法师(离散化+树状数组)
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=5055 这道题……不得不说,从标题到题面都能看出一股浓浓的膜法气息……苟…… 题意就是统计顺序 ...
- java 监控命令
jps 查找java所有进程及对应pid -v 列出启动参数 有些默认的参数,使用-v是看不到的,需要执行如下: jcmd pid VM.flags jstack pid 查看该进程的堆栈信息 找到进 ...
- mongodb 的安装(Centor OS )
1.下载地址 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz 2.解压.配置 tar zxvf mongodb ...
- Spring插件的安装与卸载---笔记
Spring插件的安装 1.在eclipse中选择工具菜单Help--->Install New Software选项 2.点击Add, 3.选择插件地址或输入网址,点击 OK . http ...
- Codeforces Round #395 (Div. 2) C
题意 : 给出一颗树 每个点都有一个颜色 选一个点作为根节点 使它的子树各自纯色 我想到了缩点后check直径 当<=3的时候可能有解 12必定有解 3的时候需要check直径中点的组成点里是否 ...