NTP協議和算法-IT運維
2020-06-03 17:22 作者:艾銻無限 瀏覽量:
NTP協議和算法-IT運維
IT運維工作,以服務為中心,以穩定、安全、高效為三個基本點,確保公司的互聯網業務能夠 7×24 小時為您提供高質量的服務。
下面由網絡運維工程師為您講解專業的NTP協議和算法
NTP:Network Time Protocol,網絡時間協議,用于時間同步,它可以提供高精準度的時間校正(LAN上與標準時間差小于1毫秒,WAN上幾十毫秒),且可通過加密確認的方式來防止惡意攻擊。
NTP校時原理:
每一個時間包內包含最近一次的事件的時間信息、包括上次事件的發送與接收時間、傳遞現在事件的當地時間、及此包的接收時間。在收到上述包后即可計算出時間的偏差量與傳遞資料的時間延遲。時間服務器利用一個過濾演算法,及先前八個校時資料計算出時間參考值,判斷后續校時包的精確性,一個相對較高的離散程度,表示一個對時資料的可信度比較低。僅從一個時間服務器獲得校時信息,不能校正通訊過程所造成的時間偏差,而同時與許多時間服務器通信校時,就可利用過濾算法找出相對較可靠的時間來源,然后采用它的時間來校時。
時間信息的傳輸都使用UDP協議。
NTP協議格式:
NTP packet = NTP header + Four TimeStamps = 48byte
NTP header : 16byte
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
|LI | VN |Mode | Stratum | Poll | Precision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
LeapYearIndicator : 2bit
VersionNumber : 3bit
Stratum : 8bit
Mode : 3 bit
PollInterval : 8 bit
Percision : 8bit
| Root Delay |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Root delay : 32bit
| Root Dispersion |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Root Dispersion : 32bit
| Reference Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Reference Identifier : 32bit
Four TimeStamps : 32byte
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Reference Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Reference Timestamp : 64bit
| Originate Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Originate Timestamp : 64bit
| Receive Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Receive Timestamp : 64bit
| Transmit Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Transmit Timestamp : 64bit
| Authenticator (optional) (96) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Network Time Protocol使用port 123,64 bits的binary number,前32 bits和Time Protocol一樣,后32 bits用以表示秒以下的部份,并加上網絡延時量的估計.理論上可以精確到到2的-32次方秒,實際使用大約只有50ms(廣域網)左右,在局域網可達1ms。在實際中您應找最近而且最穩定的Server作時間源。
SNTP算是NTP的一個子集,它不像NTP可以同時和多個Server對時, 一般在Client端下使用。