NTP协议原理_ntp协议属于哪一层

NTP协议原理_ntp协议属于哪一层NTP协议

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

Jetbrains全系列IDE稳定放心使用

什么是NTP协议

  当第一次听到NTP时,完全不知道是什么概念,只好问度娘。度娘搜到的答案如下:
这里写图片描述

  看了度娘的解释后,才大概明白该协议是进行网络对时的协议,比如当自己的电脑时间不对,可以从另外一台电脑病基于NTP协议进行对时,以另外一台电脑的时间作为基准。那么,更官方的理解就是:使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

NTP工作原理

  NTP的基本工作原理如图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:
  在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。
这里写图片描述
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)。
5.至此,Device A已经拥有足够的信息来计算两个重要的参数:
NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。
Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。

NTP的报文格式

这里写图片描述
主要字段的解释如下:

  • LI(Leap Indicator):长度为2比特,值为”11”时表示告警状态,时钟未被同步。为其他值时NTP本身不做处理。

这里写图片描述

  • VN(Version Number):长度为3比特,表示NTP的版本号,目前的最新版本为4。后面会有不同版本的测试,发现发送不同版本的报文,服务器均有数据返回,说明NTP协议是向下兼容的,老的版本也可以使用。

  • Mode:长度为3比特,表示NTP的工作模式。不同的值所表示的含义分别是:0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用。
    这里写图片描述

  • Stratum:系统时钟的层数,取值范围为1~16,它定义了时钟的准确度。层数为1的时钟准确度最高,准确度从1到16依次递减,层数为16的时钟处于未同步状态,不能作为参考时钟。
    这里写图片描述
  • Poll:轮询时间,即两个连续NTP报文之间的时间间隔。
  • Precision:系统时钟的精度。
  • Root Delay:本地到主参考时钟源的往返时间。
  • Root Dispersion:系统时钟相对于主参考时钟的最大误差。
  • Reference Identifier:参考时钟源的标识。
  • Reference Timestamp:系统时钟最后一次被设定或更新的时间。
  • Originate Timestamp:NTP请求报文离开发送端时发送端的本地时间。
  • Receive Timestamp:NTP请求报文到达接收端时接收端的本地时间。
  • Transmit Timestamp:应答报文离开应答者时应答者的本地时间。
  • Authenticator:验证信息。
    这里写图片描述
    上述总结了NTP协议的原理,下一篇将讲解NTP的代码实现。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182734.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm上传代码到gitlab_可以在gitlab里查看代码

    pycharm上传代码到gitlab_可以在gitlab里查看代码1.Pycharm关联Git安装路径(1)确定自己已经安装git,并且知晓git安装目录,我这里git安装在D盘目录下。(2)打开pycharm—->File——>Settings【点击Test后,出现弹框5,点击OK,此时Pycharm已关联git路径成功。】2.pycharm从gitlab上拉取代码(1)依次点击下图中…

    2022年8月28日
    4
  • Android快速转战Kotlin教程「建议收藏」

    Android快速转战Kotlin教程「建议收藏」前言kotlin是啥?这里就不用多说了,想必看这篇文章的童鞋肯定是有所了解的。那么这篇文章你可以收获什么?答:本文主要通过本人如何从java转战到kotlin并应用在实际项目中的个人经历,给大家提供一些学习思路、学习方法以及一些学习资料和个人总结。前提:你的项目(包含个人项目)即将开始用到kotlin(没有项目作为依托你会缺少十足的动力,而且缺少应用场景乘热打铁那也…

    2022年5月25日
    30
  • Spark Streaming特点「建议收藏」

    Spark Streaming特点「建议收藏」SparkStreaming特点1、易用2、容错3、易整合到Spark体系4、SparkStreaming与Storm的对比SparkStreamingStorm开发语言:Scala开发语言:Clojure编程模型:DStream编程模型:Spout/Bolt喜欢就点赞评论…

    2022年6月24日
    30
  • 【转载】究竟啥才是互联网架构“高可用”

    【转载】究竟啥才是互联网架构“高可用”

    2021年11月20日
    47
  • 带着问题看源码2-NodeRed的用户认证机制是怎样的

    带着问题看源码2-NodeRed的用户认证机制是怎样的文章目录 1 几种常用的认证机制 1 1 HTTPBasicAut 2 OAuth2 NodeRed 中的认证机制使用 2 1 基于用户名 密码凭据的身份验证 2 2 针对任何 OAuth OpenID 提供者 如 Twitter 或 GitHub 进行身份验证 2 3 自定义用户身份验证 2 4 自定义的身份验证 token2 5 使用自定义 token 访问编辑器 3 功能实现的参与者 3 1 oauth2orize 主要功能及在本模块中的意义 3 2 passport3 3 express sessi

    2025年12月9日
    3
  • c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇

    c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇C语言,贪吃蛇程序设计一.代码分析(1)头文件(2)宏定义(3)全局变量(4)函数部分1)绘制地图函数DreawMap(),2)食物位置函数FoodRand()3)键盘控制移动函数ControlMove()函数4)移动函数Move()函数5)蛇身开始函数Isnake()函数6)判断食物是否被吃到函数Jfood()函数7)判断是否碰到墙Jwell()函数8)判断是否碰到蛇身Jsnake()函数9)计算分数和难度Showf()函数10)清空存储空间函数二.代码附录一.代码分析(1)头文件1.include

    2025年7月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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