ntp协议原理linux网络编程,NTP协议-程序员宅基地

技术标签: ntp协议原理linux网络编程  

一:NTP的工作原理(UDP端口 123)

83bf2c321aac5dfdf86bca2e2e67c272.png

NTP工作原理:

上图是NTP的基本工作原理,路由器A和路由器B通过网络连接,它们都有自己独立的系统时钟,要实现各自的系统时钟的自动同步,作如下的假设:

—路由器A和B的系统时钟同步之前,路由器A的时钟设定为10:00:00am,路由器B的时钟设定为11:00:00am。

—以路由器B为NTP时间服务器,即路由器A将使自己的时钟与路由器B的时钟同步。

—数据包在路由器A和B之间单向传输所需要的时间为1秒。

时钟同步的过程:

系统时钟同步的工作过程如下:

—路由器A发送一个NTP消息包给路由器B,该消息包带有它离开路由器A时的时间戳,该时间戳为10:00:00am(T1)。

—当此NTP消息包到达路由器B时,路由器B加上自己的时间戳,该时间戳为11:00:01am(T2)。

—当此NTP消息包离开路由器B时,路由器B再加上自己的时间戳,该时间戳为11:00:02am(T3)。

—当路由器A接收到该响应消息包时,加上一个新的时间戳,该时间戳为10:00:03am(T4)。

NTP的工作模式:

按照实现同步所必须的模式组合,有以下几种常用的模式:

服务器 / 客户模式(server / client)

对等体模式(symmetric active / symmetric passive)

广播模式(broadcast server / broadcast client)

组播模式(multicast server / multicast client)

关于NTP的层数及时间戳:

层数(取值范围 1-15):

层数是NTP中一个比较重要的概念,它基本上可以说是代表了一个时钟的准确度,层数为1的时钟准确度最高,从1到15依次递减.

时间戳:

Reference Timestamp:本地时钟最后一次被设定或校准的时间

Originate Timestamp: 同步请求报文离开发送端时的本地时间

Receive Timestamp:同步请求到达被请求端时的本地时间

Transmit Timestamp:应答报文离开应答者时的本地时间

时钟过滤及时钟选择:

时钟过滤:

时钟过滤是针对本地时钟的同一个对等体而言,用来从这个给定的对等体选择最好的时间样本.

时钟选择:

时钟选择是针对不同的对等体,比如一个client可以配置多个server,还可以配置多个peer,这样它分别向各个server和被动对等体发送时钟同步报文,在接收到应答报文后利用时钟选择算法选择出最好的时钟进行同步.

二:NTP数据报文格式

cdc5ae3d2ffbbfd4f19176c4369c5969.png

NTP的实现模型:

e3e388fe90da7b1ff9a8241739098acc.png

—在模型中,一台主机上运行了三个进程,这三个进程共享同一分块的数据文件,每一个对等体使用数据文件中一个特定的分块,三个进程通过报文传送系统互相连接。

发送进程:

—由每个对等体中的独立的计时器控制,收集数据文件中的信息并向它的对等体发送NTP报文;每个NTP报文中包括报文发送时的本地时间戳、上次接收到报文的时间戳和其它确定层次和管理关联所必须的信息。

接收进程:

—接收NTP报文(也可能包括其它协议的报文)和来自于与主机直接相连的Radio Clocks 的信息。

更新过程:

—在接收到NTP报文时或其它时间启动,它处理来自于每一个对等体的偏移数据,并用选择算法选择出最好的对等体。

本地时钟进程:

—根据由更新过程中产生的偏移数据用一定的机制对本地时钟的相位和频率进行调节。

NTP实验:

下面的部分是转载的别人的,在此说声感谢:

一、使用windows2003作为时钟源

ParametersType -> NTP

ConfigAnnounceFlags -> 5

TimeProvidersNtpServerEnabled -> 1

TimeProvidersNtpClientSpecialPollInterval -> 900

ConfigMaxPosPhaseCorrection -> 172800

ConfigMaxNegPhaseCorrection -> 172800

ConfigLocalClockDispersion -> 0 (Previous 10)

Run the commands to restart the time service:

- net stop w32time

- net start w32time

二:思科设备作为客户端配置

1、配置命令

clock timezone CST 8

ntp server x.x.x.x

ntp source  interface

2状态检查

show ntp status

show ntp associations detail

3注意事项

如果没有同步,最好先no ntp server 再重新配置ntp server

三、思科设备作为源

clock timezoneCST 8

ntp source Loopback0

ntp authenticate

ntp authentication-key 1234 md5 104D000A0618 7

ntp trusted-key 1234

ntp master 3

四、Linux作为时间源

如果你的服务器是Linux,请先用如下指令查看本机是否已安装ntp serverrpm -qa|grep ntp如无,则安装上此RPM包。也可安装tar包。配置NTP serverNTP server的主配置文件为/etc/ntp.conf现对/etc/ntp.conf的各项进行说明#设置此服务器同上层服务器做时间同步的IP地址,prefer意味着首选IP地址server 61.246.176.141 preferserver 210.59.157.10 preferserver 202.112.7.150 preferserver 203.116.5.254  #asia.pool.ntp.orgserver 202.162.32.12  #1.asia.pool.ntp.orgserver 202.155.248.212 #0.asia.pool.ntp.org#记录上次我们的NTP server与上层NTP server连线时所花费的时间driftfile /etc/ntp/drift#设置默认策略为允许任何主机进行时间同步restrict default ignore#设置允许访问此时间服务器的时间服务的IP地址restrict 127.0.0.1    # 开启內部环路lorestrict 192.168.0.2  # 主机本身的 IP 也同時开启restrict 211.101.48.56restrict 192.168.1.0 mask 255.255.255.0 意味着允许192.168.1.0/24子网内主机可同步restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap #允许任何主机跟此服务器进行时间同步#指定阶层编号为5,降低其优先度。fudge 127.127.1.1 stratum 5#设置ntp日志的pathstatsdir /var/log/ntp/#设置ntp日志文件logfile /var/log/ntp/ntp.logkeys /etc/ntp/keys

NTP server的维护1、 启动service ntpd start或者ntpd –p /var/log/ntpd.pid或手工指定配置文件的带path的全名如ntpd –c /etc/ntp/ntp.conf –p /var/log/ntpd.pid2、 停止service ntpd stop3、 ntpq –p  查看本机和上层服务器的时间同步结果4、 ntptrace  可以用來追踪某台时间服务器的时间对应关系5、 ntpdate IP 客户端要和NTP server进行时钟同步。6、 查看ntp日志/var/log/ntp/ntp.log客户端的配置LINUX客户端:echo “10 5 * * * root /usr/sbin/ntpdate 192.168.5.3;/sbin/hwclock -w”>>/etc/crontab意为每天凌晨的5:10同NTP server进行一次时钟同步,并写入本机BIOS

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

智能推荐

React中的组件通信——父传子、子传父、Context_react子传父通信-程序员宅基地

文章浏览阅读3.7k次。0、认识组件间的通信在开发过程中,我们会经常遇到需要组件之间相互进行通信:比如App可能使用了多个Header,每个地方的Header展示的内容不同,那么我们就需要使用者传递给Header一些数据,让其进行展示;又比如我们在Main中一次性请求了Banner数据和ProductList数据,那么就需要传递给他们来进行展示;也可能是子组件中发生了事件,需要由父组件来完成某些操作,那就需要子组件向父组件传递事件;总之,在一个React项目中,组件之间的通信是非常重要的环节; 父组件在展示子组件_react子传父通信

【工程开发】Win10开机出现两个用户 邮件账户无法删除_win10设密码后每次开机双账户-程序员宅基地

文章浏览阅读7.5k次,点赞3次,收藏9次。这篇文章的题目正确表述应该是: Win10自动登陆 本地账号和邮件账号同时存在,默认登陆邮件账号并且要输入密码,并且邮件账号删不掉以前装机的时候直接是按网络邮件账号登陆的,邮件账号有个好就是可以同步多台设备间的东西,缺点就是密码不能设的很简单,明明ubuntu都可以设置三个字符的好吧。。然后我就建立了一个本地账号,挺不错的密码设置的多简单都可以;然后重启发现原来的邮件账号还在,明明已经在..._win10设密码后每次开机双账户

SpringMvc 之MockMvc的使用方法_mockmvc spring.io-程序员宅基地

文章浏览阅读7.5k次,点赞10次,收藏19次。出现的问题: 在我们后台开发接口时,经常做的一件事就是编码、启动后台服务、使用PostMan 或者其他的接口调用工具进行测试、发现接口问题、修改代码,继续重启后台服务,继续走着这样的流程,个人感觉启动服务是一个非常麻烦的事情,当我需要看看我写的接口是否正确时,每次都要重新启动,输入参数,访问服务,然后在本地的时候代码跑着一点问题都没有,部署到对应环境时,打包没问题,接口却不通了,..._mockmvc spring.io

echarts疑难杂症_vue echarts饼状图太小-程序员宅基地

文章浏览阅读797次。echarts常见问题及部分配置_vue echarts饼状图太小

xpath解析html文件报错:lxml.etree.XPathEvalError: Invalid expression-程序员宅基地

文章浏览阅读1.2w次。1.反斜杠的问题:错误示范:title = sel.xpath(’//div/h2/a text()’)正确:title = sel.xpath(’//div/h2/a/text()’)_lxml.etree.xpathevalerror: invalid expression

固定静态ip_csdn ip固定-程序员宅基地

文章浏览阅读181次。固定静态ip。_csdn ip固定

随便推点

大学生图书馆网页设计模板代码 DIV布局书店网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品_学校网站设计-程序员宅基地

文章浏览阅读187次。 校园网页设计 、学校班级网页制作、学校官网、小说书籍、等网站的设计与制作。️HTML静态网页设计作业使用dreamweaver制作,采用DIV+CSS布局,共有多个页面,首页使用CSS排版比较丰富,色彩鲜明有活力。顶部导航及底部区域背景色为100%宽度,主体内容区域宽度 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语_学校网站设计

Java序列化与反序列化最全详解_java序列化与反序列化全讲解 mocas_wang-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏9次。什么是序列化和反序列化?序列化:序列化就是将 java对象 转化为字节序列的过程。序列化是指把一个Java对象变成二进制内容,本质上就是一个byte[]数组。 为什么要把Java对象序列化呢?因为序列化后可以把byte[]保存到文件中,或者把byte[]通过网络传输到远程,这样,就相当于把Java对象存储到文件或者通过网络传输出去了。注意:序列化是为了在传递和保存对象时,为了保证对象的完整性和可传递性。将对象转为有序的字节流,以便在网上传输或者保存在本地文件中。反序列化:反序列化就是将 字_java序列化与反序列化全讲解 mocas_wang

m4_forloop m4-程序员宅基地

文章浏览阅读4.7k次。<!--pre.display {font-family:inherit}pre.format {font-family:inherit}pre.smalldisplay {font-family:inherit; font-size:smaller}pre.smallformat {font-family:inherit; font-size:smalle

spring-@value属性赋值_@value integer-程序员宅基地

文章浏览阅读520次。1、@value给属性赋值,使用方式有三种:基本数值SpEL; #{}写${};取出配置文件【properties】中的值(在运行环境变量里面的值)使用如下: @Value("张三") private String name; @Value("#{20-2}") private Integer age; @Value("${person.nickName}") private String nickName;其中第三种需要增加外部配置文件,需要使用@PropertySource_@value integer

学习Python爬虫怎么赚钱?(文末免费赠Python资料)_python爬虫怎么挣钱-程序员宅基地

文章浏览阅读1.2k次。学习Python爬虫怎么赚钱?(文末免费赠Python资料)_python爬虫怎么挣钱

latex 中文正文双栏模板_LaTeX学习指南(一)-程序员宅基地

文章浏览阅读1.5k次。关于的入门,可以参考:《LaTeX环境配置》,和《LaTeX入门(一)》当然,我不打算继续从 入门(二)开始写起,关于这个新的专题:学习指南,将会一直写下去,与 R 语言系列一样不断地更新,同时,我希望,尽可能地解释清楚复杂的过程,降低的学习成本,同时在必要的情况下,进一步讲解如何与 R 语言实现联合使用,无缝对接,自动化输出。最后一点,特别地,我希望将与 Word..._latex中文模版双栏

推荐文章

热门文章

相关标签