sntp协议简介

sntp协议简介SNTP协议主要是通过记录客户端向服务器发送数据包时的时间戳t1,服务器端接收到该数据包时的时间戳t2,服务器向客户端回应时的时间戳t3和最后客户端接收到服务器回应时的时间戳t4来计算客户端时间和服务器端时间的偏差,从而进行校时操作

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度(几十毫秒)。SNTP是NTP协议的简化版,两者分别在RFC1305和RFC2030介绍。

 

SNTP工作方式

SNTP采用客户端/服务器的工作方式,可以采用单播或者广播的模式。

单播即客户端定期直接与SNTP服务器交互获取时间差进行校时。

sntp协议简介

广播则是SNTP服务器定期向指定的多播地址发送时间信息,SNTP客户端通过监听这些多播地址来获取时间信息进行同步。UNIX网络编程中有SNTP广播方式的部分实现代码。

sntp协议简介

SNTP校时原理

SNTP协议主要是通过记录客户端向服务器发送数据包时的时间戳t1,服务器端接收到该数据包时的时间戳t2,服务器向客户端回应时的时间戳t3和最后客户端接收到服务器回应时的时间戳t4来计算客户端时间和服务器端时间的偏差,从而进行校时操作,如下图所示。

sntp协议简介

则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)

Jetbrains全家桶1年46,售后保障稳定

对于这部分我还没搞清楚,如有明白的麻烦跟我讲解下,如NTPLEAPS_OFFSET是怎么来的?

为啥要做这样的转换?

 

校时操作

获取时间差后就是进行本地校时操作。Linux系统分系统时间和RTC时间,如果只修改了系统时间,那么设备重启后并不时校时后正常运行的时间。如果修改了RTC时间,则重启后是校时后正常运行的时间。这两者的区别如下所述。

RTC(Real Time Clock)时间有一套独立的计时系统,是设备上由电池供电的硬件时钟。和设备状态无关,即使设备关机,RTC时间仍然在运行,是设备的标准时间,无夏令时和冬令时的区分,只有设置时间的时候才能修改,为UTC时间。

系统时间(System Clock),即设备当前时间,使用操作系统自带的晶振进行计时,在设备关机的时候将会清空,设备重启时会获取设备RTC时间来重新设置系统时间,之后独立于RTC时间运行。有夏令时,在没有开启夏令时的情况下,和设备RTC时间基本同步。

设备存在系统时间和RTC时间好处如只想临时修改下当前时间,则只需要修改下系统时间即可,过后想修改回原有时间,则只需同步下RTC时间便可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219628.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型

    网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型专业软件工程姓名小何学长实验目的:1. 掌握RJ-45双绞线的直通线和交叉线的制作方法,了解其应用场合。2. 利用测线仪测试网线是否正常。实验原理:1. 双绞线简介双绞线是最常用的网络传输媒体,其型号10BBASE-T、100BASE-T是指10Mbps、100Mbps以基带传输方式工作的双绞线。按信号线外面有无屏蔽保护层分为:屏蔽双绞线——STP,有金属网丝套作为屏蔽层,无分类;无屏蔽双绞线——UTP,没有屏蔽层,有多个分类,如UTP-3,UTP-5,UTP-5+多…

    2022年10月28日
  • visa仪表matlab,通过VISA接口获取安捷伦示波器捕获的波形

    visa仪表matlab,通过VISA接口获取安捷伦示波器捕获的波形CapturingawaveformfromanAgilentoscilloscopeoverastandardVISAinterfaceMATLABisasoftwareenvironmentandprogramminglanguagewithover1,000,000users.MATLABextendsthefunctionalityof…

    2022年10月12日
  • python线程间通信的方式_android 线程间通信

    python线程间通信的方式_android 线程间通信1、python多线程#!/usr/bin/evnpython3#–*–coding:utf-8–*–#该实例反编译来说明函数执行流程importdisdefadd(a):a=a+1returnaprint(dis.dis(add))#Python中一个线程对应于C语言中的一个线程(CPython而言)(Python并不一定…

  • git常用命令大全「建议收藏」

    git常用命令大全「建议收藏」1.强制推送(慎用,除非你认为其他冲突等可以丢弃或者不是很重要)gitpush–force2.创建文件等小命令toucha//创建一个a文件echo1234>>a//把1234这个内容放入a文件cata//打开a文件读取出a文件中的内容mkdirtest//创建test文件夹rm文件名//删除文件pwd//打印…

  • innerHTML和outerHTML区别

    innerHTML和outerHTML区别 1.innerHTML<body> <p>你好</p> <divid="test"><h5>就是喜欢你</h5></div> <scripttype="text/javascript"> varhj=document

  • oracle12官方下载,Oracle 12c下载64位|Oracle Database 12c下载 官方版_最火软件站[通俗易懂]

    oracle12官方下载,Oracle 12c下载64位|Oracle Database 12c下载 官方版_最火软件站[通俗易懂]Oracle12C是由Oracle官方提供的最新版本数据库,Oracle12C引入了CDB与PDB的新特性,在ORACLE12C数据库引入的多租用户环境(MultitenantEnvironment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可…

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号