時間同步協議NTP - 原理&實踐

warm3snow發表於2024-04-01

主頁

  • 個人微信公眾號:密碼應用技術實戰
  • 個人部落格園首頁:https://www.cnblogs.com/informatics/

引言

時間是一種人類幻覺 ——— 愛因斯坦。愛因斯坦的相對論闡述:時間並非一個絕對的、客觀的實體,而是相對於觀察者和參考系的一種主觀幻覺。

雖然愛因斯坦的時間觀相對性很難被理解,但索性的是我們在使用時間時並不需要理解複雜的物理理論。一年的春夏秋冬是時間,早上的鬧鈴也是時間,996😭的工作也指的是時間,我們的歷史傳記有編年史,新年伊始我們也用時間來進行未來一年的規劃。

時間無處不在,又如此重要。

本文內容組織:

  • 時間同步協議
  • NTP簡介
  • NTP工作原理
  • 實踐&應用
  • 總結
  • 參考資料

時間同步協議

時間在計算機系統中至關重要的。它不僅僅是為了顯示當前的日期和時間,而是為了確保系統的正常執行、安全性、一致性和效能。準確的時間資訊對於計算機系統的各個方面都是必不可少的。

  • 同步和協調:時間提供了一個共同的參考點,確保計算機系統中的元件和程序按照正確的順序執行,保持系統的穩定性和一致性。
  • 安全和認證:時間在電腦保安和認證中起著關鍵作用,用於驗證和保護系統,包括數字證書的有效期限、身份驗證令牌的時間同步和防止重放攻擊等。
  • 記錄和分析:時間戳在記錄和日誌中起著重要作用,幫助我們瞭解事件發生的順序、持續時間和時間間隔,以及在任務排程和效能分析中確定任務優先順序、執行時間和延遲等方面的應用。
  • 資料一致性和複製:在分散式系統中,時間對於確保資料一致性和複製的正確性非常重要。時間戳可以用於確定事件的順序,從而確保資料在不同節點之間的正確複製和同步。

計算機的系統時間一般來自兩部分:
image

  • 系統時鐘:表示計算機的系統時間,由作業系統維護,定期進行更新和校準。
  • 本地更新:計算機一般內部都配置RTC硬體裝置,當作業系統啟動時會查詢RTC並設定系統時鐘。但RTC有個問題就是,會有誤差,並且誤差會累積,因此當時間拉長,系統時鐘會越來越不準確,因此需要定期校準。
  • 校準:本地計算機透過時間同步協議定期同步遠端時間伺服器時間,並對本地系統時鐘進行微調校準。
  • 時間同步協議:透過該協議對本地系統時鐘進行校準
  • 時間伺服器:透過更高精密的物理裝置,提供高精度時間。時間源如:高精度原子鐘,GPS衛星時間、其他時間伺服器等

常見的時間同步協議如下:

時間同步協議 名稱 優點 缺點 常用領域
NTP Network Time Protocol - 廣泛應用於網際網路和區域網環境
- 可擴充套件性和靈活性好
- 精度相對較低
- 受網路延遲和時鐘漂移影響
網際網路、區域網
PTP Precision Time Protocol - 高精度時間同步
- 微秒級或納秒級精度
- 需要專用硬體支援
- 配置和部署複雜
工業自動化、金融交易系統
GPS Global Positioning System - 提供高精度時間資訊
- 全球範圍可用
- 需要接收GPS訊號的可見性
- 受天氣和地理條件影響
科學研究、導航、定位
RTS Radio Time Signals - 提供時間訊號廣播
- 一些國家和地區可用
- 受地理限制
- 精度相對較低
特定地區的時間同步需求

注:網際網路中一般使用NTP協議進行計算機之間的時間同步。

NTP簡介

NTP(Network Time Protocol): 是一種用於網路時間同步的協議。它旨在確保計算機和其他網路裝置具有準確的時間,並透過與時間伺服器進行通訊來同步其時鐘。

NTP伺服器: 是提供時間服務的特定伺服器,它們透過網路向客戶端提供準確的時間資訊。這些伺服器通常與原子鐘或其他高精度時間源同步,以確保提供高度準確的時間。

NTP發展

NTP協議的發展經歷了多個版本,從v1到v4,每個版本都引入了新的特性和功能。

image
注:以上圖片來自Wikipedia

以下是每個版本的特點簡要概述:

  • NTP v1:最早的NTP版本,於1985年釋出。它是一個簡單的協議,主要用於時間同步和基本的時鐘校準。
  • NTP v2:於1988年釋出,引入了一些改進,如更好的時鐘校準演算法和更準確的時間同步。
  • NTP v3:於1992年釋出,是第一個廣泛使用的NTP版本。它引入了一些重要的特性,包括對稱性和客戶端/伺服器模式、更準確的時鐘校準演算法、更好的時鐘選擇演算法以及更強大的安全性。
  • NTP v4:於2010年釋出,是目前最新和最廣泛使用的NTP版本。它引入了許多新特性和改進,包括更準確的時鐘選擇演算法、更強大的安全性和認證機制、更好的時鐘校準演算法、更靈活的配置選項等。

SNTP(Simple Network Time Protocol):是NTP的簡化版本,旨在提供基本的時間同步功能。由於SNTP實現了一部分NTPv4功能,因此SNTPv4相關實現已經合入到NTPv4。與NTP相比,SNTP協議主要關注基本的時間同步功能,功能較少,更加易於理解和實現,不過時間同步精度較差。因此SNTP適合一些對時間精度和可靠性要求不是特別高的網際網路或區域網。

NTP的工作原理

NTP工作流程

image

假設本地計算機和時間伺服器通訊時間如下:
image

  • T1:時間同步請求時間
  • T2:時間伺服器接收到請求時間
  • T3:時間伺服器響應時間
  • T4: 時間同步請求響應時間
delay = 

NTP服務分層結構

NTP服務一般採用分層結構實現,從Stratum 0到Stratum 15不等。,Stratum(層)指的是時間源的層級結構。每個時間源都被分配到一個特定的層級,以下是對Stratum分層結構示意圖:
image

  • Stratum:Stratum 0是最高層級,代表原子鐘、GPS接收器或其他高精度的時間源。Stratum 1是直接與Stratum 0時間源相連的伺服器,Stratum 2是與Stratum 1伺服器相連的伺服器,以此類推。
  • 分層的目的:分層結構有助於建立時間同步的可靠性和穩定性。透過分層,NTP協議可以避免時間環路和錯誤傳播,確保時間同步的準確性和可靠性。
  • 分層時間精度:不同層級的時間源具有不同的精確度。Stratum 0時間源通常具有最高的精確度,因為它們直接從原子鐘或衛星接收到高精度的時間訊號。隨著層級的增加,精確度可能會略微降低,但在整個NTP網路中,精確度通常仍然非常高。
  • 時間同步過程:較低層級的伺服器會定期向較高層級的伺服器傳送時間請求。較高層級的伺服器使用自己的時鐘和與更高階別的時間源的同步資訊來響應這些請求。透過這種方式,時間資訊從更高階別的時間源傳播到較低階別的伺服器,實現整個網路中的時間同步。

注: 網際網路主機通常會同步到Stratum 2或Stratum 3級別的時間伺服器。這是因為Stratum 2和Stratum 3級別的時間伺服器已經透過Stratum 1級別的時間伺服器與高精度的時間源進行了同步,提供了足夠準確的時間資訊,滿足大多數應用的需求。

實踐&應用

這裡主要介紹demo以及相關應用

總結

在這裡總結本文的主要內容和結論,強調解決問題的重要性和意義。
在這裡展望未來的發展方向和可能的研究方向,讓讀者瞭解本文的研究價值和意義。

參考資料

在這裡列出本文所引用的參考文獻,讓讀者瞭解本文的來源和參考資料。

  • 參考資料1
  • 參考資料2

微信公眾號:密碼應用技術實戰
部落格園首頁:https://www.cnblogs.com/informatics/

相關文章