NTP(Network Time Protocol,網絡時間協議)是由RFC 1305定義的時間同步協議,用來在分佈式時間服務器和客戶端之間進行時間同步。NTP基於UDP報文進行傳輸,使用的UDP端口號爲123。服務器
使用NTP的目的是對網絡內全部具備時鐘的設備進行時鐘同步,使網絡內全部設備的時鐘保持一致,從而使設備可以提供基於統一時間的多種應用。網絡
對於運行NTP的本地系統,既能夠接收來自其餘時鐘源的同步,又能夠做爲時鐘源同步其餘的時鐘,而且能夠和其餘設備互相同步。併發
NTP工做原理分佈式
NTP的基本工做原理如圖所示。Device A和Device B經過網絡相連,它們都有本身獨立的系統時鐘,須要經過NTP實現各自系統時鐘的自動同步。爲便於理解,做以下假設:spa
在Device A和Device B的系統時鐘同步以前,Device A的時鐘設定爲10:00:00am,Device B的時鐘設定爲11:00:00am。blog
Device B做爲NTP時間服務器,即Device A將使本身的時鐘與Device B的時鐘同步。ci
NTP報文在Device A和Device B之間單向傳輸所須要的時間爲1秒。開發
系統時鐘同步的工做過程以下:同步
Device A發送一個NTP報文給Device B,該報文帶有它離開Device A時的時間戳,該時間戳爲10:00:00am(T1)。it
當此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報文,以得到客戶端與服務器間的網絡延遲。以後,客戶端就進入組播客戶模式,繼續偵聽組播報文的到來,根據到來的組播報文對系統時鐘進行同步。