Linux下时间服务器的设计与实现(3)
时间:2018-12-16 19:04 来源:毕业论文 作者:毕业论文 点击:次
可以说在信息时代的发展趋势下,时间同步网络的建设是其他任何类型网络的设计的基础。但是随着网络规模的增大,各种规模网络设备和服务器越来越多,并且他们的时间精确性要求日益严格。如果仅仅依靠管理员通过手工方式修改本地时间描述是不现实的,不但工作量反复,同时也不能对时钟的精确性作出保障。所以,设计并实现一款结构简单、操作方便并且运行可靠的时间同步服务器具有极高的可研究与可操作价值。 1.2 项目开发的意义 Linux下时间服务器开发的目的是为了将在时间同步问题中所需要考虑到的服务器I/O模型、数据网络链接传输以及相应的时间同步算法和对应的数据包结构封装在一个简单的可运行程序中。通过这个可运行程序的使用,管理人员可以简单高效的部署并运行一个时间服务器,并能为网络中的其他客户机提供一个精度较高、性能可靠的网络同步服 1.3 本文研究内容及主要贡献 通过开发这一套系统,将详细的阐述网络服务器I/O模型的选择策略、各类型网络数据传输协议的适用场景以及相应的网络传输协议的Socket套接字实现。并且,将通过实际测试,讨论不同时间调整方式的实际效果和影响。 本文共分为七个部分 第一章 绪论部分主要讲解 第二章 系统分析 第三章 网络协议的设计 第四章 TCP服务器的设计与架构 第五章 代码实现 第优尔章 实际性能测试 第七章 总结与展望 第2章 系统分析 2.1时间服务工作流程 如图2.1所示,客户机向时间服务器请求进行时间同步任务时需要发送一个数据包,然后时间服务器回复一个数据包,传输双方都要在数据包上加上自己自己的时间戳[1]。根据读取和分析这些时间戳的发送时间、接收时间,就可以对客户机和服务器的时间差进行估计。客户机通过查看两个数据包中所含的时间值,可以知道以下4个时间: 图2.1 时间戳交互流程 T1:请求数据包离开客户端的时刻,读取于客户机的时钟; T2:请求数据包到达服务提端的时刻,读取于服务器的时钟; T3:回复数据包离开服务器端的时刻,读取于服务器的时钟; T4:回复数据包到达客户端的时刻,读取于客户机的时钟; 再假设:δ1和δ2的含义如下所示: δ1:请求数据包在网络中传播时所花费的时间; δ2:回复数据包在网络中传播时所花费的时间。 根据T1、T2、T3、T4这四个时刻以及δ1、δ2这个两个时间,设θ是待同步客户机和时间服务器的时间差,则可列出下式: 假设客户端发出的请求数据包和服务器回复的数据包在链路中通信所花时间近似相等,即δ1=δ2,则换算得: 可以看到,T2和T1、T3和T4这两对时刻之间的差值决定了时间差θ以及网络通信延迟δ,而与T2和T3差值不影响系统误差,即系统调节时间的能力与服务器处理请求所花费的时间无关。于是,客户端只需要计算出时间差θ去调整本地时钟。 2.2 时间同步协议设计的三大特性 (一)同步误差尽可能小,从而保证了整个网络设备的正常运行; (二)协议应当尽可能地简单,功耗比较低,当网络设备进行时间同步时不对其性能造成影响; (三)具有可拓展性,随着网络规模的增长以及设备种类的变更,时间同步协议要同样有效; (责任编辑:qin) |