NTP報文格式


出處:https://blog.csdn.net/dosthing/article/details/81588219?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-1.control

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

  1. LI 閏秒標識器,占用2個bit
  2. VN 版本號,占用3個bits,表示NTP的版本號,現在為3
  3. Mode 模式,占用3個bits,表示模式
  4. stratum(層),占用8個bits
  5. Poll 測試間隔,占用8個bits,表示連續信息之間的最大間隔
  6. Precision 精度,占用8個bits,,表示本地時鍾精度
  7. Root Delay根時延,占用8個bits,表示在主參考源之間往返的總共時延
  8. Root Dispersion根離散,占用8個bits,表示在主參考源有關的名義錯誤
  9. Reference Identifier參考時鍾標識符,占用8個bits,用來標識特殊的參考源    
  10. 參考時間戳,64bits時間戳,本地時鍾被修改的最新時間。
  11. 原始時間戳,客戶端發送的時間,64bits。
  12. 接受時間戳,服務端接受到的時間,64bits。
  13. 傳送時間戳,服務端送出應答的時間,64bits。
  14. 認證符(可選項)

 

拋開復雜的協議報文,我們來理解一下NTP客戶端與服務器的交互過程,進而理解參考時間戳、原始時間戳、接受時間戳、傳送時間戳的關系。如圖,客戶端和服務端都有一個時間軸,分別代表着各自系統的時間,當客戶端想要同步服務端的時間時,客戶端會構造一個NTP協議包發送到NTP服務端,客戶端會記下此時發送的時間t0,經過一段網絡延時傳輸后,服務器在t1時刻收到數據包,經過一段時間處理后在t2時刻向客戶端返回數據包,再經過一段網絡延時傳輸后客戶端在t3時刻收到NTP服務器數據包。特別聲明,t0和t3是客戶端時間系統的時間、t1和t2是NTP服務端時間系統的時間,它們是有區別的。對於時間要求不那么精准設備,直接使用NTP服務器返回t2時間也沒有太大影響。但是作為一個標准的通信協議,它是精益求精且容不得過多誤差的,於是必須計算上網絡的傳輸延時。客戶端與服務端的時間系統的偏移定義為θ、網絡的往返延遲定義為δ,基於此,可以對t2進行精確的修正,已達到相關精度要求,它們的計算公式如下:

式中:

t0是請求數據包傳輸的客戶端時間戳

t1是請求數據包回復的服務器時間戳

t2是響應數據包傳輸的服務器時間戳

t3是響應數據包回復的客戶端時間戳

對此,我們只需將NTP服務端返回的時間t2加上網絡延時δ的一半就可以了(t2+δ/2)。

 


免責聲明!

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



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