NTP协议

NTP(Network Time Protocol,网络时间协议)是由RFC
1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。

使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。

对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

NTP工作原理

NTP的基本工作原理如所示。Device A和Device
B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:

在Device A和Device B的系统时钟同步之前,Device
A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。

Device B作为NTP时间服务器,即Device A将使自己的时钟与Device
B的时钟同步。

NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。

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

Device A发送一个NTP报文给Device B,该报文带有它离开Device
A时的时间戳,该时间戳为10:00:00am(T1)。

当此NTP报文到达Device B时,Device
B加上自己的时间戳,该时间戳为11:00:01am(T2)。

当此NTP报文离开Device B时,Device
B再加上自己的时间戳,该时间戳为11:00:02am(T3)。

当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小时。

这样,Device A就能够根据这些信息来设定自己的时钟,使之与Device B的时钟同步。

NTP的报文格式

NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文。控制报文仅用于需要网络管理的场合,它对于时钟同步功能来说并不是必需的,这里不做介绍。

主要字段的解释如下:

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

l              VN(Version
Number):长度为3比特,表示NTP的版本号,目前的最新版本为3。

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

l             
Stratum:系统时钟的层数,取值范围为1~16,它定义了时钟的准确度。层数为1的时钟准确度最高,准确度从1到16依次递减,层数为16的时钟处于未同步状态,不能作为参考时钟。

l              Poll:轮询时间,即两个连续NTP报文之间的时间间隔。

l              Precision:系统时钟的精度。

l              Root Delay:本地到主参考时钟源的往返时间。

l              Root
Dispersion:系统时钟相对于主参考时钟的最大误差。

l              Reference Identifier:参考时钟源的标识。

l              Reference
Timestamp:系统时钟最后一次被设定或更新的时间。

l              Originate
Timestamp:NTP请求报文离开发送端时发送端的本地时间。

l              Receive
Timestamp:NTP请求报文到达接收端时接收端的本地时间。

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

l              Authenticator:验证信息。

NTP的工作模式

设备可以采用多种NTP工作模式进行时间同步:

客户端/服务器模式

对等体模式

广播模式

组播模式

用户可以根据需要选择合适的工作模式。在不能确定服务器或对等体IP地址、网络中需要同步的设备很多等情况下,可以通过广播或组播模式实现时钟同步;客户端/服务器和对等体模式中,设备从指定的服务器或对等体获得时钟同步,增加了时钟的可靠性。
1.
客户端/服务器模式

在客户端/服务器模式中,客户端向服务器发送时钟同步报文,报文中的Mode字段设置为3(客户模式)。服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的Mode字段设置为4(服务器模式)。客户端收到应答报文后,进行时钟过滤和选择,并同步到优选的服务器。

在该模式下,客户端能同步到服务器,而服务器无法同步到客户端。

2. 对等体模式

在对等体模式中,主动对等体和被动对等体之间首先交互Mode字段为3(客户端模式)和4(服务器模式)的NTP报文。之后,主动对等体向被动对等体发送时钟同步报文,报文中的Mode字段设置为1(主动对等体),被动对等体收到报文后自动工作在被动对等体模式,并发送应答报文,报文中的Mode字段设置为2(被动对等体)。经过报文的交互,对等体模式建立起来。主动对等体和被动对等体可以互相同步。如果双方的时钟都已经同步,则以层数小的时钟为准

3. 广播模式

在广播模式中,服务器端周期性地向广播地址255.255.255.255发送时钟同步报文,报文中的Mode字段设置为5(广播模式)。客户端侦听来自服务器的广播报文。当客户端接收到第一个广播报文后,客户端与服务器交互Mode字段为3(客户模式)和4(服务器模式)的NTP报文,以获得客户端与服务器间的网络延迟。之后,客户端就进入广播客户端模式,继续侦听广播报文的到来,根据到来的广播报文对系统时钟进行同步。

4. 组播模式

在组播模式中,服务器端周期性地向用户配置的组播地址(若用户没有配置组播地址,则使用默认的NTP组播地址224.0.1.1)发送时钟同步报文,报文中的Mode字段设置为5(组播模式)。客户端侦听来自服务器的组播报文。当客户端接收到第一个组播报文后,客户端与服务器交互Mode字段为3(客户模式)和4(服务器模式)的NTP报文,以获得客户端与服务器间的网络延迟。之后,客户端就进入组播客户模式,继续侦听组播报文的到来,根据到来的组播报文对系统时钟进行同步。

时间: 2024-10-14 00:38:22

NTP协议的相关文章

实现基于NTP协议的网络校时功能

无论PC端还是移动端系统都自带时间同步功能,基于的都是NTP协议,这里使用C#来实现基于NTP协议的网络校时功能(也就是实现时间同步). 1.NTP原理 NTP[Network Time Protocol]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击. 先介绍下NTP数据包格式(其标准化文档为RFC2030,NTP版本

NTP协议详解

NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能.提供NTP对时的服务器有很多,比如微软的NTP对时服务器,利用NTP服务器提供的对时功能,可以使我们的设备时钟系统能够正确运行. NTP报文格式 NTP报文格式如上图所示,它的字段含义参考如下: LI 闰秒标识器,占用2个bit VN 版本号,占用3个bits,表示NTP的版本号,现在为3 Mode 模式,占用3个

ntp ntp协议

在维护网络设备或者linux系统设备的时候,时间同步是非常重要的,如应用程序服务,数据库,等工具都是非常依赖数据库的,一般敏感的时差需要在3s内,普通工具和程序时差也不能超过60s,所以时间服务器是很重要的基础设施. 常用的模式: C/S模式 如图: 请求报文:ntp基于UDP协议传输,应用端口是123端口. 其中(Mode为3表示客户端请求)Mode:长度为3比特,表示NTP的工作模式.不同的值所表示的含义分别是:0未定义.1表示主动对等体模式.2表示被动对等体模式.3表示客户模式.4表示服务

通过NTP协议进行时间同步

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 GetNetworkTime(); 6 } 7 8 public static DateTime GetNetworkTime() 9 { 10 //default Windows time server 11 const string ntpServer = "clock.via.net"; 12 13 // NTP message size - 16 bytes

ntp服务器被反射放大攻击的处理方法

前言: 首先说明下什么是反射放到攻击? NTP是用UDP传输的,所以可以伪造源地址.NTP协议中有一类查询指令,用短小的指令即可令服务器返回很长的信息.放大攻击就是基于这类指令的.比如,小明以吴一帆的名义问李雷"我们班有哪些人?" 李雷就回答吴一帆说"有谁谁谁和谁谁谁--"(几百字)那么小明就以8个字的成本,令吴一帆收到了几百字的信息,所以叫做放大攻击.网络上一般NTP服务器都有很大的带宽,攻击者可能只需要1Mbps的上传带宽欺骗NTP服务器,即可给目标服务器带来几

ntp服务器的搭建

第1章 NTP时间服务器 1.1 NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的计算机时间同步的一种协议. NTP服务器利用NTP协议来提供时间同步服务. 1.2 环境准备 1.2.1主机规划表 主机名    服务器/客户    外网IP          内网IP ntp-s      Server       10.0.0.41        172.16.1.41 ntp-c      Client       10.0.0.31      

NTP服务一大波安全漏洞已修复,请尽快升级

据US-CERT披露,最近在ntpd服务中发现了大量安全缺陷,ntpd是网络时间协议NTP的服务进程,绝大多数的服务器和各种设备都采用它来处理时间相关的任务. 虽然有多种NTP的服务进程,但是我们一般说的都是指NTP.org的ntpd服务进程,它也是大部分服务器和设备所用的版本.在今年的一月和四月它分别修复了两大批安全漏洞. 据Cisco说,一些漏洞会导致DoS攻击或者直接跳过认证过程,Cisco是负责推动对NTP进行安全评估的Linux基金会核心基础架构计划Linux Foundation C

The Reflection And Amplification Attacks && NTP Reply Flood Attack Based On NTP

目录 1. NTP简介 2. NTP协议格式 3. NTP Reflect反射漏洞和NTP协议的关系 4. 漏洞触发的前提和攻击需要的步骤 5. 针对漏洞的攻防思考 1. NTP简介 Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击. NTP提供准确时间,首先要有准确的时

Http协议网络对时工具

2009-09-17 11:52:31 专业的网络对时软件大多采用NTP协议来获取专业时间服务器时间对时,也有采用SNTP协议的,本来也想做个SNTP或NTP协议的对时工具自己用,虽然我手上也有好几个采用NTP协议对时的软件,但是使用过程中发现通过网通的网络上网的话,这些软件全部都无法接收到时间服务器返回的,原先不了解NTP协议的时候以为是程序本身有什么问题,因为通过电信的网络上网的话一切正常,而我的网通网络都是通过路由器分支出来多台共享上网的.等到想自己做个玩玩的时候,研究了一下NTP协议才知