NTP最典型的授時方式是Client/Server方式,如下圖所示:
客戶模式:執行在客戶模式的主機定期向伺服器端傳送報文,不管伺服器端是否可達及伺服器端的層數。執行在這種模式的主機可以依照對方的時鐘進行同步,但不會修改對方的時鐘。
伺服器模式:執行在伺服器模式的主機接收並回應報文。執行在伺服器模式的主機可以向用戶端提供同步資訊,但不會修改自己的時鐘。
執行在廣播模式下,週期性向IPv4格式的廣播地址傳送時鐘同步報文,不管它的對等體是否可達或層數為多少。執行在廣播模式的主機通向所有對等體提供同步資訊,但不會修改自己的時鐘。
使用者端偵聽來自伺服器的廣播訊息包。當接收到第一個廣播訊息包後,為估計網路延遲,使用者端先啟用一個短暫的伺服器/使用者端模式與遠端伺服器交換訊息,之後恢復廣播模式,繼續偵聽廣播訊息包的到來,根據到來的廣播訊息包對本地時鐘再次進行同步。
廣播模式應用在有多臺工作站、不需要準確度很高的高速區域網。典型的情況是區域網中的一臺或多臺時間伺服器定期向工作站傳送廣播報文,廣播報文在毫秒級的延遲基礎上確定時間。
在採用多臺時間伺服器的情況下,為了提高可靠性,需要改進時鐘選擇演演算法。
伺服器端週期性向IPv4/IPv6格式的組播地址傳送時鐘同步報文。執行在組播模式的主機通常是區域網內執行高速廣播媒介的時間伺服器,向所有對等體提供同步資訊,但不會修改自己的時鐘。
使用者端偵聽來自伺服器的組播訊息包。當接收到第一個組播訊息包後,為估計網路延遲,使用者端先啟用一個短暫的伺服器/使用者端模式與遠端伺服器交換訊息。使用者端恢復組播模式後,繼續偵聽組播訊息包的到來,根據到來的組播訊息包對本地時鐘進行同步。
多播模式下的使用者端週期性地向IPv4/IPv6組播地址傳送請求報文,尋找連線的最小數目。該過程採用如下方式進行:TTL(time-to-live)初始為1,每次累加1,直到達到最小連線數,或者TTL值達到上限。若TTL達到上限,而使用者端調動的連線數仍不夠,則使用者端將停止一個超時週期的資料傳輸以清除所有連線,然後重複上述過程。若使用者端調動的連線數達到了最小值,則每過一個超時週期,使用者端都會傳送一個報文,以保持連線。
TTL域內的多播伺服器持續偵聽報文。若某個伺服器可以被同步,則伺服器將使用使用者端的單播地址返回報文(Mode欄位設定為4)
多播模式適用於伺服器分散分佈在網路中的情況。使用者端可以發現與之最近的多播伺服器,並進行同步。多播模式適用於伺服器不穩定的組網環境中,伺服器的變動不會導致整網中的使用者端重新進行設定。
欄位 | 長度 | 含義 |
---|---|---|
LI(Leap Indicator) | 2bit | 表示在NTP時間標尺中將要插入的下一跳情況。 00: 無告警。 01: 最後一分鐘包含61秒。 10: 最後一分鐘含59秒。 11: 告警(時鐘無法同步)。 |
VN(Version Number) | 3bit | NTP的版本號。 |
Mode | 3bit | NTP的工作模式。 000: reserved,保留。 001: symmetric active,主動對等體模式。 010: symmetric passive,被動對等體模式。 011:client,客戶模式。 100: server,伺服器模式。 101: broadcast,廣播模式。 110: reserved for NTP control messages,NTP控制報文。 111: reserved for private use,內部使用預留。 |
Stratum | 8bit | 時鐘的層數,定義了時鐘的準確度。層數為1的時鐘準確度最高,從1到15依次遞減,層數為16的時鐘處於未同步狀態,不能作為參考時鐘。 |
Poll | 8bit | 輪詢時間,即傳送報文的最小間隔時間。 |
Precision | 8bit | 時鐘的精度。 |
Root Delay | 32bit | 到主參考時鐘的總往返延遲時間。 |
Root Dispersion | 32bit | 本地時鐘相對於主參考時鐘的最大誤差。 |
Reference Identifier | 32bit | 標識特定參考時鐘。 |
Reference Timestamp | 64bit | 本地時鐘最後一次被設定或更新的時間。如果值為0表示本地時鐘從未被同步過。 |
Originate Timestamp | 64bit | NTP報文離開源端時的本地時間。 |
Receive Timestamp | 64bit | NTP報文到達目的端的本地時間。 |
Transmit Timestamp | 64bit | 目的端應答報文離開伺服器端的本地時間。 |
Authenticator | 96bit | (可選)驗證資訊。 |
欄位 | 長度 | 含義 |
---|---|---|
00 | 2bit | 保留位。 |
VN(Version Number) | 3bit | NTP的版本號。 |
6 | 3bit | NTP的工作模式,110表明是控制報文 |
REM | 3bit | R:0表示命令,1表示響應。 E:0表示傳送正常響應,1表示傳送錯誤響應。 M:0表示最後一個分片,1表示其他。 |
Op | 5bit | 操作碼,表明命令的型別。 |
Sequence | 16bit | 傳送或接受到報文的順序號。 |
Status | 16bit | 表明當前系統的狀態。 |
Association ID | 16bit | 連線標示。 |
Offset | 16bit | 偏移量 |
Count | 16bit | 資料域的長度 |
Data | ≤468bit | 包括傳送報文或接受報文中的資料資訊。 |
Padding | 16bit | 填充欄位 |
Authenticator | 96bit | (可選)驗證資訊。 |
參考:
[1]https://info.support.huawei.com/info-finder/encyclopedia/zh/NTP.html
[2]http://023wg.com/message/message/cd_feature_ntp_message.html