ntohl

NTP协议实现

匆匆过客 提交于 2019-12-07 21:30:16
10.4 实验内容 ——NTP协议实现 1.实验目的 通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。 2.实验内容 Network Time Protocol(NTP)协议是用来使计算机时间同步化 的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等)做同步化,它可以提供高精确度的时间校正(LAN上与标准时间差小于1毫秒,WAN上几十毫秒),且可用加密确认的 方式来防止协议攻击。 NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间是按NTP服务器的等级传 播。按照距离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取 时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构并 相互连接,而Stratum-1的时间服务器是整个系统的基础。 进行网络协议实现时最重要的是了解协议数据格式。NTP数据包有48个字节,其中NTP包头16字节,时间戳32个字节

系统平台大小端问题

守給你的承諾、 提交于 2019-12-07 11:08:48
Internet上的数据以 大端方式 在网络上传输!!! 常见CPU及大小端 CPU 操作系统 字节顺序 x86 (Intel、AMD等) 所有 little-endian DEC Alpha 所有 little-endian HP-PA NT little-endian HP-PA UNIX big-endian SUN SPARC 所有 big-endian MIPS NT little-endian MIPS UNIX big-endian PowerPC NT little-endian PowerPC 非NT big-endian RS/6000 UNIX big-endian Motorola m68k 所有 big-endian Socket编程中经常采用第二种方法。整个传输过程如下: 发送端将本机的数据转换成网络的字节顺序(调用API函数htonl或 htons ),然后发送;接收端收到网络数据后,先将数据转换成本机的字节顺序(调用API函数ntohl或 ntohs ),然后再进行其它操作——如此就能保证“会议精神”在通信双方的正确传达了! 这个过程中用到的几个API函数:ntohl、htonl、 ntohs 、 htons ,名字都差不多,很难区分。但是如果知道了它们的来历,问题也就不存在了:n是network,网络的意思;h是host,本地主机的意思。