2019独角兽企业重金招聘Python工程师标准>>>

  • 地球共有24个时区,而以格林威治时间(GMT)为标准时间;
  • 最准确的时间为使用原子钟(Atomic clock)所计算的,例如 UTC(Coordinated Universal Time)就是一例。
  • linux系统本来就有两种时间,一种是linux 以 1920/01/01开始计数的系统时间,一种则是BIOS记载的硬件时间。 软件时钟: 由Linux 操作系统根据 1970/01/01 开始计算的总秒数; 硬件时钟: 主机硬件系统上面的时钟,例如BIOS记录的时间;
  • linux 可以透过网络校时,最常见的网络校时为使用NTP服务器,这个服务启动在 udp port 123;
  • NTP 服务器为一种阶梯式的服务,所以NTP服务器本来就会与上层时间服务器时间的同步化,因此 nptd 与 ntpdate 两个命令不可同时使用;
  • NTP 服务器的联机状态可以使用 ntpstat 及 ntpq -p 来查询。

查看NTP服务器是否与上层联机。

[root@localhost ebin]# ntpstat
synchronised to NTP server (120.25.115.20) at stratum 3time correct to within 79 mspolling server every 1024 s[root@localhost etc]# ntpq -premote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+darwin.kenyonra 255.83.201.76    2 u  93m 1024  340  267.338    5.893   9.263
*120.25.115.20   10.137.38.86     2 u  288 1024  377   31.105   -1.139  15.493
+120.25.115.19   10.137.38.86     2 u 1052 1024  377   32.006   -2.325  18.519
+mx.comglobalit. 200.98.196.212   2 u  306 1024  257  313.641    1.955  13.162
  • NTP 提供的客户端软件为 ntpdate 这个指令。
  • 在 linux 下想要手动处理时间时, 需以 date 设定时间后,以 hwclock -w 来写入 BIOS 所记录的时间。
  • NTP 服务器之间的时间误差不可超过 1000 秒,否则 NTP服务会自动关闭。

NTP这个deamon是如何让Server与Client同步他们的时间的呢?

  1. 首先,主机当然需要启动这个deamon,之后,
  2. client会向NTP Server 发送出调校时间的message,
  3. 然后NTP Server 会送出当前的标准时间给Client,
  4. client接收了来自Server的时间后,会据以调整自己的时间,就达成了网络校时咯!

NTP服务端的设置

关于权限设定部分:
权限的设定主要以restrict这个参数来设定,主要的语法为:

restrict IP 地址 mask 子网掩码 参数

其中IP 可以是IP地址,也可以是default, default 就是指所有的IP

参数有一下几个:
ignore: 关闭所有的NTP联机服务。
nomodify: 客户端不能更改服务器端的时间参数,但是客户端可以通过服务端进行网校时。
notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网。
noquery: 不提供客户端的时间查询。
注意: 如果参数没有设定,那就表示该IP(或子网)没有任何限制!

利用server 设定上层NTP服务器
上层NTP服务器的设定方式为:

server [IP or hostname] [prefer]

在 server 端后可以接ip 或者主机名。 perfer 表示[优先使用]的服务器。

上级时间服务器的设定
由于我们配置的NTP服务器需要网络上面比较准确的NTP服务器来更新自己的时间,所以在我们的NTP服务器上面需要配置一部上级时间服务器来进行校准!

用server这个参数设定上级时间服务器语法为:

server IP地址或域名[prefer]

IP 地址或域名就是我们指定的上级时间服务器,如果Server参数最后加上 perfer,
表示我们的NTP服务器主要以该部主机时间进行校准。

以driftfile 记录时间差异
设定的方式如下:

driftfile [可以被ntpd 写入的目录与文件]

因为预设的NTP Server 本身的时间计算的依据 BIOS 的芯片震荡周期频率来计算的, 但是这个数值与上层 Time Server 不见得会一致啊! 所以NTP这个daemon(ntpd)会自动的去计算我们自己主机的频率与上层 Time server 的频率,并且将两个频率的误差记录下来,记录下来的文件就是在 driftfile 后面接的完整文档名当中了!
关于文档:

  • driftfile 后面接的文档需要使用完整路径文件名;
  • 该文档不能是连结档;
  • 该文档需要设定成ntpd这个daemon 可以写入的权限;
  • 改文档所记录的数值单位为: 百万分之一秒(ppm) driftfile 后面接的文档会被ntpd自动更新,所以他的权限一定要能够让ntpd 写入才行。

除了以restrict 来限制客户端的联机之外,我们也可以透过秘钥系统来给客户端认证。
如此一来可以让主机端更放心。

keys [key_file]# Key file containing the keys and key identifiers used when operating# with symmetric key cryptography.keys /etc/ntp/keys

时间及NTP服务器设定相关的配置文件和重要数据文件有底下几个:

  • /etc/ntp.conf : 就是NTP服务器的主要配置文件,也是唯一的一个;

  • /usr/share/zoneinfo/ 为各个时区的时间格式对应档。

  • /etc/sysconfig/clock 设定时区与是否使用UTC时间钟的配置文件。每次开机后linux会自动的读取这个文件来设定 自己系统所默认要显示的时间。

  • /etc/localtime : 这个文件是本地的时间配置文件,刚刚那个clock 文件里面规定了使用的时间配置文件, /usr/share/zoneinfo/Asia/Taipei,

至于在常用于时间服务器与修改时间的指定方面,主要有底下这几个啦:

  • /bin/date: 用于linux 时间(软件时钟)的修改与显示的指令。

  • /sbin/hwclock : 用于 BIOS时钟(硬件时钟)的修改与显示的指令。 这是一个root才能执行的指令, 因为 linux 系统上面BIOS 时间与linux 系统时间是分开的,所以使用date这个指令调整了时间之后,还需要使用 hwclock 才能将修改过后的时间写入BIOS当中。

  • /usr/sbin/ntpd: 主要提供NTP服务的程序, 配置文件为 /etc/ntp.conf

  • /usr/sbin/ntpdate : 用于客户端的时间校正,如果你没有要启动NTP而仅想要使用 NTP client 功能的话, 那么只会用到这个指令而已啦!


NTP时间同步告警的采集

//获取NTP时间服务状态
//#define NTP_STAT_CHECK           "ntpstat"
//#define NTP_CONF_CHECK           "grep 'prefer' -r /etc/ntp.conf"
void CBusinessMsgPro::GetSyncState()
{//获取上报时间char pcCurTime[64] = {0};GetSysTime(pcCurTime);int nSyncState = 0;
#ifdef _LINUX_PPC_nSyncState = 1;//ppc上不判断时间同步,直接设置为正常状态
#else//获取时间同步状态char achBuff[255];char achBuff1[255];memset(achBuff, 0, sizeof(achBuff));memset(achBuff1, 0, sizeof(achBuff1));FILE *fpStream = popen(NTP_STAT_CHECK, "r");if (NULL == fpStream){ADP_LOG(ADP_ERROR, "[GetSyncState] popen : %s error: %s\n", NTP_STAT_CHECK,strerror(errno));return;}fread(achBuff, sizeof(char), sizeof(achBuff),  fpStream);pclose(fpStream);ADP_LOG(ADP_INFO, "[GetSyncState] NTP_STAT_CHECK state is : %s\n",achBuff);//获取/etc/ntp.conf中的prefer ipfpStream = popen(NTP_CONF_CHECK, "r");if (NULL == fpStream){ADP_LOG(ADP_ERROR, "[GetSyncState] popen : %s error : %s\n", NTP_CONF_CHECK,strerror(errno));return;}fread(achBuff1, sizeof(char), sizeof(achBuff1),  fpStream);pclose(fpStream);ADP_LOG(ADP_INFO, "[GetSyncState] NTP_CONF_CHECK state is : %s\n",achBuff1);//如果有同步成功的标识if ((NULL != strstr(achBuff, "synchronised")) && (NULL == strstr(achBuff, "unsynchronised"))){//判断是否是同步localhost成功,如果是的话,查看/etc/ntp.conf中的prefer是否为127.0.0.1,如果不是,则也视为时间同步失败if (NULL != strstr(achBuff, "synchronised to local net at")){if ((NULL != strstr(achBuff1, "127.0.0.1")) || (NULL != strstr(achBuff1, "localhost"))){nSyncState = 1;}}else{nSyncState = 1;}}
#endif//上报时间同步状态json_t * ptJsRoot = json_pack("{s:s, s:s, s:s, s:s, s:i}","devid", m_pServerInfo[emServTypePhysical]->m_achSrvGUID,"devtype", m_pServerInfo[emServTypePhysical]->m_achSrvType,"eventid", EV_SYSTIME_SYNC,//消息类型"rpttime", pcCurTime,"syncstate", nSyncState);//每个cpu核的详细信息if (NULL == ptJsRoot){ADP_LOG(ADP_ERROR, "[GetSyncState] Json root pack failed!\n");return;}m_pServerInfo[emServTypePhysical]->SendMsg(ptJsRoot);
}

转载于:https://my.oschina.net/lvhuizhenblog/blog/871090

NTP (Network Time Protocol)相关推荐

  1. Linux 服务器内网搭建NTP时间服务器(Network Time Protocol)

    文章目录 Linux 服务器内网搭建NTP时间服务器(Network Time Protocol) 一.在主服务器端安装NTP时间服务器 二.在客户端安装NTP时间服务器 三.Xhell 同时控制多个 ...

  2. ptp(precision time protocol)时钟同步

    一.介绍 1:什么是ptp PTP(Precision Time Protocol) 是一个通过网络同步时钟的一个协议.当硬件支持时,PTP 精度能达到亚微秒,比 NTP(Network Time P ...

  3. TCP/IP协议详解(TCP/IP protocol)

    本文转载自菜鸟教程TCP/IP 教程 TCPIP 教程 TCPIP 介绍 计算机通信协议Computer Communication Protocol 什么是 TCPIP 在 TCPIP 内部 TCP ...

  4. linux ntptime(Network Time Protocol 网络时间协议)

    今天看RXW源码的时候,看到一个get_ntptime函数,不知道是干嘛用的,遂记录一下 RTP的timestamp是相对的(是个随机的初始值),需要配合RTCP包里面的NTP来相应的计算绝对时间 参 ...

  5. 网络管理技术(Network Administrative Techniques)

    网络管理技术(Network Administrative Techniques) DNS(Domian Name System) TOP-LEVEL CLASS DOMIANNAME SNMP(Si ...

  6. OSI(open system internet)七层模型介绍以及NAT(Network Address Translation)技术详解

    文章目录 1- OSI七层模型介绍 2- 物理层 (1)作用 (2)常见协议 3- 数据链路层 (1)作用 (2)常见协议 [1]ARP协议(地址解析) [2]RARP协议(逆地址解析) [3]PPP ...

  7. GTP(GPRS Tunnelling Protocol)协议http://blog.csdn.net/stephen_yin/article/details/6951237

    GTP(GPRS Tunnelling Protocol)协议 标签: extensionheaderinternet网络wapxhtml 2011-11-09 10:15  6097人阅读  评论( ...

  8. NFS (Network File System)网络文件系统

    文章目录 1.nfs简介 1.1应用场景 2.nfs工作机制 2.1体系组成 2.2实现原理 2.3工作机制 2.4相关配置参数 安装步骤 1.nfs简介 主要用于网络中linux或unix计算机之间 ...

  9. 十、路由信息协议RIP(Routing Information Protocol)

    路由信息协议RIP(Routing Information Protocol) 路由协议分类 路由学习的方式进行分类: 静态路由 动态路由 算法分类(动态路由分类): 距离矢量路由协议:RIP.EIG ...

最新文章

  1. 阿里全球数学竞赛第二届
  2. 洛谷 P3376 【模板】网络最大流
  3. 揭秘阿里中台!一文看懂阿里推荐业务的两大利器
  4. jquerymobile从index.html跳转到另外一个xxxx.html文件,js不执行的解决
  5. 一个简单的规则引擎例子
  6. iOS之本地推送通知使用介绍
  7. 计算机编程是考研什么专业,程序员考研该不该继续选择计算机专业
  8. 印度首富之女大婚,贫穷限制了我的想象……
  9. 入门机器学习(十二)--课后作业解析-偏差与方差(Python 实现)
  10. C语言assert关键字
  11. BigInteger简单使用及方法总结
  12. JavaMail的使用
  13. flash砸金蛋_砸金蛋flash课件模版-幸运抽奖随机抽题-多媒体交互式flash游戏课件模版...
  14. 自考计算机00051笔记,自考00051 管理系统中计算机应用自考资料笔记自考小抄.doc...
  15. Youtube更改视频原始语言
  16. ev4加密视频转换成MP4格式
  17. 互联网周刊:Web 3.0还有多远
  18. restTemplate实现 authorization basic权限认证(带账号密码)
  19. 新学编程之掌握基本概念
  20. 搭建 live2d api接口详细步骤

热门文章

  1. 利用Nmap对MS-SQLSERVER进行渗透
  2. Python黑客编程3网络数据监听和过滤
  3. python中的参数
  4. 一个很详细的web.xml讲解(转)
  5. 利用ssh-copy-id复制公钥到多台服务器
  6. 图像处理——图像增强
  7. CentOS 5 上安装git
  8. UNION,EXISTS,IN等在SQL语句中的灵活应用和场境的选择。
  9. 终于有人把A/B测试讲明白了
  10. thinkphp mysql save_新增Save · ThinkPHP5+数据库和模型 · 看云