NTP協議


NTP協議詳解

1、前言

NTP(Network Time Protocol)網絡時間協議,他是用來同步網絡中各計算機的時間的協議。它的用途是把計算機的時鍾同步到世界協調時UTC,其精度在局域網內可達0.1ms,在互聯網上絕大多數的地方其精度可以達到1-50ms。

2、NTP報文格式

2.1 報文結構

 

 

 2.2 字段含義

NTP報文格式如上圖所示,它的字段含義參考如下:

LI( 閏秒標識器 ),占用2bits,值為“11”時表示告警狀態,時鍾未被同步;其他值時NTP本身不做處理

1:no warning 未告警

2:last minute of the day has 61 seconds 最后一分鍾有61秒

3:last minute of the day has 59 seconds 最后一分鍾有59秒

4:unknown (clock unsynchronized) 未知(時鍾未同步)

VN( 版本號 ),占用3bits,表示NTP的版本號,目前最新版本為4.

Mode( 模式 ),占用3bits,表示NTP的工作模式;不同的值所表示的含義分區是:

0:reserved 未定義

1:symmetric active 表示主動對等模式

2:symmetric passive 表示被動對等模式

3:client 表示客戶模式

4:server 表示服務器模式

5:broadcast 表示廣播模式或組播模式

6:NTP control message 表示此報文NTP控制報文

7:reserved for private use 預留給內部使用

Stratum( 層 ),系統時鍾的層數,占用8bits;

0 :unspecified or invalid 未指定或無效

1 :primary server (e.g., equipped with a GPS receiver) 主服務器

2-15 :secondary server (via NTP) 輔助服務器

16 :unsynchronized 不同步

17-255:reserved 保留

Poll( 輪詢間隔 ),占用8bits,表示兩個NTP報文之間的最大時間間隔,以log2秒為單位,默認最小和最大的輪詢間隔為6和10。

Precision( 精度 ),占用8bits,表示系統時鍾的精度,以log2秒為單位

Root Delay( 根時延 ),占用8bits,表示在到參考時鍾的總往返的時延

Root Dispersion( 根離散 ),占用8bits,表示到參考時鍾的總色散

Reference Identifier( 參考時鍾標識符),占用32bits,用來標識特殊的參考源

Reference Timestamp( 參考時間戳 ),占用64bits,系統時鍾最后一次被修改的本地時間

Origin Timestamp( 原始時間戳 ),占用64bits,NTP請求報文離開發送端時發送端的本地時間

Receive Timestamp( 接受時間戳 ,占用64bits,NTP請求報文到達接收端的本地時間

Transmit Timestamp( 傳送時間戳 ),占用64bits,NTP應答報文離開應答者時的應答者本地時間

Destination Timestamp( 目的時間戳 ),NTP應答包從服務器到達客戶端的時間,(注:該字段不在標題字段中,它在數據包到達時確定,並在數據包緩沖區數據包結構中體現。)

Extension Field 2 ( 擴展字段,可變 )

Key Identifier ( 密鑰標識符 ):客戶端和服務器用於指定128位MD5哈希值

dgst( Message Digest,消息摘要 ):NTP數據包頭和擴展字段

 

3、NTP工作模式

3.1 單播客戶端/服務器模式

1) 客戶模式:運行在客戶模式的主機定期向服務器端發送報文,報文中的Mode字段被設置為3(客戶模式),不管服務器端是否可達及服務器端的層數。運行在這種模式的主機,通常是網絡內部的工作站,它可以依照對方的時鍾進行同步,但不會修改對方的時鍾。

·2)服務器模式:運行在服務器模式的主機接收並回應報文,報文中的Mode字段設置為4(服務器模式),運行在服務器模式的主機,通常是網絡內部的時間服務器,它可以向客戶端提供同步信息,但不會修改自己的時鍾。

運行在客戶模式的主機在重新 啟動時和重新啟動后定期向運行在服務器模式的主機發送NTP報文;服務器收到客戶端的報文后,首先將報文的目的IP地址和目的端口號分別與其源IP地址和源端口號相互相互交換,在填寫所需要的信息,然后把報文發送給客戶端。服務器在客戶端發送請求之間無需保留任何狀態信息,客戶端根據本地情況自由管理發送報文的時間間隔。

 

3.2 對等體模式

對等體模式下,主動對等體和被動對等體可以互相同步,等級第(層數大)的對等體向等級高(層數小)的對等體同步,主動對等體和被動對等體之間首先交互Mode字段為3(客戶模式)和4(服務器模式)的NTP報文。

1)主動對等體:運行在這一模式下的主機定期發送報文,報文中的Mode設置為1(主動對等體)。在不考慮它的對等體是否可達以及對等體的層數,運行在這一模式下的主機可以向對方提供同步信息,也可以依照對方的時間信息同步本地時鍾。

2)被動對等體:運行在這一模式的主機接收並回應報文,報文中的Mode字段設置為2(被動對等體)。運行在被動對等體模式的主機可以向對方提供同步信息,也可以依照對方的時間信息同步本地時鍾。

3)運行被動對等體模式的必備條件:本機接收的報文來自一個運行在主動對等體模式下的對等體,且該對等體的層數等於或低於本機並路由可達

注:被動對等體模式運行在同步子網中層次較低層上時:這種模式下,不需要預先知道對等體的特性,因為只有當本機收到NTP報文時才建立連接及相關的狀態變量。

 

 

3.3 廣播模式

1)運行在廣播模式下,周期性向廣播地址“255.255.255.255”發送時鍾同步報文,報文中的Mode字段設置為5(廣播/組播模式)。不管它的對等體是否可達或層數為多少。運行在廣播模式的主機通常是網絡內運行高速廣播介質的時間服務器,向所有對等體提供同步信息,但不會修改自己的時鍾。

2)客戶端偵聽來自服務器的廣播消息包。當接收到第一個廣播消息包后,客戶端與服務器交互Mode字段為3(客戶模式)和4(服務器模式)的NTP報文,即客戶端先啟用一個短暫的服務器/客戶端模式與遠程服務器交換消息,以獲得客戶端與服務器間的網絡延遲。之后恢復廣播模式,繼續偵聽廣播消息包的到來,根據導來的廣播消息包對本地時鍾再次進行同步。

廣播模式應用在有多台工作站、不需要很高的准確度的高速網絡。典型的情況是網絡中的一台或多態時間服務器定期向工作站廣播報文,廣播報文在毫秒級的延遲基礎上確定時間。

3.4 組播模式

1)服務器端周期向組播地址發送時鍾同步報文,報文中的Mode字段設置為5(廣播/組播模式)。運行組播模式的主機通常是網絡內運行高速廣播戒指的時間服務器,向所有對等體提供同步信息,但不會修改自己的時鍾。

2)客戶端偵聽來自服務器的組播消息包,當接收導第一個組播消息包后,當客戶端接收到第一個組播報文后,客戶端與服務器交互Mode字段為3(客戶模式)和4(服務器模式)的NTP報文,即客戶端先啟用一個短暫的服務器/客戶模式與遠程服務器交換消息,以獲得客戶端與服務器間的網絡延遲,之后,客戶端恢復組播模式,繼續偵聽組播消息包的到來,根據到來的組播消息包對本地時鍾進行同步。

3)組播模式適用於有大量客戶端分布在網絡中的情況。通過在網絡中使用NTP組播模式,NTP服務器發送的組播消息包可以到達網絡中所有的客戶端,從而降低由於NTP報文過多而給網絡的造成的壓力。

 

3.5 Kiss-o`-Death(KOD)

KOD報文為客戶端提供狀態報告和接入控制等信息。在服務器上是能KOD后,服務器回向客戶端發送DENY和RATE kiss碼。

1)當客戶端接收到DENY kiss碼,客戶端將斷開與服務器的所有連接,並停止向服務器發送報文。

2)當客戶端接收到RATE kiss碼,客戶端將立即縮短與該服務器的輪詢時間間隔,且以后每次接收到RATE kiss碼,輪詢時間間隔都會進一步縮短。

 

4、NTP工作原理

NTP工作原理圖

 

1. 客戶端發送一個NTP消息包給服務器,該消息包攜帶該包離開客戶端時的時間戳。假設該時間戳為10:00:00am(T1)

2. 當此NTP消息包到達服務器時,服務器加上自己的時間戳,假設該時間戳為11:00:01am(T2)

3. 當次NTP消息包離開服務器時,路由器在加上該包離開自己的時間戳,假設該時間戳為11:00:02am(T3)

4. 當客戶端接收到該響應消息包是,加上一個新的時間戳,假設該時間戳為10:00:03am(T4)

至此,客戶端已經擁有足夠的信息來計算兩個重要的參數:

NTP消息來回一個周期的實驗Delay=(T4-T1)-(T3-T2);

客戶端相對於服務端的時間差Offset=((T2-T1)-(T4-T3))/2

綜上所述,客戶端就能根據這些信息來設定自己的時鍾,使之與服務器的時鍾同步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM