為了讓計(jì)算機(jī)系統(tǒng)時(shí)間可以一直保持正確的狀態(tài)(時(shí)間同步),我們經(jīng)常需要調(diào)整時(shí)間。要調(diào)整時(shí)間,自然就會(huì)有一個(gè)可以對(duì)照著調(diào)整的“準(zhǔn)確時(shí)間"!在實(shí)際生活中,我們可以通過(guò)電視臺(tái)、廣播電臺(tái)等來(lái)調(diào)整我們的手表或LED時(shí)鐘。那么在網(wǎng)絡(luò)上,我們?cè)撊绾巫屩鳈C(jī)隨時(shí)保持正確的時(shí)間?另外,整個(gè)地球被劃分為24個(gè)時(shí)區(qū),什么是GMT(格林威治時(shí)間),我們所在的時(shí)區(qū)又是哪一時(shí)區(qū)呢?讓我們來(lái)簡(jiǎn)單地談?wù)劊?
1、時(shí)鐘同步原理
時(shí)間就是金錢(qián)!在 Internet 上,時(shí)間同樣也非常重要!有些計(jì)算機(jī)需要同步時(shí)間才能夠正常的運(yùn)行!在開(kāi)始NTP服務(wù)器的介紹之前,先來(lái)簡(jiǎn)單地談?wù)勱P(guān)于“時(shí)區(qū)"的概念!
1.1時(shí)區(qū)
因?yàn)榈厍蚴菆A的,所以同一個(gè)時(shí)刻,在地球的一邊是白天,一邊是黑夜。人類將一天分為24小時(shí),所以,在地球?qū)堑膬蛇吘筒?12 小時(shí)。在同一個(gè)時(shí)刻,整個(gè)地球的時(shí)間都不一樣,為了解決這個(gè)問(wèn)題,人們就將地球分成24個(gè)時(shí)區(qū)! 人類以經(jīng)緯度坐標(biāo)來(lái)定位地球,經(jīng)度為零的地點(diǎn)在英國(guó)格林威治市所在的縱剖面上,繞地球一圈為 360 度角,將 360度角分為 24 個(gè)時(shí)區(qū),一個(gè)時(shí)區(qū)就是 15 度。因?yàn)閲?guó)際上以格林威治時(shí)間(Greenwich Mean Time,GMT時(shí)間)為標(biāo)準(zhǔn)時(shí)間,加上地球自轉(zhuǎn)的關(guān)系,因此,在格林威治以東的區(qū)域時(shí)間比較早(+小時(shí)),而以西的地方比較晚!
1.2協(xié)和標(biāo)準(zhǔn)時(shí)間與系統(tǒng)時(shí)間的誤差(NTP時(shí)鐘同步的必要性)
了解了一些時(shí)區(qū)的概念之后,這里要談的是“正確的時(shí)間"。在計(jì)算時(shí)間時(shí),最準(zhǔn)確的計(jì)算應(yīng)該是使用原子震蕩周期所計(jì)算的物理時(shí)鐘(Atomic Clock,也稱為原子鐘),也被定義為標(biāo)準(zhǔn)時(shí)間(International Atomic Time)。我們常??匆?jiàn)的UTC(Coordinated Universal Time,協(xié)和標(biāo)準(zhǔn)時(shí)間)就是利用這種物理時(shí)鐘為基準(zhǔn)所定義出來(lái)的正確時(shí)間。例如1999年在美國(guó)啟用的原子鐘 NIST F-1,它所產(chǎn)生的時(shí)間誤差每?jī)汕瓴挪钜幻?!UTC標(biāo)準(zhǔn)時(shí)間是以GMT 時(shí)區(qū)為主的!所以本地時(shí)間與UTC時(shí)間的時(shí)差就是本地時(shí)間與GMT 時(shí)間的時(shí)差! 事實(shí)上,我們身邊有很多原子鐘。例如石英表,還有計(jì)算機(jī)主機(jī)上的 BIOS 也是一個(gè)原子鐘!不過(guò),由于原子鐘主要是利用計(jì)算芯(crystal)的原子震蕩周期去計(jì)時(shí)的,但是每種芯片都有自己的的震蕩周期,而震蕩周期在不同的芯片之間多少都會(huì)有點(diǎn)差異,甚至同一批芯片也可能會(huì)有些許的差異(就連溫度也可能造成這樣的誤差),因此,也就造成了BIOS的時(shí)間會(huì)經(jīng)??鞄酌牖蛘呗龓酌?。 或許您會(huì)認(rèn)為,BIOS定時(shí)器每天快5秒也沒(méi)有什么了不起的,不過(guò)如果您再仔細(xì)算算,會(huì)發(fā)現(xiàn),一天快5秒,那么一個(gè)月快 2.5 分鐘,一年就快了75分鐘!所以,真的存在時(shí)間差!如果您的計(jì)算機(jī)真有這樣的情況,就需要網(wǎng)絡(luò)校時(shí)(Network Time Protocol, NTP)的功能了!
2、NTP服務(wù)器同步及搭建
那么如何讓時(shí)間同步化呢?如果選擇幾臺(tái)主要主機(jī)(Primary 服務(wù)器)調(diào)校時(shí)間,讓這些主要主機(jī)的時(shí)間同步之后,再開(kāi)放網(wǎng)絡(luò)服務(wù)來(lái)讓 Client 端連接并且提供 Client 端調(diào)整自己的時(shí)間,就可以達(dá)到全部的計(jì)算機(jī)時(shí)間同步化的目的了!Network Time Protocol 和Digital Time Synchronization Protocol(DTSS)協(xié)議可以達(dá)到這樣的功能。 不過(guò),到底NTP這個(gè)daemon是如何讓Server與Client的時(shí)間保持同步呢?
a. 首先,主機(jī)需要啟動(dòng)這個(gè)daemon
b. 然后Client 會(huì)向NTP Server發(fā)送出調(diào)校時(shí)間的message
c. 然后NTP Server 會(huì)把當(dāng)前的標(biāo)準(zhǔn)時(shí)間返回給Client
d. Client 接收了來(lái)自 Server的時(shí)間后,會(huì)以此調(diào)整自己的時(shí)間,這就實(shí)現(xiàn)了網(wǎng)絡(luò)校時(shí)同步了!
如何搭建一臺(tái)“合格"的NTP服務(wù)器供同步時(shí)鐘同步時(shí)間尤為重要了。
在上面的步驟中可能會(huì)發(fā)生一個(gè)問(wèn)題,那就是Client到Server 的信息傳送時(shí)間過(guò)長(zhǎng)!例如,我在中國(guó)臺(tái)灣以ADSL連接到美國(guó)的NTP Server 主機(jī)進(jìn)行時(shí)間同步化請(qǐng)求,美國(guó)NTP Server 收到我的請(qǐng)求之后,就發(fā)送當(dāng)時(shí)的正確時(shí)間給我,但從美國(guó)將數(shù)據(jù)傳送回我的PC時(shí),時(shí)間可能已經(jīng)延遲了 10秒鐘,這樣我的PC校正的時(shí)間是10秒鐘前的標(biāo)準(zhǔn)時(shí)間!此外,如果有太多的人上美國(guó)的那個(gè)NTP主機(jī)進(jìn)行網(wǎng)絡(luò)校時(shí),就會(huì)導(dǎo)致負(fù)荷太重,致使信息的傳遞又延遲得更為嚴(yán)重! 為了解決這些延遲的問(wèn)題,有一些程序已經(jīng)可以自動(dòng)計(jì)算傳送過(guò)程時(shí)間的誤差,以更準(zhǔn)確的校準(zhǔn)自己的時(shí)間!當(dāng)然,在daemon 的部分,也同時(shí)以 server/client 及 master/slave的架構(gòu)來(lái)提供用戶進(jìn)行網(wǎng)絡(luò)校時(shí)的操作!所謂的master/slave有點(diǎn)類似DNS的系統(tǒng)!例如,中國(guó)臺(tái)灣的標(biāo)準(zhǔn)時(shí)間主機(jī)去國(guó)際標(biāo)準(zhǔn)時(shí)間的主機(jī)校時(shí),然后各大專院校考場(chǎng)醫(yī)院車(chē)站再到中國(guó)臺(tái)灣的標(biāo)準(zhǔn)時(shí)間校時(shí),然后我們?cè)俚礁鞔髮T盒?紙?chǎng)醫(yī)院車(chē)站的標(biāo)準(zhǔn)時(shí)間校時(shí)!這樣一來(lái),那幾臺(tái)國(guó)際標(biāo)準(zhǔn)時(shí)間主機(jī)Time服務(wù)器)的負(fù)荷就不至于太大,而我們也可以很快速地達(dá)到正確的網(wǎng)絡(luò)校時(shí)的目的!
中國(guó)臺(tái)灣常見(jiàn)的Time服務(wù)器為:time.stdtime.gov.tw
clock.stdtime.gov.tw
freq_f.stdtime.gov.tw
tick.stdtime.gov.tw
.tw
ntp 這個(gè)daemon是以端口 123 為鏈接端口的(使用UDP數(shù)據(jù)包),所以我們要利用Time服務(wù)器來(lái)進(jìn)行時(shí)間的同步更新,就得要使用 NTP 包提供的ntpdate來(lái)鏈接端口 123端口!
【返回發(fā)光
所有評(píng)論僅代表網(wǎng)友意見(jiàn),與本站立場(chǎng)無(wú)關(guān)。