1. 程式人生 > >網路時間協議(NTP)

網路時間協議(NTP)

今天在看《linux核心原始碼情景分析》的時候,在中斷那章看到了時間中斷,裡面提到時鐘是計算機系統裡非常重要的部分,不僅僅對單個計算機系統很重要,對於計算機網路來說同樣非常重要,就想到一個問題,在網路中,不同的計算機之間是如何同步時鐘的?暫時還沒有考慮時鐘不同步時可能出現哪些後果。

在網上簡單查了一下,網路中同步時鐘主要是用的網路時間協議(NTP, network time protocol),名字很簡單,協議本身實際上也很簡單。用下面的圖來簡單說明。

這裡是以一臺計算機(client)如何與時間伺服器(server)通過NTP進行時間同步,來簡單說明NTP的工作原理。

從下圖中,可以很簡單的就列出兩個等式,在圖右側。而從這兩個等式,用解方程的方法,就可以求出Delay和Offset。

Client如何知道T2和T3?很簡單呀,在client和server之間不是有資料包的傳送麼,把T2和T3作為payload放到資料包裡就OK啦!

從計算結果可以看出,NTP並沒有要求server很快做出響應,因為offset只和T1、T2間,以及T3、T4間的差值有關,而與T2、T3間的差值無關。當然,這只是從原理上簡單分析,具體在協議中是如何實現的並沒有研究。