本RFC規(guī)范了一個(gè)ARPAInternetcommunity上的標(biāo)準(zhǔn)。在ARPAInternet上的所有主機(jī)應(yīng)當(dāng)采用和實(shí)現(xiàn)這個(gè)標(biāo)準(zhǔn)。
此協(xié)議提供了一個(gè)獨(dú)立于站點(diǎn)的,機(jī)器可讀的日期和時(shí)間信息。時(shí)間服務(wù)返回的是以秒數(shù),是從1900年1月1日午夜到現(xiàn)在的秒數(shù),天哪,也不小呢。
設(shè)計(jì)這個(gè)協(xié)議的一個(gè)重要目的在于,網(wǎng)絡(luò)上的許多主機(jī)并沒有時(shí)間的觀念,在分布式的系統(tǒng)上,我們可以想一想,北京的時(shí)間和東京的時(shí)間如何分呢?主機(jī)的時(shí)間往往可以人為改變,而且因?yàn)闄C(jī)器時(shí)鐘內(nèi)的誤差而變得不一致,因此需要使用時(shí)間服務(wù)器通過選舉方式得到網(wǎng)絡(luò)時(shí)間,讓服務(wù)器有一個(gè)準(zhǔn)確的時(shí)間觀念。不要小看時(shí)間,這對(duì)于一些以時(shí)間為標(biāo)準(zhǔn)的分布運(yùn)行的程序簡(jiǎn)單是太重要了。
這個(gè)協(xié)議可以工作在TCP和UDP協(xié)議下。下面是通過TCP協(xié)議工作的時(shí)間協(xié)議的工作過程:這里S代表服務(wù)器,C代表客戶。
S:檢測(cè)端口37
U:連接到端口37
S:以32位二進(jìn)制數(shù)發(fā)送時(shí)間
U:接收時(shí)間
U:關(guān)閉連接
S:關(guān)閉連接
服務(wù)器在端口37上監(jiān)聽連接。當(dāng)連接建立后,服務(wù)器返回一個(gè)32位的時(shí)間值,然后關(guān)閉連接。這個(gè)過程也不難,假如服務(wù)器不能決定現(xiàn)在是什么時(shí)間,服務(wù)器會(huì)拒絕連接或不發(fā)送任何數(shù)據(jù)而直接關(guān)閉連接。
下面我們看看使用UDP協(xié)議的情況:這里S代表服務(wù)器,C代表客戶。
S:檢測(cè)端口37
U:發(fā)送一個(gè)空數(shù)據(jù)報(bào)到端口37
S:接收這個(gè)空數(shù)據(jù)報(bào)
S:發(fā)送包含32位二進(jìn)制數(shù)(用于表示時(shí)間)的數(shù)據(jù)報(bào)
U:接收時(shí)間數(shù)據(jù)報(bào)
服務(wù)器在端口37上監(jiān)聽數(shù)據(jù)包。當(dāng)一個(gè)數(shù)據(jù)包來后,服務(wù)器返回一個(gè)包含32位的時(shí)間的數(shù)據(jù)包。這個(gè)過程也不難,假如服務(wù)器不能決定現(xiàn)在是什么時(shí)間,服務(wù)器會(huì)拋棄接收到的數(shù)據(jù)報(bào)而不作出任何應(yīng)答。
*時(shí)間
時(shí)間是由32位表示的,是自1900年1月1日0時(shí)到當(dāng)前的秒數(shù),我們可以計(jì)算一下,這個(gè)協(xié)議只能表示到2036年就不能用了。(但是我們也知道計(jì)算機(jī)發(fā)展速度這么快,可能到時(shí)候就會(huì)有更好的協(xié)議代替這個(gè)協(xié)議,或者有已經(jīng)想出有效的解決辦法了。)
下面是些例子:
thetime2,208,988,800correspondsto00:001Jan1970GMT,
2,398,291,200correspondsto00:001Jan1976GMT,
2,524,521,600correspondsto00:001Jan1980GMT,
2,629,584,000correspondsto00:001May1983GMT,
以及-1,297,728,000correspondsto00:0017Nov1858GMT.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注