NTP的簡介及NTP的基本原理

NTP簡介

定義

網絡時間協議NTP(Network Time Protocol)是TCP/IP協議族裡面的一個應用層協議。NTP用於在一系列分佈式時間服務器與客戶端之間同步時鐘。NTP的實現基於IP和UDP。NTP報文通過UDP傳輸,端口號是123。

目的

隨著網絡拓撲的日益複雜,整個網絡內設備的時鐘同步將變得十分重要。如果依靠管理員手工修改系統時鐘,不僅工作量巨大,而且時鐘的準確性也無法得到保證。NTP的出現就是為了解決網絡內設備系統時鐘的同步問題。

NTP主要應用於網絡中所有設備時鐘需要保持一致的場合,比如:

  • 網絡管理:對從不同路由器採集來的日誌信息、調試信息進行分析時,需要以時間作為參照依據。
  • 計費系統:要求所有設備的時鐘保持一致。
  • 多個系統協同處理同一個複雜事件:為保證正確的執行順序,多個系統必須參考同一時鐘。
  • 備份服務器和客戶機之間進行增量備份:要求備份服務器和所有客戶機之間的時鐘同步。
  • 系統時間:某些應用程序需要知道用戶登錄系統的時間以及文件修改的時間。

NTP基本原理

如圖所示,NTP客戶端和NTP服務器相連,它們都有自己獨立的系統時鐘,現在通過NTP實現系統時鐘自動同步。

設定參數及同步方式如下:

  • 在NTP客戶端和NTP服務器的系統時鐘同步之前,NTP客戶端的時鐘設定為Ta,NTP服務器的時鐘設定為Tb。
  • NTP服務器作為NTP時間服務器,NTP客戶端的時鐘要與NTP服務器的時鐘進行同步。
  • 這裡描述的原理是在NTP客戶端和NTP服務器的系統時鐘精度為0,即完全精確的場景下進行的。

NTP實現圖

NTP的簡介及NTP的基本原理

系統時鐘的同步流程如下:

  1. NTP客戶端在T1時刻發送一個NTP請求報文給NTP服務器,該請求報文攜帶離開NTP客戶端時的時間戳T1。
  2. NTP請求報文到達NTP服務器,此時NTP服務器的時刻為T2。NTP服務器處理之後,於T3時刻發出NTP應答報文。該應答報文中攜帶離開NTP客戶端時的時間戳T1、到達NTP服務器時的時間戳T2、離開NTP服務器時的時間戳T3。
  3. NTP客戶端在T4時刻接收到該應答報文。

通過上面的NTP報文交互,NTP客戶端獲得4個時間參數,分別為T1、T2、T3、T4。由於NTP客戶端和NTP服務器的時鐘完全精確,我們可以通過以下公式計算出NTP客戶端與NTP服務器之間的時間差,也就是NTP客戶端需要調整的時間。

  1. 計算NTP報文從NTP客戶端發送到NTP服務器所需要的時間Delay。
  2. Delay = [ ( T4 - T1 ) - ( T3 – T2 ) ] / 2
  3. 計算NTP客戶端與NTP服務器之間的時間差Offset。
  4. 以T4時刻為例,在這個時刻點,NTP服務器發送過來的報文被NTP客戶端接收到時,服務器的時刻已經為T3 + Delay。那麼時間差Offset可由以下公式進行計算:
  5. T4 + Offset = T3 + Delay
  6. 公式整理之後,Offset = T3 + Delay – T4 = T3 + [ ( T4 - T1 ) - ( T3 – T2 ) ] / 2 – T4 = [ ( T2- T1 ) + ( T3 – T4 ) ] / 2。

NTP客戶端根據計算得到Offset來調整自己的時鐘,實現與NTP服務器的時鐘同步。


分享到:


相關文章: