NTP协议格式解析

news2024/11/16 22:32:41

1. NTP时间戳格式

SNTP使用在RFC 1305 及其以前的版本所描述标准NTP时间戳的格式。与因特网标准标准一致, NTP 数据被指定为整数或定点小数,位以big-endian风格从左边0位或者高位计数。除非不这样指定,全部数量都将设成unsigned的类型,并且可能用一个在bit0前的隐含0填充全部字段宽度。
因为SNTP时间戳是重要的数据和用来描述协议主要产品的,一个专门的时间戳格式已经建立。 NTP用时间戳表示为一64 bits unsigned 定点数,以秒的形式从1900 年1月1 日的0:0:0算起。整数部分在前32位里,后32bits(seconds Fraction)用以表示秒以下的部分。在Seconds Fraction 部分,无意义的低位应该设置为0。这种格式把方便的多精度算法和变换用于UDP/TIME 的表示(单位:秒),但使得转化为ICMP的时间戳消息表示法(单位:毫秒)的过程变得复杂了。它代表的精度是大约是200 picoseconds,这应该足以满足最高的要求了。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| Seconds |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| Seconds Fraction (0-padded) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

2. NTP 报文格式

NTP 和SNTP 是用户数据报协议( UDP) 的客户端 [POS80 ],而UDP自己是网际协议( IP) [DAR81 ] 的客户端. IP 和UDP 报头的结构在被引用的指定资料里描述,这里就不更进一步描述了。UDP的端口是123,UDP头中的源断口和目的断口都是一样的,保留的UDP头如规范中所述。
以下是SNTP 报文格式的描述,它紧跟在IP 和UDP 报头之后。SNTP的消息格式与RFC-1305中所描述的NTP格式是一致的,不同的地方是:

一些SNTP的数据域已被风装,也就是说已初始化为一些预定的值。NTP 消息的格式被显示如下。
在这里插入图片描述
如下一部分描述,在SNTP 里大多数这些字段被预规定的数据给赋初值。为完整起见,每个字段的功能在下面被简要总结。

  1. LI 闰秒标识器:这是一个二位码,预报当天最近的分钟里要被插入或删除的闰秒秒数。用1/0表示,分别说明如下:
    LI Value 含 义
    00 0 无预告
    01 1 最近一分钟有61秒
    10 2 最近一分钟有59秒
    11 3 警告状态(时钟未同步)

  2.  VN 版本号:这是一个三bits的整数,表示NTP的版本号,现在为4
    
  3. Mode 模式:这是一个三bits的整数,表示模式,定义如下:
    在这里插入图片描述
    在点对点模式下,客户端机在请求中设置此字段为3,服务器在回答时设置此字段为4;在广播模式下,服务器在回答时设置此字段为5。

  4. stratum(层):这是一个8bits的整数(无符号),表示本地时钟的层次水平,数值定义如下:
    在这里插入图片描述
    5. Poll 测试间隔:八位signed integer,表示连续信息之间的最大间隔,精确到秒的平 方及。本字段的值从4(16s)到14(16284s);然而,大多数应用使用6(64s)到10(1024s)。
    6.Precision 精度:八位signed integer,表示本地时钟精度,精确到秒的平方级。值从 -6(主平)到-20(微妙级时钟)。

  5. Root Delay根时延:32位带符号定点小数,表示在主参考源之间往返的总共时延,以小数位后15~16bits。数值根据相关的时间与频率可正可负,从负的几毫秒到正的几百毫秒。
    8 Root Dispersion根离散:32位带符号定点小数,表示在主参考源有关的名义错误,以小数位后1516bits。范围:0几百毫秒。

  6. Reference Identifier参考时钟标识符:32bits,用来标识特殊的参考源。在stratum 0(未指定)或stratum 1(基本参考)的情况下,该字段以四个八位字节,左对齐,零填充的string表示。当没有NTP枚举时,使用下列ASCII标识符:
    在这里插入图片描述

3. SNTP 客户端操作

SNTP客户端与NTP/SNTP 服务器通信的模式是一个非持久状态的远程过程调用。在单播方式,客户端发给服务器(方式3) 请求并且期望服务器答复 (方式4)。 在广播方式,客户端送并不请求只是等待一台或更多的服务器的广播消息(方式5) ,这取决于设置。 根据客户端和服务器设置,单播客户端和广播服务器通常在从64 给1024 s 的间隔里发送消息。
单播客户端初始化SNTP 报文首部,再把消息发送到服务器,然后从服务器回复的报文中剥去时间包。为此,上面提到的所有报文首部字段,除第一个八位字节外都设置成0。 在这个八位字节里Li 字段设置为0( 没有警告) 和方式字段设置为3(客户端)。VN 字段必须同NTP 或者SNTP 服务器的软件版本一致;但是,NTP 版本3( RFC 1305)的服务器也将接受第2( RFC 1119) 版本的消息以及版本1( RFC 1059)的消息,而NTP 版本2服务器也将接受NTP 为版本1的消息。版本0 ( RFC 959) 消息不再被支持。因为今天因特网已有了NTP 服务器操作的3个版本,推荐VN 字段设置1。
在单播及广播方式下,单播服务器回答及广播以上所述的所有字段;但是,在SNTP下,各字段中,只有传送时间戳在非零情况下才有明确的意思.这个字段的整数部分包含服务器此刻的时间,其格式与UDP/TIME 协议相同[POS83].这个字段的fraction部分通常是有效的, SNTP的精确度证明可以精确到秒。如果传送用时间戳字段是全0,则该消息将被忽略。
在单播方式下,一种简单的计算可以用来计算与服务器有关的往返传播延迟d及本地时钟补偿t,通常对在数十毫秒内。为此,客户端在请求包中将本地时钟时间按NTP的格式写入源时间戳。当收到答复时,客户端将目的时间戳作为到达时间,并根据它的本地时钟,将其转变成NTP格式。下述表格总结4个时间戳。

用时间戳名字 ID 产生
原始时间戳 T1 时间请求由客户端送
收到时间戳 T2 时间请求在服务器收到
传送时间戳 T3 时间答复通过服务器送
目的地时间戳 T4 时间答复在客户端收到
往返传播延迟d和本地时钟补偿t定义为:
D =( T4 - T1) - ( T2 - T3)
T =(( T2 - T1) +( T3 - T4)) /2。
下述表格是SNTP客户端操作的总结。在表格里显示有两种推荐的错误检查方式。在全部NTP 版本里,如果Li 字段为3;或者阶层字段不在第1-15范围里;或者传送用时间戳是0,服务器决不同步或者不予同步成过去24小时内有效的时间源。在客户端的判断中,保留字段值也可能被检查。 是否相信传送用时间戳取决于对这些字段中的一个或多个字段的有效性判断。
字段名 请求 回答
Li 0 闰秒指示器; 如果是3 (非同步),则放弃该消息
VN 1( 参见正文) 忽略
方式 3( 客户端) 忽略
阶层 0 忽略
轮询 0 忽略
精度 0 忽略
根延迟 0 忽略
根差量 0 忽略
参考标识符 0 忽略
参考时间戳 0 忽略
原始用时间戳 0 忽略( 参见正文)
收到用时间戳 0 忽略( 参见正文)
传送的时间戳 0 时间; 如果是0(非同步),则忽略该消息
Authenticator. (不使用) 忽略

4. SNTP 服务器操作

在单播方式和广播方式下保留的字段被同样地设置。假定服务器是被同步成一台无线电时钟或者其它正确的主要参考源,则阶层字段设置为1(主要服务器),Li 字段设置为0;如果不是,阶层字段设置0,Li 字段设置3。精度字段的设置反映出本地时钟的最大的读数误差。对所有的实际情况来说,在NTP格式里被计算的值是小数点右边的有效数值,值被表示成负数时间戳形式。为了主服务器,根延迟和根差量字段可以设置成0,根差量字段能设置成任意数值(表示时钟的最大的期望误差值)。参考标识符设置指明主要参考源,如在上面在表格里说明的。
这些时间戳字段被设置如下。如果服务器未被同步或是首先启动的话,全部时间戳字段设置成零。如果同步,参考用时间戳设置成最后更新时间(来源于无线电时钟)或者设置成消息被送出的时间(如果更新时间不可以获得)。接收时间戳和传送时间戳字段设置成当时消息发出的时间。在单播方式下,原始时间戳字段直接从请求包的传送时间戳拷贝过来。因为客户端要用它来检查应答,所以复制完整很重要。用广播方式下,这个字段被设置成消息被送出的时间。下面的表格总结这些操作。
字段名 请求 回答
Li 忽略 0(正常), 3(非同步)
VN 1, 2 或者3 3 或者从请求包中拷贝
方式 3(参见正文) 2,4 或者5(参见正文)
阶层 忽略 服务器阶层
投票 忽略 拷贝请求包
精度 忽略 服务器精度
根延迟 忽略 0
根差量 忽略 0(参见正文)
参考标识符 忽略 来源标识符
参考时间戳 忽略 0 或者当前的时间
创造时间戳 忽略 0 或者当前的时间或者从传送时间戳请求复制
收到时间戳 忽略 0 或者当前的时间
传送时间戳 (参见正文) 0 或者当前的时间
Authenticator 忽略 (不使用)
当例如可能发生在刚启动或在运行期间主要参考源不起作用时,有一些多数客户端允许的无效时间戳的范围。 一台运行不正常的服务器的最重要的标志是Li 字段,其中3 的值表明一种非同步的状态。当这值被出现时,客户端应该丢掉该条服务器消息,而不管其它字段的内容。

5. 客户端报文:

在这里插入图片描述
6.服务端报文
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1900860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

收银系统源码-收银台副屏广告

1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…

笔记15:while语句编程练习

练习一&#xff1a; 编写程序&#xff0c;求 2^24^26^2...n^2? -直到累加和大于或等于 10000 为止&#xff0c;输出累加和 -输出累加式中的项数&#xff0c;以及最大的数 n #include<stdio.h> int main() {int sum 0;int i 1;int n 0;while(sum < 10000)//将sum…

CVPR 2024最佳论文分享:通过解释方法比较Transformers和CNNs的决策机制

CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;是计算机视觉领域最有影响力的会议之一&#xff0c;主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期&#xff0c;CVPR 2024 公布了最佳论文。共有10篇论文获奖&#xff0c;其…

基于Maximin的异常检测方法(MATLAB)

异常存在于各个应用领域之中&#xff0c;往往比正常所携带的信息更多也更为重要。例如医疗系统中疾病模式&#xff0c;信用卡消费中的欺诈行为&#xff0c;数据库中数据泄露&#xff0c;大型机器故障&#xff0c;网络入侵行为等。大数据技术体系的快速兴起与发展&#xff0c;加…

奥威BI方案:多行业、多场景,只打高端局

奥威BI方案&#xff0c;确实以其卓越的性能和广泛的应用领域&#xff0c;在高端数据分析市场中占据了一席之地。以下是对奥威BI方案的详细解析。 奥威BI方案是一款针对多行业、多场景的全面数据分析解决方案&#xff0c;它结合了大数据、云计算等先进技术&#xff0c;为企业提…

2024年地理信息技术与应用技能大赛·决赛(2024年地理信息技术与应用能力水平考试·中级)

目录 1 请将所有数据的空间参考统一。&#xff08;2分&#xff09; 1.1 题目要求 1.2 详细解析 2 制作台风轨迹图。&#xff08;10分&#xff09; 2.1 题目要求 2.2 详细解析 3 分析台风影响城市&#xff0c;并将结果以独立专题图的形式展示。&#xff08;13分&#xff…

固态继电器的未来浅析

固态继电器(SSR)已成为传统机电继电器的可靠替代品&#xff0c;具有开关速度更快、使用寿命更长、电磁干扰更少等诸多优势。随着技术的不断进步&#xff0c;SSR的未来有望在设计和应用的各个方面实现更显著的改进和创新。 1.小型化和集成化&#xff1a; 固态继电器开发的主要趋…

django高校教务系统-计算机毕业设计源码81661

目 录 摘要 1 绪论 1.1 研究背景 1.2目的及意义 1.3论文结构与章节安排 2 高校教务系统设计分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

Windows 玩转大模型第一天:大模型本地部署,调用大模型API可直接工程化应用(全部代码和详细部署流程)

Ollama 是一个开源框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。 以下是其主要特点和功能概述&#xff1a; 1. 简化部署&#xff1a;Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程&#xff0c;使得非专业用…

全能PDF工具集 -- PDF Shaper Professional v14.3 特别版

软件简介 PDF Shaper是一款功能强大的PDF工具集&#xff0c;它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观&#xff0c;使得即使是新手用户也能快速上手。它支持广泛的功能&…

Stream练习

运用点&#xff1a; 流内数据类型转换(map)、filter、limit、skip、concat(让两个流合并) 题目&#xff1a; 操作1、2&#xff1a; ArrayList<String> manList new ArrayList<>();ArrayList<String> womanList new ArrayList<>();Collections.addAl…

新产品或敏捷项目过程 SOP,附带流程图及流程规范

一、项目启动 项目背景和目标明确 市场调研结果分析&#xff0c;确定新产品的需求和市场机会。制定明确的项目目标&#xff0c;包括产品特性、上市时间、预期收益等。 组建项目团队 确定项目经理、产品经理、开发人员、测试人员、市场人员等角色。明确各成员的职责和权限。 项目…

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

set_intersection(重要) 求两个有序的序列的交集. 函数声明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1开头InputIterator1 _Last1, //容器2结尾(不包含)Inp…

阿里云OSS文件上传不配置环境变量使用显式AccessKey验证

问题背景 在中阿里云官方文档中介绍文件上传时&#xff0c;推荐配置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。这里用简单的方法&#xff0c;直接在Demo.java中显式指定accessKeyId和accessKeySecret&#xff0c;同时修改OSSClientBuilder()的入参。 解决方法 首先…

秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师

高并发下&#xff0c;如何设计秒杀系统&#xff1f;这是一个高频面试题。 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、shopee、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题…

如何选择TikTok菲律宾直播网络?

为了满足用户对于实时互动的需求&#xff0c;TikTok推出了直播功能&#xff0c;让用户能够与粉丝即时交流。本文将探讨如何选择适合的TikTok菲律宾直播网络&#xff0c;并分析OgLive是否是值得信赖的选择。 TikTok菲律宾直播网络面临的挑战 作为全球领先的短视频平台&#xff…

Redis 中 Set 和 Zset 类型

目录 1.Set类型 1.1 Set集合 1.2 普通命令 1.3 集合操作 1.4 内部编码 1.5 使用场景 2.Zset类型 2.1 Zset有序集合 2.2 普通命令 2.3 集合间操作 2.4 内部编码 2.5 使用场景 1.Set类型 1.1 Set集合 集合类型也是保存多个字符串类型的元素&#xff0c;但是和列表类型不同的是&…

【Android】自定义换肤框架01之皮肤包制作

前言 目前为止&#xff0c;市面上主流的安卓换肤方案&#xff0c;其实原理都是差不多的 虽然大多都号称一行代码集成&#xff0c;但其实想要做到完全适配&#xff0c;并不简单 这个系列&#xff0c;就是让大家从零开始&#xff0c;完全掌握这方面知识&#xff0c;这样才能对…

理解MySQL核心技术:存储过程与函数的强大功能

在大型应用程序和复杂的数据库操作中&#xff0c;存储过程与函数扮演着至关重要的角色。它们不仅可以提高代码的可维护性&#xff0c;还能加强数据库的安全性和性能。本篇文章将深入探讨MySQL存储过程与函数的基础知识、创建、管理及其在实际应用中的优势。 什么是存储过程和函…

数据结构+算法-实现一个计算器

在学习栈的数据结构的时候讲到可以用栈来实现一个计算器的功能&#xff0c;那么这个功能是如何实现的呢&#xff1f; 采用栈模拟得方式来实现一个计算器 要实现如下的功能: 字符串如何转为整数 2.处理加减法 如何处理加减法呢&#xff1f; 5-128 给第一个数字前面放一个号…