手机上的时间如何和网络上的时间同步如何做到?天穹告诉你NTP时间服务器的意义
作者:互联网
你有想过为什么手机上的时间不用调试却能非常精准的和北京时间同步吗?你知道是什么原理吗?今天就带大家揭秘。
手机时钟如何同步NTP服务器上的准确时间?这样的手动电视整点对时我们似乎已经不再需要,取而代之的是网络自动对时,他依赖的是NTP时间服务器。NTP是网络时间协议的简写,NTP时间服务器就是通过这种协议向我们提供了准确的时间。我们的手机、电脑、平板上面的时钟就是通过NTP时间服务器让时钟走得分秒不差。那么问题来了,如果不联网,时钟就走的不准了。是的,任何时钟都有误差,所以才要定期对时。我近期的视频钟表的金正为什么是32768赫兹粗略地描述了时钟不准的原因。本期视频我们抛开枯燥的协议文档,简单粗暴地去了解NTP时间同步的过程,看完以后你就能知道怎么去编程实现时间同步。国内常用的NTP时间服务器有这几个,其他的时间服务器可以自己去搜索。本期视频我们用国家授时中心的FTP服务器来演示时间同步的过程,在电脑系统上,时钟设置里是可以修改时间服务器的,我的电脑就修改成了中国国家授时中心的FTP服务器。动手演示之前,我们先了解四个时间戳整个时间同步的过程就在这张图上,很简单,时间戳T1是手机发出询问的时刻,时间戳T2是服务器收到询问的时刻,时间戳T3是服务器发出应答的时刻,时间戳T4是手机收到应答的时刻。一问一答完成后,通过四个时间戳就能计算出手机时钟是慢几秒还是快几秒。这个实时动态的临时网页是时间同步的手工计算方法,学会以后,不管用哪种编程语言都能实现时钟同步。网页地址是蓝色的文字,网页我会保留一段时间,大家可以复制保存在电脑上下载一个能实现udp通信的网络调试助手,在发送窗口粘贴这样一段48字节的询问数据包。八个字节填写时间戳T1远程主机填写时间,服务器的网址或者IP地址,端口号是123,把询问数据包发送给NTP,服务器会得到48字节的应答数据包,这就是我们用来计算时间的其中三个时间戳。我们只要编程建立udp通信,就能很容易获得这样的应答数据包。下面我们来看看如何计算。把FTP服务器应答的48个字节按每八个字节分为一段,倒数第三段是T1,也就是询问包里的最后一段,倒数第二第一段是T2和T3,服务器收到询问和发出应答会打上这两个时间戳,T1T4是手机发出询问和收到应答自己打的时间戳。我们现在看到的T1到T4是16进制,表示的都是八字节64位的定点小数,小数点在第四、第五字节中间,前四字节表示秒的整数部分,后四字节表示秒的小数部分。客户端也就是手机通常用的是unix时间戳,他是从1970年1月1日零点整开始经过的秒数。NTP服务器通常用的是NTP协议时间戳,他是从1900年1月1日零点整开始经过的秒数。记住这两个时间戳相差了70年,后面的计算需要做调整。把T1到T4按照刚才说的定点小数格式转换成十进制,用这个公式算出网络延迟,在用这个公式算出手机时间需要。调快或者调慢的秒数得到正数,说明手机时间慢了,负数就是快乐,这里减去的这个数就是刚才说的那70年,最后正确的时间就是此时此刻手机的时间戳加上那个需要调快或者调慢的秒数,然后再用unix时间戳的转换函数就能显示正确的北京时间了。
天穹电子科技——NTP服务器(北斗授时设备)
标签:天穹,字节,NTP,时间,手机,服务器,时钟 来源: https://www.cnblogs.com/t-timing/p/16399241.html