【网络协议】NTP(Network Time Protocol)协议详解-程序员宅基地

技术标签: 网络  运维  time protocol  # Protocol  服务器  NTP  

一、NTP的基本概念

NTP(Network Time Protocol)是一种用于在分布式网络中的不同设备之间保持精确时间同步的互联网协议。

它允许一台机器与其他机器或权威的时间源建立联系,并根据这些联系来调整自己的时间,以确保整个网络中的所有设备共享一致的时间基准。

NTP通过精确测量时间偏差、补偿网络延迟以及调整本地时钟频率来维持准确性,并提供了多种安全特性来保护时间同步过程不受干扰。
在这里插入图片描述

二、采用NTP的目的

采用NTP(Network Time Protocol)的主要目的是对网络内所有具有时钟的设备完成时间同步。如果没有时间同步,各个设备之间可能存在时间差,这会导致一系列问题,包括但不限于:

  1. 事务一致性问题:在分布式系统中,如果时间不一致,可能会导致并发控制失败、事务完整性破坏等问题。

  2. 安全性和审计问题:在安全性和审计记录中,准确的时间戳对于追踪事件顺序至关重要。

  3. 系统协调问题:多台计算机需要协同工作时,如果时间不一致,可能会影响到系统的正常运行。

  4. 数据分析问题:在大数据分析、日志记录和事件关联等场景下,准确的时间戳对于正确分析结果至关重要。

通过使用NTP,网络设备可以按照统一的时间基准进行操作,这对于保持网络服务的稳定性和提供基于时间的服务(如日志记录、交易处理等)至关重要。此外,NTP还可以提供一种方法来监测网络延迟、测量时间抖动以及改善系统的整体性能。

三、NTP的发展历史

NTP是由美国Delaware大学David L .Mills教授设计的,是最早用于网络中时钟同步的标准之一。NTP是从时间协议和ICMP时间戳报文演变而来,NTP的版本演进如下所示。
在这里插入图片描述

四、NTP的多个优点

NTP(Network Time Protocol)具有多个优点,其中一些主要的包括:

  1. 准确性:NTP能够实现非常高的时间同步精度,一般可达数十毫秒,甚至在理想条件下可以达到微秒级别。这对于许多依赖于精确时间的应用来说非常重要。

  2. 稳定性:NTP采用复杂的算法来处理网络延迟、时钟漂移等因素的影响,从而确保长期稳定的时间同步。

  3. 灵活性:NTP支持多种传输模式,包括一对一(unicast)、一对多(multicast)、广播(broadcast)和组播(anycast),适应不同的网络环境和需求。

  4. 可扩展性:NTP可以支持大规模的分布式网络,包括数千台设备的时间同步。

  5. 容错性:NTP允许客户端连接多个时间服务器,并从中选择最准确的时间源,从而提高了系统的鲁棒性。

  6. 易用性:NTP已被广泛部署,并且大多数现代操作系统都内置了NTP客户端,使其易于安装和配置。

  7. 安全性:较新的NTP版本(如NTPv4)提供了身份验证机制,可以防止恶意用户伪造时间信息或拒绝服务攻击。

  8. 广泛的兼容性:NTP被广泛应用于各种网络环境和设备,包括桌面计算机、服务器、嵌入式设备、手机和平板电脑等。

  9. 开放标准:NTP是一个公开的国际标准,这意味着它不受任何一家公司的控制,而且有许多开源实现可供选择。

正是因为这些优点,NTP成为了互联网上最常用的时间同步协议之一。

五、NTP的工作原理

在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。Device B為NTP時鐘服務器。
在这里插入图片描述
(1)Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。
(2)当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。
(3)当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。
(4) 当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。
至此,Device A已经拥有足够的信息来计算两个重要的参数:
NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。
Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。

六、NTP的工作模式

1,客户端/服务器模式

NTP服务器自动工作在服务器模式,并向NTP客户端发送应答报文
NTP客户端进行时钟过滤和选择,并同步到优选的NTP服务器。
在这里插入图片描述

2,对等体模式

NTP对等体模式,可以让两个设备互相同步时间,但是仍然会区分主动对等体和被动对等体,这种模式主要在NTP服务器常用。
在这里插入图片描述

3,广播模式

未来可能在物联网会常用,NTP广播服务器向所有NTP客户端广播报文后,客户端收到报文,发起服务器\客户端请求模式。
在这里插入图片描述

4,组播模式

NTP组播模式主要工作在服务器\客户端模式,这种模式实际应用相对较少。
在这里插入图片描述

七、NTP时钟层级

NTP允许客户端从服务器请求和接收时间,而服务器又从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC。

NTP以层级来组织模型结构,层级中的每层被称为Stratum。

通常将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。

时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。
在这里插入图片描述

八、UTC与GMT的区别

1)格林威治标准时间GMT

格林尼治平时(Greenwich Mean Time,GMT),又称为格林尼治标准时间。
在这里插入图片描述
在这里插入图片描述

格林尼治平时的正午是指当平太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。自1924年2月5日开始,格林尼治天文台负责每隔一小时向全世界发放调时信息。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。

2)世界协调时间UTC

UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间)
在这里插入图片描述

是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。

其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

推荐阅读

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37813152/article/details/128712718

智能推荐

查找二叉树、完全二叉树、线索二叉树、最优二叉树_二叉树 完全二叉树 查找二叉树-程序员宅基地

文章浏览阅读3.3k次,点赞30次,收藏38次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、查找二叉树(二叉排序树)二、完全二叉树前言2021年上半年 软件设计师 上午试卷中有这样一道题58.当二叉树的结点数目确定时,________的高度一定是最小的。A.二叉排序树 B.完全二叉树 C.线索二叉树 D.最优二叉树我已此为契机,了解一下查找二叉树、完全二叉树、线索二叉树、最优二叉树的一些相关定义(此题结尾会给出答案详解)一、查找二叉树(二叉排序树)二叉排序树的定义:1、若根结点的左子树._二叉树 完全二叉树 查找二叉树

pyhon---之argparse_python3 argparse不输出usage和error-程序员宅基地

文章浏览阅读1.8k次。argparseargparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。当然,Python 也有第三方的库可用于命令行解析,而且功能也更加强大,比如 docopt,Click。argparse 使用简单示例我们先来看一个简单示例。主要有三个步骤:创建 Ar..._python3 argparse不输出usage和error

决策树算法和CART决策树算法详细介绍及其原理详解-程序员宅基地

文章浏览阅读2.1k次。今天给大家带来的主要内容包括:决策树算法、基尼系数和CART决策树算法。废话不多说,下面就是本文的全部内容了!_cart决策树

Retrofit请求怎样接收返回的数据格式_android retrofit 如何知道接受类型-程序员宅基地

文章浏览阅读4.5k次。因为有时候接口文档没有提前发出来,只能自己请求接口后才能知道后台返回的数据格式是怎样的,所以这里我们可以设置返回的类是ResponeBody,如果知道返回的数据类型,就设置为返回的实体类步骤一:网络请求的接口返回类型改为ResponseBody步骤二:Gson转接收的实体bean这个就不需要了步骤三:response.body().string()就是返回的数据,自己看着转..._android retrofit 如何知道接受类型

【超快超轻YOLO】YOLO-Fastest从Darknet源码编译、测试再到训练完整图文教程!-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏54次。最轻的YOLO算法出来了!这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。而且,这个YOLO-Fastest算法满足所有平台..._yolo-fastest

oracle自治事务的写法_oracle存储过程自治事务-阿里云开发者社区-程序员宅基地

文章浏览阅读196次。pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。如何保证存储过程内外的事务合理使用显得尤为重要。pb调用存储过程的事务,我们称其为主事务。他与存储过程内的事务关系,无非就两种情况。两个事务是同一个事务或者两个事务是独立的两个事务。oracle提供了参数PRAGMA AUTONOMOUS_TRANSACTION用于标示存储过程内的事务为自治事务,实例如下...

随便推点

QClipboard类文档_qt使用qclipboard的clear方法无法清除数据-程序员宅基地

文章浏览阅读407次。QClipboard类提供了对窗口系统剪贴板的访问。#include "qclipboard.h"继承了QObject。所有成员函数的列表。公有成员void clear()bool supportsSelection () constbool ownsSelection() constbool ownsClipboard() con..._qt使用qclipboard的clear方法无法清除数据

mybatis_plus获取批量插入id_mybatisplus批量插入获取id-程序员宅基地

文章浏览阅读1.4k次。mybatis_plus获取批量插入id_mybatisplus批量插入获取id

将date命令结果转换为yyyymmdd日期格式_date转yyyy-mm-dd-程序员宅基地

文章浏览阅读3.3k次。date -d yesterday '+%Y%m%d' 以yyyymmdd格式显示昨天日期date -d today '+%Y%m%d' 以yyyymmdd格式显示当天日期date -d tomarrow '+%Y%m%d' 以yyyymmdd格式显示明天日期_date转yyyy-mm-dd

日常BUG ——乱码-程序员宅基地

文章浏览阅读1.5k次。日常问题定位分析。

【JavaEE基础与高级 第27章】基本类型包装类的使用,装箱以及拆箱与parseInt方法_java包装类parseint-程序员宅基地

文章浏览阅读1.3w次,点赞44次,收藏35次。Java 中的数据类型分为基本类型和引用类型两大类,使用基本类型可以提升效率但是java是面向对象的语言,java的设计思想是一切皆对象,而基本数据类型不是对象,于是 Java 为每种基本数据类型都设计了对应的类,称为包装类。......_java包装类parseint

关键字_关键字用来定义条件语句的分支-程序员宅基地

文章浏览阅读390次。什么是关键字:被java语音赋予特点含义的单词关键字的特点:组成字母全小部小写常见的代码编辑器,对关键字有特殊的颜色常见关键字举例用于定义数据类型的关键字:class 类interface 声明了这是一个java 的接口@interface 是用来修饰 Annotation 的,它是继承了 java...._关键字用来定义条件语句的分支

推荐文章

热门文章

相关标签