ntp网络时间协议_ntp网络时间协议特性

ntp网络时间协议_ntp网络时间协议特性NTP是网络时间协议(NetworkTimeProtocol),它是用来同步网络中各个计算机的时间的协议。  原理:NTP要提供准确的时间,就必须有准确的时间来源,那可以用格林尼治时间吗?答案是否定的。因为格林尼治时间是以地球自转为基础的时间计量系统,但是地球每天的自转是有些不规则的,而且正在缓慢加速,因此,格林尼治时间已经不再被作为标准时间使用。新的标准时间,是由原子钟报时的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

     NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。

    原理:

NTP要提供准确的时间,就必须有准确的时间来源,那可以用格林尼治时间吗?答案是否定的。因为格林尼治时间是以地球自转为基础的时间计量系统,但是地球每天的自转是有些不规则的,而且正在缓慢加速,因此,格林尼治时间已经不再被作为标准时间使用。
新的标准时间,是由
原子钟
报时的国际标准时间UTC(Universal Time Coordinated,世界协调时)。所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。        
有了准确而可靠的的时间源,那这个时间如何传播呢?在NTP中,定义了时间按照服务器的等级传播,按照离外部UTC源远近将所有的服务器归入不同的Stratum(层)中,例如把通过GPS(Global Positioning System,全球定位系统)取得发送标准时间的服务器叫Stratum-1的NTP服务器,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些
服务器
在逻辑上形成阶梯式的架构相互连接,而Stratum-1的
时间服务器
是整个系统的基础。
计算机主机一般同多个时钟服务器连接,利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源以便校正主机时间。即使在主机长时间无法与某一时钟服务器联系的情况下,NTP服务依然可以有效运转。
为了防止对时钟服务器的恶意破坏,NTP使用了识别机制,检查发送来的信息是否是真正来自所宣称的时钟服务器并检查信息的返回路径,以提供对抗干扰的保护机制。
下面我们用android的API来实现获取ntp时间:

public static long getNtpTrustedTime(final Context context) {
        try {
            final Class<?> NtpClass = Class
                    .forName("android.util.NtpTrustedTime");

            Object obj = new Object();
            Method method = NtpClass.getMethod("getInstance", Context.class);
            Object gi = method.invoke(obj, context);
            method = NtpClass.getMethod("forceRefresh");
            Object receiverce = method.invoke(gi);
            if ((Boolean) receiverce) {
                method = NtpClass.getMethod("getCachedNtpTime");
                Object cachedNtpTime = method.invoke(gi);
                return (Long) cachedNtpTime;
            }
        } catch (Exception e) {
            Log.d(TAG, e.getMessage());
        }

        return -1;
    }




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182919.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图像分割必备知识点 | Unet详解 理论+ 代码

    图像分割必备知识点 | Unet详解 理论+ 代码文章转自:微信公众号【机器学习炼丹术】。文章转载或者交流联系作者微信:cyx645016617Unet其实挺简单的,所以今天的文章并不会很长。喜欢的话可以参与文中的讨论、在文章末尾点赞、在看点一下呗。0概述语义分割(SemanticSegmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等领域有着比较广泛的应用。上图为自动驾驶中的移动分割任务的分割结果,可以从一张图片中有效的识别

    2022年6月16日
    53
  • loadrunner11 中文激活成功教程版(附详细安装教程)[通俗易懂]

    loadrunner11 中文激活成功教程版(附详细安装教程)[通俗易懂]LoadRunner是一款专业级别的应用负载测试工具,它可以模拟上千万用户对企业应用进行真实的负载测试,通过大量实时监测器和精确的分析来得到最真实的数据,并且支持自动重复测试,以确保数值稳定和准确。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化产品性能和加速应用系统的发布周期。LoadRunner适用于各种体系架构,它从用户关注的“响应时间”、“点击次数”或是工业层面的“吞吐量”…

    2022年7月22日
    7
  • Dockerfile语法及构建简单镜像

    Dockerfile语法及构建简单镜像

    2021年6月2日
    99
  • linux与g++基本知识「建议收藏」

    linux与g++基本知识「建议收藏」基本知识gcc、g++、gdb区别yum、apt、rpm区别二进制包和源码包linux动态库和静态库cpp文件编译流程g++ 重要参数生成库文件生成静态库生成动态库GDB调试gcc、g++、gdb区别GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。gcc是GCC中的GUN C Compiler(C 编译器)g++是GCC中的GUN C++ Compiler(C++编译器)gd

    2022年8月9日
    2
  • spring aop的五大通知类

    spring aop的五大通知类spring aop的五大通知类

    2022年4月22日
    30
  • Android Studio 怎样打JAR包[通俗易懂]

    Android Studio 怎样打JAR包

    2022年2月6日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号