ntp服(fu)(fu)務器,對大多(duo)數(shu)人(ren)來說(shuo)是(shi)一(yi)個陌生詞匯(hui),但是(shi)要(yao)理解ntp服(fu)(fu)務器必(bi)須先了解什么是(shi)ntp和什么是(shi)服(fu)(fu)務器?
NTP全(quan)名(ming)“Network TimeProtocol”,即網絡(luo)時(shi)(shi)間協議(yi),是由RFC 1305定義(yi)的(de)時(shi)(shi)間同步協議(yi),用來在分布式時(shi)(shi)間服(fu)務器和(he)客戶(hu)端(duan)之間進行時(shi)(shi)間同步。
NTP基于(yu)(yu)(yu)UDP報(bao)文進(jin)(jin)行傳(chuan)輸,使(shi)(shi)(shi)用(yong)的(de)(de)(de)(de)(de)(de)UDP端口號為123。使(shi)(shi)(shi)用(yong)NTP的(de)(de)(de)(de)(de)(de)目的(de)(de)(de)(de)(de)(de)是對網絡(luo)內所有(you)具(ju)有(you)時(shi)(shi)(shi)鐘(zhong)(zhong)的(de)(de)(de)(de)(de)(de)設(she)備(bei)進(jin)(jin)行時(shi)(shi)(shi)鐘(zhong)(zhong)同(tong)步(bu)(bu)(bu),使(shi)(shi)(shi)網絡(luo)內所有(you)設(she)備(bei)的(de)(de)(de)(de)(de)(de)時(shi)(shi)(shi)鐘(zhong)(zhong)保持一(yi)(yi)致,從而使(shi)(shi)(shi)設(she)備(bei)能(neng)夠(gou)提供(gong)基于(yu)(yu)(yu)統一(yi)(yi)時(shi)(shi)(shi)間的(de)(de)(de)(de)(de)(de)多種應(ying)用(yong)。對于(yu)(yu)(yu)運行NTP的(de)(de)(de)(de)(de)(de)本地系(xi)統,既可(ke)以(yi)接收來自(zi)其他(ta)時(shi)(shi)(shi)鐘(zhong)(zhong)源的(de)(de)(de)(de)(de)(de)同(tong)步(bu)(bu)(bu),又可(ke)以(yi)作為時(shi)(shi)(shi)鐘(zhong)(zhong)源同(tong)步(bu)(bu)(bu)其他(ta)的(de)(de)(de)(de)(de)(de)時(shi)(shi)(shi)鐘(zhong)(zhong),并且可(ke)以(yi)和(he)其他(ta)設(she)備(bei)互相(xiang)同(tong)步(bu)(bu)(bu)。
服(fu)務(wu)(wu)器(qi),英文名(ming)“server”也(ye)稱伺服(fu)器(qi),是提供計算(suan)服(fu)務(wu)(wu)的(de)設備。由于服(fu)務(wu)(wu)器(qi)需要響應服(fu)務(wu)(wu)請求(qiu),并進行處理(li),因此一般來說服(fu)務(wu)(wu)器(qi)應具(ju)備承擔(dan)服(fu)務(wu)(wu)并且(qie)保(bao)障服(fu)務(wu)(wu)的(de)能力。
服(fu)務(wu)器的構(gou)成(cheng)包(bao)括(kuo)處(chu)理(li)器、硬(ying)盤、內存、系統總線等,和通用的計算機架構(gou)類似,但是由于需(xu)要提供(gong)高(gao)可(ke)靠的服(fu)務(wu),因此在處(chu)理(li)能力、穩定性(xing)(xing)、可(ke)靠性(xing)(xing)、安全性(xing)(xing)、可(ke)擴(kuo)展性(xing)(xing)、可(ke)管理(li)性(xing)(xing)等方(fang)面要求較高(gao)。
在網(wang)絡環境下,根據服(fu)務器(qi)(qi)提(ti)供的服(fu)務類型不(bu)同,分為文件服(fu)務器(qi)(qi),數據庫服(fu)務器(qi)(qi),應用(yong)程序服(fu)務器(qi)(qi),WEB服(fu)務器(qi)(qi)等。
前面(mian)(mian)我們分別了解到了NTP和(he)服(fu)(fu)務器(qi)(qi),那到底是什么NTP服(fu)(fu)務器(qi)(qi)呢?根(gen)據表面(mian)(mian)意思(si)理(li)解NTP服(fu)(fu)務器(qi)(qi),即基(ji)于NTP協議(yi)的服(fu)(fu)務器(qi)(qi),用來在分布式時(shi)間(jian)服(fu)(fu)務器(qi)(qi)和(he)客戶端之(zhi)間(jian)進行時(shi)間(jian)同步(bu)。
NTP服(fu)務(wu)器在應用于時間(jian)(jian)(jian)同(tong)步(bu)中分為客(ke)戶(hu)端NTP服(fu)務(wu)器和(he)服(fu)務(wu)端NTP服(fu)務(wu)器兩(liang)種(zhong)。客(ke)戶(hu)端主要應用于現(xian)有NTP網(wang)(wang)(wang)絡(luo)(luo)環(huan)境中,獲取前端NTP服(fu)務(wu)器,主要是利用已經(jing)存在的(de)網(wang)(wang)(wang)絡(luo)(luo)環(huan)境,搭建時間(jian)(jian)(jian)同(tong)步(bu)系(xi)統(tong),實現(xian)的(de)是一個從時鐘的(de)功(gong)能。服(fu)務(wu)端NTP服(fu)務(wu)器主要是指用于后端網(wang)(wang)(wang)絡(luo)(luo)環(huan)境中設(she)備的(de)時間(jian)(jian)(jian)同(tong)步(bu),為網(wang)(wang)(wang)絡(luo)(luo)中的(de)服(fu)務(wu)器,計(ji)算機等網(wang)(wang)(wang)絡(luo)(luo)設(she)備提供(gong)一個時間(jian)(jian)(jian)統(tong)一的(de)功(gong)能,實現(xian)主時鐘的(de)同(tong)步(bu)功(gong)能。
前面,我們(men)很自然的了(le)解到了(le)什么(me)是(shi)ntp,也有了(le)一(yi)個大概的認(ren)識,那(nei)么(me)ntp服務(wu)(wu)器(qi)是(shi)做什么(me)的,它到底能做什么(me),這(zhe)也是(shi)我們(men)對于ntp服務(wu)(wu)器(qi)這(zhe)個名稱屬性放在這(zhe)里(li),我們(men)最需要傳達的東西。
NTP服(fu)務器(qi)主要用(yong)來同步(bu)網絡中各個(ge)計算機的(de)(de)時(shi)間(jian)的(de)(de)協議。它(ta)的(de)(de)用(yong)途是把計算機的(de)(de)時(shi)鐘同步(bu)到(dao)世界協調(diao)時(shi)UTC,其精度在局域(yu)網內可(ke)(ke)達0.1ms,在互聯網上絕(jue)大多數(shu)的(de)(de)地方(fang)其精度可(ke)(ke)以(yi)達到(dao)1-50ms。它(ta)可(ke)(ke)以(yi)使計算機對其服(fu)務器(qi)或時(shi)鐘源(如(ru)石英鐘,GPS等等)進行時(shi)間(jian)同步(bu),它(ta)可(ke)(ke)以(yi)提(ti)供高精準度的(de)(de)時(shi)間(jian)校正,而(er)且(qie)可(ke)(ke)以(yi)使用(yong)加密確認(ren)的(de)(de)方(fang)式來防止病毒的(de)(de)協議攻擊(ji)。
很多人可(ke)能(neng)會(hui)(hui)說,我的(de)(de)(de)計(ji)算機每天自己走(zou)時(shi)(shi)(shi),為何還需要(yao)用一(yi)(yi)個(ge)ntp服務器(qi)再(zai)同步時(shi)(shi)(shi)間(jian)呢?這主要(yao)是(shi)(shi)因為在計(ji)算機中芯片本身通(tong)常并不具(ju)備(bei)時(shi)(shi)(shi)鐘信(xin)號源,因此(ci)須由(you)專門的(de)(de)(de)時(shi)(shi)(shi)鐘電(dian)(dian)路提供時(shi)(shi)(shi)鐘信(xin)號,石英(ying)晶(jing)(jing)體振蕩器(qi)(Quartz Crystal OSC)就(jiu)(jiu)是(shi)(shi)一(yi)(yi)種(zhong)最(zui)常用的(de)(de)(de)時(shi)(shi)(shi)鐘信(xin)號振蕩源。石英(ying)晶(jing)(jing)片之所(suo)以能(neng)當為振蕩器(qi)使用,是(shi)(shi)基于它的(de)(de)(de)壓電(dian)(dian)效(xiao)應:在晶(jing)(jing)片的(de)(de)(de)兩個(ge)極(ji)上(shang)加一(yi)(yi)電(dian)(dian)場,會(hui)(hui)使晶(jing)(jing)體產生(sheng)機械變形(xing);在石英(ying)晶(jing)(jing)片上(shang)加上(shang)交變電(dian)(dian)壓,晶(jing)(jing)體就(jiu)(jiu)會(hui)(hui)產生(sheng)機械振動,同時(shi)(shi)(shi)機械變形(xing)振動又會(hui)(hui)產生(sheng)交變電(dian)(dian)場。雖(sui)然(ran)這種(zhong)交變電(dian)(dian)場的(de)(de)(de)電(dian)(dian)壓極(ji)其微弱(ruo),但其振動頻率是(shi)(shi)十分穩定(ding)的(de)(de)(de)。
從PC誕生(sheng)至今,主板上一(yi)直都使用一(yi)顆(ke)14.318MHz的(de)石英晶體振(zhen)蕩器作為基準(zhun)頻(pin)率(lv)(lv)源。主板上除(chu)了這(zhe)顆(ke)14.318MHz的(de)晶振(zhen),還能找到一(yi)顆(ke)頻(pin)率(lv)(lv)為32.768MHz的(de)晶振(zhen),它被(bei)用于(yu)實時時鐘(zhong)(RTC)電路中,顯示精(jing)確的(de)時間和日期。初(chu)始化后以每秒(miao)約18.2次發出(chu)脈沖(chong),這(zhe)些(xie)脈沖(chong)經過操作系(xi)統(tong)計算形成(cheng)BIOS日時鐘(zhong)計數。通過由BIOS電池供電,關(guan)機后它仍然正(zheng)常運行。這(zhe)也就是為啥(sha)我們關(guan)了電源,第二天開機依然會顯示正(zheng)確時間的(de)原因。
每(mei)個計(ji)算機各自有了時(shi)鐘,但(dan)是一旦它們(men)聯(lian)網后,又出現(xian)一個問題:各自運行的(de)(de)計(ji)算機時(shi)鐘,彼此(ci)之間(jian)日積(ji)月(yue)累(lei)的(de)(de)累(lei)計(ji)誤(wu)差如何解決。這就出現(xian)了網絡時(shi)間(jian)協議NTP,它是用(yong)(yong)于互聯(lian)網中時(shi)間(jian)同步的(de)(de)標準之一,它的(de)(de)用(yong)(yong)途是把計(ji)算機的(de)(de)時(shi)鐘同步到世界(jie)協調時(shi)UTC,并滿足(zu)于用(yong)(yong)戶環境中的(de)(de)計(ji)算機(服務器同理)設備(bei)的(de)(de)時(shi)間(jian)同步。
對大多數(shu)人來說可能會很(hen)疑問(wen),我的計(ji)算(suan)機(ji)(ji)時間(jian)已經夠我用了(le)啊,我為何需要單獨(du)的ntp服務器(qi)。那么問(wen)題來了(le),一個系統(tong)里整(zheng)(zheng)體(ti)運(yun)(yun)行的所有計(ji)算(suan)機(ji)(ji)服務器(qi),如果都獨(du)立運(yun)(yun)行那整(zheng)(zheng)個系統(tong)工(gong)作(zuo)是否都亂套了(le)?
我們舉幾個簡(jian)單(dan)的(de)(de)(de)例子:如果公共大(da)樓遇(yu)到突發事情每個監(jian)控裝置時(shi)(shi)間(jian)(jian)不(bu)一(yi),后(hou)期事故調(diao)(diao)查(cha)取證(zheng)監(jian)控時(shi)(shi)間(jian)(jian)參(can)差不(bu)齊(qi)無法(fa)(fa)還(huan)原本質,責(ze)任誰來(lai)擔(dan)當?醫院系統各個科室職能(neng)兼受,若時(shi)(shi)間(jian)(jian)相(xiang)互差開,病人數據(ju)記錄與實際時(shi)(shi)間(jian)(jian)前后(hou)出(chu)入(ru),若出(chu)現(xian)分歧責(ze)任甩給設備原因,設備是(shi)否(fou)能(neng)夠出(chu)面來(lai)協調(diao)(diao)?電(dian)力電(dian)廠系統中有(you)很多需(xu)要互相(xiang)協調(diao)(diao)合作的(de)(de)(de)設備,若出(chu)現(xian)各個系統設備之間(jian)(jian)時(shi)(shi)間(jian)(jian)紊(wen)亂(luan),就會導致運行機制無法(fa)(fa)協調(diao)(diao)合作,那整個電(dian)廠的(de)(de)(de)運行失調(diao)(diao),所造成(cheng)的(de)(de)(de)損失無法(fa)(fa)估量。
所以,ntp服務(wu)器(qi)在(zai)各(ge)行(xing)各(ge)業系(xi)統(tong)發(fa)揮(hui)協調作用的(de)同(tong)時,已經成(cheng)為(wei)了不可(ke)或(huo)缺的(de)必備(bei)系(xi)統(tong),是各(ge)個系(xi)統(tong)穩定運(yun)行(xing)基于安全(quan)因素中必須存在(zai)的(de)重要(yao)設備(bei)。ntp服務(wu)器(qi)服務(wu)器(qi)應用于不同(tong)行(xing)業系(xi)統(tong)中,為(wei)網絡內設備(bei)提供標準的(de)時間基準,使得各(ge)個獨立又相(xiang)互關聯的(de)設備(bei)有了可(ke)參考的(de)維(wei)度標準。
NTP提供準(zhun)確(que)(que)時(shi)(shi)(shi)間(jian)(jian)(jian)(jian),首先(xian)要有準(zhun)確(que)(que)的時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)來源(yuan),這(zhe)一時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)應該是(shi)國(guo)際標準(zhun)時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)UTC。 NTP獲(huo)得UTC的時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)來源(yuan)可以(yi)是(shi)原子鐘、天文(wen)臺、衛(wei)星,也可以(yi)從(cong)Internet上獲(huo)取(qu)。這(zhe)樣就有了(le)準(zhun)確(que)(que)而(er)可靠的時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)源(yuan)。時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)按NTP服務器(qi)的等級(ji)傳播。按照離外部UTC 源(yuan)的遠(yuan)近(jin)將所有服務器(qi)歸入不同(tong)的Stratum(層)中(zhong)。Stratum-1在頂層,有外部UTC接(jie)入,而(er)Stratum-2則從(cong)Stratum-1獲(huo)取(qu)時(shi)(shi)(shi)間(jian)(jian)(jian)(jian),Stratum-3從(cong)Stratum-2獲(huo)取(qu)時(shi)(shi)(shi)間(jian)(jian)(jian)(jian),以(yi)此類推,但Stratum層的總(zong)數(shu)限制(zhi)在15以(yi)內。所有這(zhe)些服務器(qi)在邏輯(ji)上形(xing)成階梯式(shi)的架構(gou)相互連(lian)接(jie),而(er)Stratum-1的時(shi)(shi)(shi)間(jian)(jian)(jian)(jian)服務器(qi)是(shi)整(zheng)個系統的基礎。
計算機主機一般同多個時間服務器連(lian)接, 利(li)用統(tong)計學的(de)(de)算法(fa)過濾來(lai)(lai)自(zi)不同服(fu)(fu)務(wu)(wu)器的(de)(de)時(shi)(shi)間(jian),以選(xuan)擇最佳的(de)(de)路徑和來(lai)(lai)源來(lai)(lai)校正主(zhu)機(ji)時(shi)(shi)間(jian)。即使主(zhu)機(ji)在長時(shi)(shi)間(jian)無法(fa)與(yu)某一時(shi)(shi)間(jian)服(fu)(fu)務(wu)(wu)器相聯系的(de)(de)情況下,NTP服(fu)(fu)務(wu)(wu)依然有效運轉(zhuan)。
為防止(zhi)對(dui)時(shi)間服(fu)務器(qi)的(de)惡(e)意破(po)壞,NTP使(shi)用了識別(Authentication)機制,檢(jian)查(cha)來對(dui)時(shi)的(de)信息(xi)是(shi)(shi)否是(shi)(shi)真正來自所宣(xuan)稱的(de)服(fu)務器(qi)并檢(jian)查(cha)資料的(de)返回路徑,以提供對(dui)抗干擾的(de)保護機制。