网络安全项目实战(六)--报文检测

11. NTP应用协议报文解析

  • 目标
    • 了解NTP协议
    • 了解NTP包基本捕获方式
    • 了解NTP协议探测(解析)方法(简单方法)

11.1. 使用ntpdate同步网络时间

  • 安装
$ sudo apt-get install ntpdate
  • 对时服务

查看时间

$ date  #date可以查看当前系统时间

对时

$ sudo ntpdate -u 133.100.11.8  #同步到日本的服务器时间
  • 常用的对时服务器

    ntp.api.bz , 中国上海时间

11.2. NTP 协议介绍

NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。

11.2.1. NTP工作原理

NTP的基本工作原理如图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。Device B作为NTP时间服务器,即Device A将使自己的时钟与Device B的时钟同步。NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。

11.2.2. 系统时钟同步的工作过程

Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。至此,Device A已经拥有足够的信息来计算两个重要的参数:NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。

Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。这样,Device A就能够根据这些信息来设定自己的时钟,使之与Device B的时钟同步。

11.2.3. NTP的报文格式

NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文。

我们主要关注时钟同步报文:

主要字段的解释如下:

  • LI(Leap Indicator):长度为2比特,值为“11”时表示告警状态,时钟未被同步。为其他值时NTP本身不做处理。

  • VN(Version Number):长度为3比特,表示NTP的版本号,目前的最新版本为3。

  • Mode:长度为3比特,表示NTP的工作模式。不同的值所表示的含义分别是:0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用。

  • Stratum:系统时钟的层数,取值范围为1~16,它定义了时钟的准确度。层数为1的时钟准确度最高,准确度从1到16依次递减,层数为16的时钟处于未同步状态,不能作为参考时钟。

  • Poll:轮询时间,即两个连续NTP报文之间的时间间隔。

  • Precision:系统时钟的精度。

  • Root Delay:本地到主参考时钟源的往返时间。

  • Root Dispersion:系统时钟相对于主参考时钟的最大误差。

  • Reference Identifier:参考时钟源的标识。

  • Reference Timestamp:系统时钟最后一次被设定或更新的时间。

  • Originate Timestamp:NTP请求报文离开发送端时发送端的本地时间。

  • Receive Timestamp:NTP请求报文到达接收端时接收端的本地时间。

  • Transmit Timestamp:应答报文离开应答者时应答者的本地时间。

  • Authenticator:验证信息。

 

11.2.4. NTP的工作模式

设备可以采用多种NTP工作模式进行时间同步:

  • 客户端/服务器模式

  • 对等体模式

  • 广播模式

  • 组播模式

客户端/服务器和对等体模式中,设备从指定的服务器或对等体获得时钟同步,增加了时钟的可靠性。

客户端/服务器模式

在客户端/服务器模式中,客户端向服务器发送时钟同步报文,报文中的Mode字段设置为3(客户模式)。服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的Mode字段设置为4(服务器模式)。客户端收到应答报文后,进行时钟过滤和选择,并同步到优选的服务器。在该模式下,客户端能同步到服务器,而服务器无法同步到客户端(单向)。其他模式 暂不介绍

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/250971.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自然数分解 C语言xdoj64

输入说明 一个正整数 n&#xff0c;0<n<30 输出说明 输出n个连续奇数&#xff0c;数据之间用空格隔开&#xff0c;并换行 输入样例 4 输出样例 13 15 17 19 int main() {int n;scanf("%d",&n);if(n % 2 0){//n为偶数int in;//打印数字个数&#xff0c;做循…

《PySpark大数据分析实战》-12.Spark on YARN配置Spark运行在YARN上

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

【MySQL】(DDL) 表操作-查询

查询&#xff1a; show tables ; //查询所有表名称 desc 表名称 ; //查询表结构 show create table 表名称; //查看创建表语句 create table 表名 ( 字段名1 字段类型1,字段名2 字段类型2) ; //创建表结构 示列&#xff1a; 1. show tables; use 数据库名; show tables …

C++ Qt开发:Tab与Tree组件实现分页菜单

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍tabWidget选择夹组件与TreeWidget树形选择组件…

NE555汽车防盗报警电路图

实用汽车防盗报警电路如图所示。它主要由防盗部分和报警两大部分电路组成。防盗电路&#xff1a;当汽车主人离开汽车时&#xff0c;将防盗开关S置于“B”位置&#xff0c;使汽车进入防盗状态。当有窃贼进入驾驶室企图发动汽车将其盗走时&#xff0c;只要拧动点火开关&#xff0…

【Hive】【Hadoop】工作中常操作的笔记-随时添加

文章目录 1、Hive 复制一个表:2、字段级操作3、hdfs 文件统计 1、Hive 复制一个表: 直接Copy文件 create table new_table like table_name;hdfs dfs -get /apps/hive/warehouse/ods.db/table_nameload data local inpath /路径 into table new_table;修复表&#xff1a; m…

netty-daxin-4(httpwebsocket)

文章目录 http服务端NettyHttpServerHelloWorldServerHandler 客户端ApiPost http 服务端 NettyHttpServer 可参考&#xff1a;GitHub上netty项目中的example包中的代码 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.net…

Linux——进程创建与进程终止

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、进程创建1、fork函数初识2、fork函数返回值3、写时拷贝4、fork常规用法5、fork调用失败的…

第15章 《乐趣》Page305~311, 代码精简以后,讨论一下引用含义的问题

将Page305~311的代码精简了一下&#xff0c;讨论一下引用含义的问题&#xff0c;精简之后的代码如下&#xff1a; #include <iostream> #include <SDL2/SDL.h>using namespace std;namespace sdl2 {char const* last_error() {return SDL_GetError(); }struct Ini…

盲盒小程序如何搭建?

随着移动互联网的发展&#xff0c;为了让消费者方便快捷地体验盲盒抽取乐趣&#xff0c;线上盲盒系统的开发成为了一个必要的过程。 今天本文将为大家介绍盲盒系统的搭建过程。 盲盒系统搭建过程 开发需求 在开发盲盒系统前&#xff0c;需要对盲盒市场深入分析&#xff0c;了…

Python+Requests+Pytest+YAML+Allure实现接口自动化

本项目实现接口自动化的技术选型&#xff1a;PythonRequestsPytestYAMLAllure &#xff0c;主要是针对之前开发的一个接口项目来进行学习&#xff0c;通过 PythonRequests 来发送和处理HTTP协议的请求接口&#xff0c;使用 Pytest 作为测试执行器&#xff0c;使用 YAML 来管理测…

Redis 数据类型和对象机制

一、Redis 简介 Redis 是&#xff08;key-value&#xff09;的 NoSQL 数据库&#xff0c;所有的 key 都是 String ,它的 value 可以是 String、hash、list、set、zset&#xff08;有序集合&#xff09;、Bitmaps&#xff08;位图&#xff09;、HyperLogLog、GEO(地理信息定位)…

【异步绘制】UIView刷新原理 与 异步绘制

快捷目录 壹、 iOS界面刷新机制贰、浅谈UIView的刷新与绘制概述一.UIView 与 CALayer1. UIView 与 CALayer的关系2. CALayer的一些常用属性contents属性contentGravity属性contentsScale属性maskToBounds属性contentsRect属性 二.View的布局与显示1.图像显示原理2.布局layoutSu…

IDEA中alt enter不显示创建实现类快捷键

alt enter不显示创建实现类快捷键是因为idea中的设置没打开&#xff0c;按照一下设置打开就可以了。 点击setting-->>editor-->>intentions-->>java下的declaration 如下图所示&#xff1a;

【第3期】Springboot集成SpringSecurity+RSA+ECS免密登录

本期简介 RSA是非常安全的非对称加解密算法&#xff0c;单纯的RSA的原理和使用网络资料较多&#xff0c;本期不细讲RSA的原理&#xff0c;主要讲解实战&#xff0c;如何与SpringbootSpringSecurity集成起来&#xff0c;做到在安全框架基础上&#xff0c;对用户的密码进行加密存…

centos离线安装mosquitto

1.x86_64架构centos7操作系统mosquitto包 本次真正要安装的机器是x86_64架构的AMD Ryzen 3 &#xff0c;操作系统是centos7 先找一台能联网的centos7机器 添加 EPEL 软件库 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm下载rpm包 …

Flink-水位线和时间语义

Flink中的时间含义 在实际应用中&#xff0c;事件时间语义会更为常见。一般情况下&#xff0c;业务日志数据中都会记录数据生成的时间戳&#xff08;timestamp&#xff09;&#xff0c;它就可以作为事件时间的判断基础。 在Flink中&#xff0c;由于处理时间比较简单&#xff0c…

开机0xc000000e修复方式,电脑出现错误代码0xc000000e

0xc000000e是Windows操作系统中的一个常见错误代码。错误代码0xc000000e表示操作系统无法找到正确的启动设备或引导记录损坏&#xff0c;导致电脑无法正常启动。今天的这篇文章将和大家分享一些关于开机0xc000000e修复的方法。 一.电脑出现开机0xc000000e的原因 开机出现0xc00…

证明四元数乘法与旋转矩阵乘法等价

刚体四元数姿态控制 一文中没有证明的公式 R ( Q 1 ) R ( Q 2 ) R ( Q 1 ∘ Q 2 ) R(Q_1)R(Q_2)R(Q_1\circ Q_2) R(Q1​)R(Q2​)R(Q1​∘Q2​) 在这篇文章中证明。 首先找几个数测试是否等价。 quaternions.py的代码见 自用的四元数、欧拉角、旋转矩阵转换代码。 下面的代码中…

Codeforces Round 915 (Div. 2)(A~C)

坐牢一个半小时...D、E待补(太菜了&#xff0c;做的题还是太少了&#xff09; A - Constructive 问题集 思路&#xff1a;手画一下发现&#xff1a;n个城市最多能重建n * n 的城市&#xff0c;所以n * m 需要重建max(n , m)个城市。 // Problem: A. Constructive Problems /…