時間協議

時間協議

時間協議,此協議提供了一個獨立於站點的,機器可讀的日期和時間信息。時間服務返回的是以秒數,是從1900年1月1日午夜到現在的秒數,天哪,也不小呢。

內容簡介


設計這個協議的一個重要目的在於,網路上的許多主機並沒有時間的觀念,在分散式的系統上,我們可以想一想,北京的時間和東京的時間如何分呢?主機的時間往往可以人為改變,而且因為機器時鐘內的誤差而變得不一致,因此需要使用時間伺服器通過選舉方式得到網路時間,讓伺服器有一個準確的時間觀念。不要小看時間,這對於一些以時間為標準的分佈運行的程序簡單是太重要了。

工作過程


這個協議可以工作在TCP和UDP協議下。下面是通過TCP協議工作的時間協議的工作過程:這裡S代表伺服器,C代表客戶。
S 檢測埠37
U 連接到埠37
S 以32位二進位數發送時間
U 接收時間
U 關閉連接
S 關閉連接
這個過程也不難,如果伺服器不能決定現在是什麼時間,伺服器會拒絕連接或不發送任何數據而直接關閉連接。

下面我們看看使用UDP協議的情況


這裡S代表伺服器,C代表客戶。
S 檢測埠37
U 發送一個空數據報到埠37
S 接收這個空數據報
S 發送包含32位二進位數(用於表示時間)的數據報
U 接收時間數據報
這個過程也不難,如果伺服器不能決定現在是什麼時間,伺服器會拋棄接收到的數據報而不作出任何應答。
時間是由32位表示的,是自1900年1月1日0時到當前的秒數,我們可以計算一下,這個協議只能表示到2036年就不能用了,但是我們也知道計算機發展速度這麼快,可能到時候就會有更好的協議代替這個協議,或者有已經想出有效的解決辦法了。