Time Protocol也就是時間協定
此協定提供了一個獨立於站點的,機器可讀的日期和時間信息。時間服務返回的是以秒數,是從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年就不能用了,但是我們也知道計算機發展速度這么快,可能到時候就會有更好的協定代替這個協定,或者有已經想出有效的解決辦法了。