时间协议

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

本RFC规范了一个ARPAInternetcommunity上的标准。在ARPAInternet上的所有主机应当采用和实现这个标准。

此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是以秒数,是从1900年1月1日午夜到现在的秒数,天哪,也不小呢。

设计这个协议的一个重要目的在于,网络上的许多主机并没有时间的观念,在分布式的系统上,我们可以想一想,北京的时间和东京的时间如何分呢?主机的时间往往可以人为改变,而且因为机器时钟内的误差而变得不一致,因此需要使用时间服务器通过选举方式得到网络时间,让服务器有一个准确的时间观念。不要小看时间,这对于一些以时间为标准的分布运行的程序简单是太重要了。

这个协议可以工作在TCP和UDP协议下。下面是通过TCP协议工作的时间协议的工作过程:这里S代表服务器,C代表客户。

S:检测端口37

U:连接到端口37

S:以32位二进制数发送时间

U:接收时间

U:关闭连接

S:关闭连接

服务器在端口37上监听连接。当连接建立后,服务器返回一个32位的时间值,然后关闭连接。这个过程也不难,假如服务器不能决定现在是什么时间,服务器会拒绝连接或不发送任何数据而直接关闭连接。

下面我们看看使用UDP协议的情况:这里S代表服务器,C代表客户。

S:检测端口37

U:发送一个空数据报到端口37

S:接收这个空数据报

S:发送包含32位二进制数(用于表示时间)的数据报

U:接收时间数据报

服务器在端口37上监听数据包。当一个数据包来后,服务器返回一个包含32位的时间的数据包。这个过程也不难,假如服务器不能决定现在是什么时间,服务器会抛弃接收到的数据报而不作出任何应答。

*时间

时间是由32位表示的,是自1900年1月1日0时到当前的秒数,我们可以计算一下,这个协议只能表示到2036年就不能用了。(但是我们也知道计算机发展速度这么快,可能到时候就会有更好的协议代替这个协议,或者有已经想出有效的解决办法了。)

下面是些例子:

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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航