免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 836 | 回复: 0
打印 上一主题 下一主题

时间协议 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-24 17:34 |只看该作者 |倒序浏览


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.


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_506452.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP