ntp协议原理 对时(转载)
NTP(Network Time Protocol)網絡時間協議基于UDP,用于網絡時間同步的協議,使網絡中的計算機時鐘同步到UTC,再配合各個時區的偏移調整就能實現精準同步對時功能。提供NTP對時的服務器有很多,比如微軟的NTP對時服務器,利用NTP服務器提供的對時功能,可以使我們的設備時鐘系統能夠正確運行。
NTP報文格式
NTP報文格式如上圖所示,它的字段含義參考如下:
LI 閏秒標識器,占用2個bit
VN 版本號,占用3個bits,表示NTP的版本號,現在為3
Mode 模式,占用3個bits,表示模式
stratum(層),占用8個bits
Poll 測試間隔,占用8個bits,表示連續信息之間的最大間隔
Precision 精度,占用8個bits,,表示本地時鐘精度
Root Delay根時延,占用8個bits,表示在主參考源之間往返的總共時延
Root Dispersion根離散,占用8個bits,表示在主參考源有關的名義錯誤
Reference Identifier參考時鐘標識符,占用8個bits,用來標識特殊的參考源
參考時間戳,64bits時間戳,本地時鐘被修改的最新時間。
原始時間戳,客戶端發送的時間,64bits。
接受時間戳,服務端接受到的時間,64bits。
傳送時間戳,服務端送出應答的時間,64bits。
認證符(可選項)
拋開復雜的協議報文,我們來理解一下NTP客戶端與服務器的交互過程,進而理解參考時間戳、原始時間戳、接受時間戳、傳送時間戳的關系。如圖,客戶端和服務端都有一個時間軸,分別代表著各自系統的時間,當客戶端想要同步服務端的時間時,客戶端會構造一個NTP協議包發送到NTP服務端,客戶端會記下此時發送的時間t0,經過一段網絡延時傳輸后,服務器在t1時刻收到數據包,經過一段時間處理后在t2時刻向客戶端返回數據包,再經過一段網絡延時傳輸后客戶端在t3時刻收到NTP服務器數據包。特別聲明,t0和t3是客戶端時間系統的時間、t1和t2是NTP服務端時間系統的時間,它們是有區別的。對于時間要求不那么精準設備,直接使用NTP服務器返回t2時間也沒有太大影響。但是作為一個標準的通信協議,它是精益求精且容不得過多誤差的,于是必須計算上網絡的傳輸延時。客戶端與服務端的時間系統的偏移定義為θ、網絡的往返延遲定義為δ,基于此,可以對t2進行精確的修正,已達到相關精度要求,它們的計算公式如下:
式中:
t0是請求數據包傳輸的客戶端時間戳
t1是請求數據包回復的服務器時間戳
t2是響應數據包傳輸的服務器時間戳
t3是響應數據包回復的客戶端時間戳
對此,我們只需將NTP服務端返回的時間t2加上網絡延時δ的一半就可以了(t2+δ/2)。
常用的NTP服務端站點
time.windows.com
time.nist.gov
s1a.time.edu.cn
s1c.time.edu.cn
time-nw.nist.gov
time-a.nist.gov
time-b.nist.gov
s1b.time.edu.cn
nist1.aol-ca.truetime.com
總結:
NTP協議作為常用的通信協議,各種參考資料齊全,本文做一次梳理,以加深對NTP協議的理解。參考:
https://zh.m.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E6%99%82%E9%96%93%E5%8D%94%E5%AE%9A
https://wenku.baidu.com/view/4ab65c3ec850ad02de80418e.html
總結
以上是生活随笔為你收集整理的ntp协议原理 对时(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI 换脸有风险,拟我表情、Face I
- 下一篇: C#读写基恩士PLC 使用TCP/IP