精华内容
下载资源
问答
  • ntpdate提示19 Jan 10:33:11 ntpdate[29616]:no server suitable for synchronization found这种问题从下面几个点开始验证1....如果端口开通,查看服务器端的ntp.conf文件中server是否正常,如果配置...

    ntpdate提示

    19 Jan 10:33:11 ntpdate[29616]: no server suitable for synchronization found

    这种问题从下面几个点开始验证

    1.查看防火墙是否开通udp的123端口,是udp 无法使用telnet来验证,只能看iptables和硬墙是否有策略

    2.如果端口开通,查看服务器端的ntp.conf文件中server是否正常,如果配置有问题,肯定无法使用

    3.修改配置是否重新启动ntpd服务

    4.查看服务端ntpd进程是否正常

    ntpdate -d ntp服务端ip

    遇到的几个问题

    1.Server dropped:no data

    处理办法:网络不通,检查防火墙的udp端口123是否能用,查看服务端的ntpd服务是否启动

    [root@ip-192.168.25.10 ~]# ntpdate -d 192.168.25.10

    19 Jan 10:24:16 ntpdate[27838]: ntpdate 4.2.6p5@1.2349-o Tue Jun 23 15:38:19 UTC 2020 (1)

    Lookingfor host 192.168.25.10and service ntp

    host found : ip-192.168.25.10.ap-southeast-1.compute.internal

    transmit(192.168.25.10)

    transmit(192.168.25.10)

    transmit(192.168.25.10)

    transmit(192.168.25.10)

    transmit(192.168.25.10)192.168.25.10: Server dropped: no data

    server192.168.25.10, port 123stratum0, precision 0, leap 00, trust 000refid [192.168.25.10], delay 0.00000, dispersion 64.00000ansmitted4, in filter 4▽ferencetime: 00000000.00000000 Mon, Jan 1 1900 8:05:43.000originate timestamp:00000000.00000000 Mon, Jan 1 1900 8:05:43.000transmit timestamp: e3b0c156.2402fb9d Tue, Jan19 2021 10:24:22.140filter delay:0.00000 0.00000 0.00000 0.00000

    0.00000 0.00000 0.00000 0.00000filter offset:0.000000 0.000000 0.000000 0.000000

    0.000000 0.000000 0.000000 0.000000delay0.00000, dispersion 64.00000offset0.000000

    19 Jan 10:24:24 ntpdate[27838]: no server suitable forsynchronization found

    2.Server dropped: strata too high

    这个问题一般都是server端ntp.conf中server行配置了网络ntp的服务端url导致,可以收到ntp的包,但是延迟很高。

    1 [root@ip-192.168.25.10 ~]# ntpdate -d 192.168.25.10

    2 19 Jan 10:33:32 ntpdate[29681]: ntpdate 4.2.6p5@1.2349-o Tue Jun 23 15:38:19 UTC 2020 (1)3 Looking for host 192.168.25.10and service ntp4 host found : ip-192.168.25.10.ap-southeast-1.compute.internal5 transmit(192.168.25.10)6 receive(192.168.25.10)7 transmit(192.168.25.10)8 receive(192.168.25.10)9 transmit(192.168.25.10)10 receive(192.168.25.10)11 transmit(192.168.25.10)12 receive(192.168.25.10)13 192.168.25.10: Server dropped: strata too high14 server 192.168.25.10, port 123

    15 stratum 16, precision -24, leap 11, trust 000

    16 refid [192.168.25.10], delay 0.02573, dispersion 0.00000

    17 transmitted 4, in filter 4

    18 reference time: 00000000.00000000 Mon, Jan 1 1900 8:05:43.000

    19 originate timestamp: e3b0c382.6344a1b6 Tue, Jan 19 2021 10:33:38.387

    20 transmit timestamp: e3b0c382.670289fb Tue, Jan 19 2021 10:33:38.402

    21 filter delay: 0.02574 0.02573 0.02574 0.02573

    22 0.00000 0.00000 0.00000 0.00000

    23 filter offset: -0.01470 -0.01471 -0.01471 -0.01471

    24 0.000000 0.000000 0.000000 0.000000

    25 delay 0.02573, dispersion 0.00000

    26 offset -0.014712

    27

    28 19 Jan 10:33:38 ntpdate[29681]: no server suitable for synchronization found

    解决办法就是将服务端也开启ntpdate 然后通过ntpdate链接网络url的ntp服务器,然后在ntp.conf中配置server 127.127.1.0   (记住 不是127.0.0.1 这个无效)

    在打开ntpq -p 查看是否转为LOCAL了

    [root@ip-192.168.25.10 ~]# ntpq -p

    remote refid st t when poll reach delay offset jitter==============================================================================

    *LOCAL(0) .LOCL. 8 l 11 64 17 0.000 0.000 0.000

    正确的ntpdate -d 应该是下面的

    1 [root@ip-192.168.25.10 ~]# ntpdate -d 192.168.25.10

    2 19 Jan 10:35:25 ntpdate[30125]: ntpdate 4.2.6p5@1.2349-o Tue Jun 23 15:38:19 UTC 2020 (1)3 Looking for host 192.168.25.10and service ntp4 host found : ip-192.168.25.10.ap-southeast-1.compute.internal5 transmit(192.168.25.10)6 receive(192.168.25.10)7 transmit(192.168.25.10)8 receive(192.168.25.10)9 transmit(192.168.25.10)10 receive(192.168.25.10)11 transmit(192.168.25.10)12 receive(192.168.25.10)13 server 192.168.25.10, port 123

    14 stratum 6, precision -24, leap 00, trust 000

    15 refid [192.168.25.10], delay 0.02574, dispersion 0.00000

    16 transmitted 4, in filter 4

    17 reference time: e3b0c3eb.878bf296 Tue, Jan 19 2021 10:35:23.529

    18 originate timestamp: e3b0c3f3.442fd9c7 Tue, Jan 19 2021 10:35:31.266

    19 transmit timestamp: e3b0c3f3.47e920c0 Tue, Jan 19 2021 10:35:31.280

    20 filter delay: 0.02574 0.02574 0.02574 0.02576

    21 0.00000 0.00000 0.00000 0.00000

    22 filter offset: -0.01465 -0.01465 -0.01465 -0.01466

    23 0.000000 0.000000 0.000000 0.000000

    24 delay 0.02574, dispersion 0.00000

    25 offset -0.014652

    26

    27 19 Jan 10:35:31 ntpdate[30125]: adjust time server 192.168.25.10 offset -0.014652 sec

    ps:以上ip均已做脱敏处理

    展开全文
  • 一:NTP的工作原理(UDP端口 123)NTP工作原理:上图是NTP的基本工作原理,路由器A和路由器B通过网络连接,它们都有自己独立的系统时钟,要实现各自的系统时钟的自动同步,作如下的假设:—路由器A和B的系统时钟同步...

    一: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

    展开全文
  • 实验目的 通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。2.实验内容 Network Time Protocol(NTP)协议是用来使计算机时间同步化 的一种...
     本文出处:
    10.4 实验内容 ——NTP协议实现
    1.实验目的
         通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。
    2.实验内容

         Network Time Protocol(NTP)协议是用来使计算机时间同步化 的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等)做同步化,它可以提供高精确度的时间校正(LAN上与标准时间差小于1毫秒,WAN上几十毫秒),且可用加密确认的 方式来防止协议攻击。

         NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间是按NTP服务器的等级传 播。按照距离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取 时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构并 相互连接,而Stratum-1的时间服务器是整个系统的基础。
         进行网络协议实现时最重要的是了解协议数据格式。NTP数据包有48个字节,其中NTP包头16字节,时间戳32个字节。其协议格式如图10.9所示。

    图10.9 NTP协议数据格式
         其协议字段的含义如下所示。
          LI:跳跃指示器,警告在当月最后一天的最终时刻插入的迫近闺秒(闺秒)。
          VN:版本号。
       Mode:工作模式。该字段包括以下值:0-预留;1-对称行为;3-客户机;4-服务器;5-广播;6-NTP控制信息。NTP协议具有3种工作模式,分别为主/被动对称模式、客户/服务器模式、广播模式。在主/被动对称模式中,有一对一的连接,双方均可同步对方或被对方同步,先发出申请建立连接的一方工作在主动模式下,另一方工作在被动模式下; 客户/服务器模 式与主/被动模式基本相同,惟一区别在于客户方可被服务器同步,但服务器不能被客户同步;在广播模式中,有一对多的连接,服务器不论客户工作 在何种模式下,都会主动发出时间信息,客户根据此信息调整自己的时间。
         Stratum:对本地时钟级别的整体识别。
         Poll:有符号整数表示连续信息间的最大间隔。
         Precision:有符号整数表示本地时钟精确度。
         Root Delay:表示到达主参考源的一次往复的总延迟,它是有15~16位小数部分的符号定点小 数。
         Root Dispersion:表示一次到达主参考源的标准误差,它是有15~16位小数部分的无符号 定点小数。
         Reference Identifier:识别特殊参考源。
         Originate Timestamp:这是向服务器请求分离客户机的时间,采用64位时标格式。
         Receive Timestamp:这是向服务器请求到达客户机的时间,采用64位时标格式。
         Transmit Timestamp:这是向客户机答复分离服务器的时间,采用64位时标格式。
         Authenticator(Optional):当实现了NTP认证模式时,主要标识符和信息数字域就 包括已定义的信息认证代码(MAC)信息。
         由于NTP协议中涉及比较多的时间相关的操作,为了简化实现过程,在本实验中,仅要求实现NTP协议客户端部分的网络通信模块,也就是构造NTP协议字段 进行发送和接收,最后与时间相关的操作不需进行处理。NTP协议是作为OSI参考模型的高层协议比较适合采用UDP传输协议进行数据传输,专用端口号为 123。在实验中,以国家授时中心服务器(IP地址为 202.72.145.44)作为NTP(网络时间)服务器。 
    3.实验步骤
    (1)画出流程图。
         简易NTP客户端的实现流程如图10.10所示。

    图10.10 简易NTP客户端流程图


    (2)编写程序。
         具体代码如下:
     
    /* ntp.c */
    #include <sys/socket.h>
    #include <sys/wait.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/un.h>
    #include <sys/time.h>
    #include <sys/ioctl.h>
    #include <unistd.h>
    #include <netinet/in.h>
    #include <string.h>
    #include <netdb.h>
     
    #define NTP_PORT                123               /*NTP专 用端口号字符串*/
    #define TIME_PORT               37               /* TIME/UDP端 口号 */
    #define NTP_SERVER_IP        “210.72.145.44” /*国家授时中心 IP*/
    #define NTP_PORT_STR         “123”          /*NTP专用端口号字 符串*/
    #define NTPV1                 “NTP/V1”      /*协议及其版本号*/
    #define NTPV2                 “NTP/V2”
    #define NTPV3                 “NTP/V3”
    #define NTPV4                 “NTP/V4”
    #define TIME                 “TIME/UDP”
     
    #define NTP_PCK_LEN 48
    #define LI 0
    #define VN 3
    #define MODE 3
    #define STRATUM 0
    #define POLL 4
    #define PREC -6
     
    #define JAN_1970 0x83aa7e80 /* 1900年~1970年之间的时间秒数 */
    #define NTPFRAC(x)      (4294 * (x) + ((1981 * (x)) >> 11))

    #define USEC(x)         (((x) >> 12) - 759 * ((((x) >> 10) + 32768) >> 16))

     
    typedef struct _ntp_time
    {

        unsigned int coarse;

        unsigned int fine;

    } ntp_time;
     
    struct ntp_packet
    {

         unsigned char leap_ver_mode;

         unsigned char startum;

         char poll;

         char precision;

         int root_delay;
         int root_dispersion;

         int reference_identifier;

         ntp_time reference_timestamp;

         ntp_time originage_timestamp;

         ntp_time receive_timestamp;

         ntp_time transmit_timestamp;

    };
     
    char protocol[32];
    /*构建NTP协议包*/
    int construct_packet(char *packet)
    {

         char version = 1;

         long tmp_wrd;

         int port;
         time_t timer;
         strcpy(protocol, NTPV3);
         /*判断协议版本*/

         if(!strcmp(protocol, NTPV1)||!strcmp(protocol, NTPV2)

               ||!strcmp(protocol, NTPV3)||!strcmp(protocol, NTPV4))

         {
              memset(packet, 0, NTP_PCK_LEN);
              port = NTP_PORT;
              /*设置16字节的包头*/
              version = protocol[6] - 0x30;

              tmp_wrd = htonl((LI << 30)|(version << 27)

                    |(MODE << 24)|(STRATUM << 16)|(POLL << 8)|(PREC & 0xff));

              memcpy(packet, &tmp_wrd, sizeof(tmp_wrd));

             
              /*设置Root Delay、Root Dispersion和Reference Indentifier */

              tmp_wrd = htonl(1<<16);

              memcpy(&packet[4], &tmp_wrd, sizeof(tmp_wrd));

              memcpy(&packet[8], &tmp_wrd, sizeof(tmp_wrd));

              /*设置Timestamp部分*/
              time(&timer);
              /*设置Transmit Timestamp coarse*/

              tmp_wrd = htonl(JAN_1970 + (long)timer);

              memcpy(&packet[40], &tmp_wrd, sizeof(tmp_wrd));

              /*设置Transmit Timestamp fine*/

              tmp_wrd = htonl((long)NTPFRAC(timer));

              memcpy(&packet[44], &tmp_wrd, sizeof(tmp_wrd));

              return NTP_PCK_LEN;

         }

         else if (!strcmp(protocol, TIME))/* “TIME/UDP” */

         {
              port = TIME_PORT;
              memset(packet, 0, 4);
              return 4;
         }
         return 0;
    }
     
    /*获取NTP时间*/

    int get_ntp_time(int sk, struct addrinfo *addr, struct ntp_packet *ret_time)

    {
         fd_set pending_data;

         struct timeval block_time;

         char data[NTP_PCK_LEN * 8];

         int packet_len, data_len = addr->ai_addrlen, count = 0, result, i, re;

     

         if (!(packet_len = construct_packet(data)))

         {

              return 0;

         }
         /*客户端给服务器端发送NTP协议数据包*/

         if ((result = sendto(sk, data,

                 packet_len, 0, addr->ai_addr, data_len)) < 0)

         {
              perror(“sendto”);

              return 0;

         }
        
         /*调用select()函数,并设定超时时间为1s*/
         FD_ZERO(&pending_data);

         FD_SET(sk, &pending_data);

         block_time.tv_sec=10;
         block_time.tv_usec=0;

         if (select(sk + 1, &pending_data, NULL, NULL, &block_time) > 0)

         {
              /*接收服务器端的信息*/

              if ((count = recvfrom(sk, data,

                            NTP_PCK_LEN * 8, 0, addr->ai_addr, &data_len)) < 0)

              {

                   perror(“recvfrom”);

                   return 0;

              }
             

              if (protocol == TIME)

              {

                   memcpy(&ret_time->transmit_timestamp, data, 4);

                   return 1;

              }

              else if (count < NTP_PCK_LEN)

              {

                   return 0;

              }

    /* 设置接收NTP包的数据结构 */

              ret_time->leap_ver_mode = ntohl(data[0]);

              ret_time->startum = ntohl(data[1]);

              ret_time->poll = ntohl(data[2]);

              ret_time->precision = ntohl(data[3]);

              ret_time->root_delay = ntohl(*(int*)&(data[4]));

              ret_time->root_dispersion = ntohl(*(int*)&(data[8]));

             ret_time->reference_identifier = ntohl(*(int*)&(data[12]));

              ret_time->reference_timestamp.coarse = ntohl *(int*)&(data[16]));

              ret_time->reference_timestamp.fine = ntohl(*(int*)&(data[20]));

              ret_time->originage_timestamp.coarse = ntohl(*(int*)&(data[24]));

              ret_time->originage_timestamp.fine = ntohl(*(int*)&(data[28]));

              ret_time->receive_timestamp.coarse = ntohl(*(int*)&(data[32]));

              ret_time->receive_timestamp.fine = ntohl(*(int*)&(data[36]));

              ret_time->transmit_timestamp.coarse = ntohl(*(int*)&(data[40]));

              ret_time->transmit_timestamp.fine = ntohl(*(int*)&(data[44]));

              return 1;

         } /* end of if select */

         return 0;

    }
     
    /* 修改本地时间 */

    int set_local_time(struct ntp_packet * pnew_time_packet)

    {

         struct timeval tv;

         tv.tv_sec = pnew_time_packet->transmit_timestamp.coarse - JAN_1970;

         tv.tv_usec = USEC(pnew_time_packet->transmit_timestamp.fine);

         return settimeofday(&tv, NULL);

    }
     
    int main()
    {

         int sockfd, rc;

         struct addrinfo hints, *res = NULL;

         struct ntp_packet new_time_packet;

     

         memset(&hints, 0, sizeof(hints));

         hints.ai_family = AF_UNSPEC;

         hints.ai_socktype = SOCK_DGRAM;

         hints.ai_protocol = IPPROTO_UDP;
         /*调用getaddrinfo()函数,获取地址信息*/

         rc = getaddrinfo(NTP_SERVER_IP, NTP_PORT_STR, &hints, &res);

         if (rc != 0)
         {
              perror(“getaddrinfo”);
              return 1;
         }
         /* 创建套接字 */

         sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);

         if (sockfd <0 )
         {
              perror(“socket”);
              return 1;

         }         

    /*调用取得NTP时间的函数*/

         if (get_ntp_time(sockfd, res, &new_time_packet))

         {
              /*调整本地时间*/
              if (!set_local_time(&new_time_packet))
              {

                   printf(“NTP client success!\n”);

              }
         }    
         close(sockfd);

         return 0;

    }
     
         为了更好地观察程序的效果,先用date命令修改一下系统时间,再运行实例程序。运行完了之后再查看系统时间,可以发现已经恢复准确的系统时间了。具体运 行结果如下所示。
     
    $ date -s “2001-01-01 1:00:00”
    2001年 01月 01日 星期一 01:00:00 EST
    $ date
    2001年 01月 01日 星期一 01:00:00 EST
    $ ./ ntp
    NTP client success!
    $ date

    能够显示当前准确的日期和时间了!

    展开全文
  • Linux ntp服务配置

    2019-09-28 09:45:39
    基本每个系统都有要求NTP对时,简单记录一下。 安装ntp服务 yum install -y ntp chkconfig ntpd on 配置/etc/ntpd.conf文件。 vi /etc/ntpd.conf #放行局域网来源 :restrict [你的IP] mask [mask_ip] [parameter]...

    基本每个系统都有要求NTP对时,简单记录一下。

    安装ntp服务

    yum install -y ntp
    chkconfig ntpd on
    配置/etc/ntpd.conf文件。

    vi /etc/ntpd.conf
    #放行局域网来源 :restrict [你的IP] mask [mask_ip] [parameter],nomodify 表明客户端不可以修改服务器的地址
    restrict 192.168.0.0 mask 255.255.0.0 nomodify
    #设置NTP server上层服务器,可以使用默认,如网络不好注释后换下面的
    server time.nist.gov
    配置防火墙

    /sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT
    /etc/rc.d/init.d/iptables save
    service iptables status
    重启ntp服务

    ntpd restart
    手动更新
    NTP服务启动后大约需要3~5分钟的时间才会进行一次时间同步。可以通过命令ntpstat查看同步情况,

    service ntpd stop
    ntpdate time.nist.gov
    ntpstat
    NTP客户端配置
    安装ntp服务

    yum install ntp
    chkconfig ntpd on
    查询可用NTP服务端

    配置/etc/ntpd.conf文件

    vi/etc/ntp.conf
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server 192.178.102.249
    重启ntp服务

    ntpd restart
    检查对时状态

    ntpstat
    ntpq -p
    ntpq -c peers
    ntpq -c assoc

    最后,小编想说:我是一名python开发工程师,
    整理了一套最新的python系统学习教程,
    想要这些资料的可以关注私信小编。

    展开全文
  • Linux ntp时间服务器的搭建和配置 date +"%Z %z" 查看ntp服务器与上层ntp的状态 【命令】ntpq -p remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先 refid:参考上一层ntp主机地址 st:...
  • 实验目的通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。2.实验内容NetworkTimeProtocol(NTP)协议是用来使计算机时间同步化的一种协议,它...
  • 学习的时候也顺便复习了一下如何设置Linux的时间,现在拿出来和大家分享 设置NTP服务器不难但是NTP本身是一个很复杂的协议. 这里只是简要地介绍一下实践方法 和上次一样,下面的实验都在RHEL5上运行   1. ...
  • linux网络编程

    2019-02-13 21:55:30
    开个头,开始学习linux网络编程。 TCP/IP ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(international organization for standardization)国际标准化组织定义的网络分层模型,...
  • 嵌入式Linux网络编程

    2011-09-02 16:50:53
    掌握TCP/IP协议的基础知识 掌握嵌入式Linux基础网络编程 掌握嵌入式Linux高级网络编程 分析理解Ping源代码 能够独立编写客户端、服务器端的通信程序 能够独立编写NTP协议实现程序
  • Map pfn using protections prot .
  • linux平台,基于ntp C编程 时间同步客服端 完整代码 用source G++编译后运行即可
  • 00. 目录 文章目录 00. 目录 01. 组播概述 02. 组播应用分类 03. 组播地址 04. 组播地址与 MAC 地址的关系 05. 套接字选项 06. 程序示例 07.... 附录 7.1 【Linux】一步一步学Linux网络编程教程汇总
  • linux开发难吗?是 Linux初学者经常会问的问题,其实Linux和Windows一样都属于操作系统,对于大部分人来说,对Windows操作系统十分熟悉,而对Linux操作...以下是比较经典的Linux编程学习路线:第一阶段:linux基础...
  • Linux网络编程

    2019-11-22 18:00:06
     NTP: 网络时钟协议  SNMP: 简单网络管理协议(实现对网络设备集中式管理)   RTP/RTSP:用传输音视频的协议(安防监控) 三、网络的封包和拆包: 四、网络编程的预备知识 4.1.SOCKET  4.1.1...
  • NTP时钟源,NTP网络时间源 NTP时钟源,NTP网络时间源NTP时钟源,NTP网络时间源 NTP时钟源,NTP网络时间源一、NTP网络时间源产品特点:NTP网络时间源是针对计算机、自动化装置等进行校时而研发的高科技设备,该产品可从...
  • 最近在学习一些Linux网络编程,这里整理一下TCP相关内容 TCP连接建立 建立连接需要三次握手,对应的socket编程如下(忽略了异常处理): 服务器端 #include <sys/socket.h> #include <arpa/inet.h&
  • Linux网络编程概述

    2020-08-07 16:59:16
    网络编程概述 1.分组交换:对IP报文进行分组,每组包含一个首部,记录分组编号和目的主机地址信息。 分组编号用来进行数据的重组 主机信息用来进行数据的传输 2.交换方式:存储-转发 分组独立地寻址进行路由的跳跃,...
  • linux网络编程:多播(组播)编程

    千次阅读 2018-04-24 11:12:36
    linux多播编程步骤: 1>建立一个socket; 2>设置多播的参数,例如超时时间TTL,本地回环许可LOOP等 3>加入多播组 4>发送和接收数据 5>从多播组离开 多播程序设计使用setsockopt()函数和getsockopt()函数来实现,组播...
  • ntp 38 mysql 500 [root@CentOS6 ~]$ awk -F: '$3+1>=500{printf "%-15s %i\n",$1,$3 > "/dev/stderr" }' /etc/passwd saslauth 499 mysql 500 ########### 特殊文件描述...
  • Linux网络编程——多播

    万次阅读 多人点赞 2015-03-20 20:30:38
    Linux多播编程 套接口选项 int setsockopt( int sockfd, int level,int optname, const void *optval, socklen_t optlen ); 成功执行返回0,否则返回-1 选项 IP_ADD_MEMBERSHIP 和 IP_DROP_MEMBERSHIP 加入或者退出...
  • linux 部署配置ntp server

    2021-08-04 17:07:57
    部署配置ntp server基本概念为什么要用NTPNTP的层次结构安装配置NTP公网ntp内网ntpclient 配置ntpq 的输出NTP配置文件(ntp.config)的一些说明ntpd、ntpdate的区别 基本概念 网络时间协议(NTP)用来同步网络上不同...
  • Linux无锁编程

    2015-08-21 19:24:00
    无锁化编程有哪些常见方法? 针对计数器,可以使用原子加只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟...
  • 第一章 TCP网络编程 1.1 socket创建套接字 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); 功能 创建网络套接字,用于网络...
  • 嵌入式linux busybox ntp时间同步

    千次阅读 2011-05-09 18:39:00
    二、需求这台机器需要定时进行NTP时间同步。同步之后显示给用户的是本地时间。三、过程1.时区的支持(1)hwclock为了查看硬件时钟是否为本地时间,运行命令hwclock –r。结果系统提示:“Could not ope
  • 本人07年11月时实现的NTP网络模型,支持在局域网范围内同步时间。
  • linux多播编程步骤:   1>建立一个socket;     2>设置多播的参数,例如超时时间TTL,本地回环许可LOOP等     3>加入多播组     4>发送和接收数据   ...
  • Linux网络编程】多播、组播

    千次阅读 2016-08-29 22:29:07
    Linux多播编程 套接口选项 int setsockopt( int sockfd, int level,int optname, const void *optval, socklen_t optlen ); 成功执行返回0,否则...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,815
精华内容 1,526
关键字:

linuxntp编程

linux 订阅