TCP/IP详解——DNS 流量分析

文章目录

  • 1. DNS 流量分析
    • 1.1 DNS 基本概念
    • 1.2 DNS 系统特性
    • 1.3 DNS 效率问题
    • 1.4 域名的组成
    • 1.5 域名解析系统
      • 1.5.1 域名解析过程
    • 1.6 DNS 记录种类
    • 1.7 DNS 的报文格式
      • 1.7.1 DNS 报文中的基础结构部分
      • 1.7.2 DNS 查询报文中的问题部分
      • 1.7.3 DNS 响应报文中的资源记录部分
      • 1.7.4 示例
    • 1.8 DNS 数据流量包
    • 1.9 思考

1. DNS 流量分析

1.1 DNS 基本概念

域名(Domain Name):是由一串用点分隔的名字组成的interne 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

DNS(网域名称系统,Domain Name System,有时也简称为域名):是因特网的一项核心服务,它作为可将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的巧问互联网,而不用去记住能够被机器直接读取的IP地址数串。提供主机名字和IP地址之间的转换

  • DNS提供了允许服务器和客户程序相互通信的协议。

  • 对DNS的访问是通过一个地址解析器(resolver)来完成的。

  • 解析器通常是应用程序的一部分。解析器并不像TCP/IP协议那样是操作系统的内核

域名服务主要是基于UDP实现的,服务器的端口号为==53==。

作用:为客户机提供域名解析,根据域名查出对应的 IP 地址。

DNS 系统

  • 作个比喻:域名是名字,IP地址是电话号码,域名服务器是电话簿。
  • 网络中的主机是使用IP地址来进行定位的。
  • IP地址难以记忆,需要用名称(www.baidu.com)来表示lP地址:220.181.111.188
  • IP化址改变后,域名不变,仍可访问。

1.2 DNS 系统特性

  • NIC负责分配顶级域和委派其他指定地区的域的授权机构。
  • 一个独立管理的DNS子树称为一个区域(zone)。一个常见的区域是一个二级域,如noao.edu。
  • 一旦一个区域的授权机构被委派后,由它负责向该区域提供多个名字服务器。当一个新系统加入到一个区域中时,该区域的DNS管理者为该新系统申请一个域名和一个IP地址,并将它们加到名字服务器的数据库中。这就是授权机构存在的必要性。
  • 一个区域的管理者必须为该区域提供一个主名字服务器和至少一个辅助名字服务器。主、辅名字服务器的主要区别在于主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器则从主服务器调入所有信息。我们将辅名字服务器从主服务器调入信息称为区域传送
  • 当一个名字服务器没有请求的信息时,它将如何处理?它必须与其他的名字服务器联系。并不是每个名字服务器都知道如何同其他名字服务器联系。相反,每个名字服务器必须知道如何同根的名字服务器联系
  • 这样一个反复的过程:正在处理请求的名字服务器与根服务器联系,根服务器告诉它与另一个名字服务器联系。
  • DNS的一个基本特性是使用超高速缓存。

1.3 DNS 效率问题

随着互联网的快速扩张,主机数量迅速增加,导致域名的数量也急速增加,接踵而来的问题:

  1. 如何管理域名数据?
    • 超大规模的域名到IP的映射表,如何避免冲突?数据更新?
  2. 如何保证域名容易记忆?(用域名表示IP地址的初衷)

答案:树状的名字空间

  • 名字如同地址,机构,文件夹一样,由大到小,由整体到局部。
  • 通过某种机制,划分管理区块。

1.4 域名的组成

例:www.colasoft.com 级别最低的域名写在左边,级别最高的域名写在右边。.com为顶级域名,.colasoft是二级域名,www是三级域名。

image-20231115094126019

  • 国家顶级域名:cn,jp…

  • 商业顶级域名:com

  • 政府顶级域名:gov

  • 军事顶级域名:mil

  • 教育顶级域名:edu

1.5 域名解析系统

有域名结构还不行,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。

image-20231115095611593

1.5.1 域名解析过程

域名解析过程

  1. 主机向本地域名服务器的查询一般都是采用递归查询
  2. 本地域名服务器向根域名服务器的查询采用迭代查询

image-20231115095926570

如果本机的host中没有,就会去本地的DNS服务器查找,如果本地的DNS服务器中有就会告诉客户机。

如果本地的DNS服务器中没有就会去根服务器查找,根服务器并不会告诉ip地址是什么,而是会让你去查找,会去**.com的服务器中去查找。因为.com的服务器是查不到的所以要去baidu.com服务器中查找。找到后本地服务器会把www.baidu.com**域名所解析的ip地址存到本地的DNS缓存中,再向客户机发送地址。

image-20230713200245440

对于流量分析来讲,一般是在客户端抓包,可以看到递归查询的步骤。

1.6 DNS 记录种类

image-20231115102624397

1.7 DNS 的报文格式

1.7.1 DNS 报文中的基础结构部分

image-20231121162104297

这个报文是由12字节的首部4个长度可变的字段组成。

整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分。

每个字段的含义:

  • 标识(identification):DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。

  • 标志(Flags):DNS 报文中的标志字段。

  • 问题数(Questions):DNS 查询请求的数目。

  • 资源记录数(Answer RRs):DNS 响应的数目。

  • 授权资源记录数(Authority RRs):权威名称服务器的数目。

  • 额外资源记录数(Additional RRs):额外的记录数目(权威名称服务器对应 IP 地址的数目)。

标志字段之后的4个16bit字段说明最后4个变长字段中包含的条目数。

  • 查询问题(Question):所查询的问题。
    • 对于查询报文,问题数通常是1,而其他3项为0。
    • 对于应答报文,回答数(即资源记录数)至少为1,之后的授权资源记录(即其他获取到的权威名字服务器)数和额外信息(即获取到的其他权威名字服务器对应的IP地址)数可以是0或非0。
  • 回答/资源记录部分(Answer):资源记录部分是指 DNS 报文格式中的最后三个字段,包括回答问题区域字段、权威名称服务器区域字段、附加信息区域字段。

基础结构部分中的标志字段(Flags)又分为若干个字段。

image-20231121201123540

标志字段中每个字段的含义如下:

  • QR(Response):1bit字段,查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
  • Opcode:4bit字段。操作码。其中,0 表示标准查询(域名到IP地址);1 表示反向查询(IP地址到域名);2 表示服务器状态请求。
  • AA(Authoritative):1bit字段。授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
  • TC(Truncated):1bit字段。表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
  • RD(Recursion Desired):1bit字段。期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
  • RA(Recursion Available):1bit字段。可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
  • Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
  • rcode(Reply code):4bit字段。返回码字段,表示响应的差错状态。
    • 当值为 0 时,表示没有错误;
    • 当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;
    • 当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;
    • 当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;
    • 当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;
    • 当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。

1.7.2 DNS 查询报文中的问题部分

image-20231121201141803

该部分中每个字段含义如下:

  • 查询名(Domain Name):一般为要查询的域名,有时也会是 IP 地址,用于反向查询。

  • 查询类型(Type):DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP 地址。

  • 查询类(Class):地址类型,通常为互联网地址,值为 1。

    image-20231121171321276

查询名是要查找的名字,它是一个或多个标识符的序列,每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符,计数字节的值必须是0~63的数,因为标识符的最大长度仅为63,如:

image-20231121170907017

1.7.3 DNS 响应报文中的资源记录部分

image-20231121170741418

资源记录格式中每个字段含义如下:

  • 域名(Domain Name):DNS 请求的域名。
  • 类型(Type):资源记录的类型,与问题部分中的查询类型值是一样的。
  • 类(Class):地址类型,与问题部分中的查询类值是一样的。
  • 生存时间(Time to Live):以秒为单位,表示资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间。它同时也可以表明该资源记录的稳定程度,稳定的信息会分配一个很大的值。
  • 资源数据长度(Data Length):资源数据的长度。
  • 资源数据:表示按查询段要求返回的相关资源记录的数据。

1.7.4 示例

下图显示,此DNS响应报文被封装在UDP数据报中,返回的两个回答除了IP地址不同外,其余是一样的,每个指针值为12,表示从DNS首部开始的偏移量:

image-20231121172041000

1.8 DNS 数据流量包

使用Wireshark抓包查看

发现只有两个包,是递归查询。

image-20231115102050448

DNS请求包

image-20231115102338639

DNS应答包

image-20231115102555410

使用OmniPeek抓包查看

image-20231121194945196

DNS请求包

image-20231121200343347

DNS应答包

image-20231121200555205
在这里插入图片描述

1.9 思考

DNS可以使用TCP作为传输协议进行交互吗

  • DNS名字服务器使用的熟知端口号无论UDP还是TCP都是53端口号。这意味着DNS均支持UDP和TCP访问。

  • 可以使用TCP,衡量效率后在查询时使用UDP,效率高速度快,使用TCP查询话打开网页速度慢三次握手四次挥手开销大。但在域名服务器同步数据时使用TCP更加可靠。因此DNS协议可以根据需要选择使用UDP或者TCP作为传输协议,以满足不同的网络环境的需求。

  • 区域传送使用TCP(因为数据量大,使用TCP效率高)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源项目】WPF 扩展 -- 多画面视频渲染组件

目录 1、项目介绍 2、组件集成 2.1 下载地址 2.2 添加依赖 3、使用示例 3.1 启动动画 3.2 视频渲染 3.3 效果展示 4、项目地址 1、项目介绍 Com.Gitusme.Net.Extensiones.Wpf 是一款 Wpf 扩展组件。基于.Net Core 3.1 开发,当前是第一个发布版本 1.0.0&am…

Java架构师系统架构内部维度分析

目录 1 导语2.1 安全性维度概述2.2 流程安全性2.3 架构安全性2.4 安全维度总结3 伸缩性维度概述和场景思路3.1 无状态应用弹性伸缩3.2 阿里云Knative弹性伸缩3.3 有状态应用弹性伸缩3.4 伸缩性维度总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语

数据仓库与数据挖掘c5-c7基础知识

chapter5 分类 内容 分类的基本概念 分类 数据对象 元组(x,y) X 属性集合 Y 类标签 任务 基于有标签的数据,学习一个分类模型,通过这个分类模型,可以把一组属性x映射到一个特定的类别y上 类别y 提前设定好的--如:学生…

git 切换远程地址分支 推送到指定地址分支 版本回退

切换远程地址 1、切换远程仓库地址: 方式一:修改远程仓库地址 【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。 git remote set-url https://gitee.com/xxss/omj_gateway.git 方式二:先删除远程仓库地址&…

八股文打卡day2——计算机网络(2)

面试题:讲一下三次握手的过程? 我的回答: 1.客户端发送报文段到服务器,主动建立连接。这个报文段中SYN标志位表示:这个报文段是用于连接的,此时SYN标志位设置为1。其中初始序列号字段包含了客户端的初始序…

华为鸿蒙应用--欢迎页SplashPage+倒计时跳过(自适应手机和平板)-ArkTs

鸿蒙ArkTS 开发欢迎页SplashPage倒计时跳过,可自适应平板和手机: 一、SplashPage.ts import { BreakpointSystem, BreakPointType, Logger, PageConstants, StyleConstants } from ohos/common; import router from ohos.router;Entry Component struct…

2023/12/17 初始化

普通变量(int,float,double变量)初始化: int a0; float b(0); double c0; 数组初始化: int arr[10]{0}; 指针初始化: 空指针 int *pnullptr; 被一个同类型的变量的地址初始化(赋值) int…

饥荒Mod 开发(十四):制作屏幕弹窗

饥荒Mod 开发(十三):木牌传送 在上一个文章里面制作了一个传送选择页面,是一个全屏的窗口,那饥荒中如何制作一个全屏的窗口,下面介绍一下如何从零开始制作一个全屏窗口 制作屏幕窗口 饥荒中的全屏窗口都有一个基类 “Screen”,我…

结构型设计模式(一):门面模式 组合模式

门面模式 Facade 1、什么是门面模式 门面模式(Facade Pattern)是一种结构型设计模式,旨在为系统提供一个统一的接口,以便于访问子系统中的一群接口。它通过定义一个高层接口,简化了客户端与子系统之间的交互&#xf…

优质全套SpringMVC教程

三、SpringMVC 在SSM整合中,MyBatis担任的角色是持久层框架,它能帮我们访问数据库,操作数据库 Spring能利用它的两大核心IOC、AOP整合框架 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想(不是设计模式-思想就是我们…

【具身智能评估3】具身视觉语言规划(EVLP)度量标准汇总

参考论文:Core Challenges in Embodied Vision-Language Planning 论文作者:Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文:https://arxiv.org/abs/2106.13948 论文出处:Jo…

netty-daxin-4(httpwebsocket)

文章目录 学习链接http服务端NettyHttpServerHelloWorldServerHandler 客户端ApiPost websocket初步了解为什么需要 WebSocket简介 浏览器的WebSocket客户端客户端的简单示例客户端的 APIWebSocket 构造函数webSocket.readyStatewebSocket.onopenwebSocket.onclosewebSocket.ο…

MATLAB - MPC - QP Solvers

系列文章目录 前言 模型预测控制器 QP 求解器将线性 MPC 优化问题转换为一般形式的 QP 问题 受到线性不等式约束 其中 x 是解向量。H 是黑森矩阵。当预测模型和调整权重在运行时不发生变化时,该矩阵保持不变。A 是线性约束系数矩阵。当预测模型在运行时不发生变化时…

Eclipse 自动生成注解,如果是IDEA可以参考编译器自带模版进行修改

IDEA添加自动注解 左上角选择 File -> Settings -> Editor -> File and Code Templates&#xff1b; 1、添加class文件自动注解&#xff1a; ​/*** <b>Function: </b> todo* program: ${NAME}* Package: ${PACKAGE_NAME}* author: Jerry* date: ${YEA…

介绍strncpy函数

strncpy函数需要引用#include <string.h>头文件 函数原型&#xff1a; char *_Dest 是字符串的去向 char *_Source是字符串的来源 size_t_Count是复制字符串的大小 #include <stdio.h> #include <string.h> int main() { char arr[128] { \0 }; …

【JAVA-Day69】抛出异常的精髓:深度解析 throw、throws 关键字,优雅处理异常问题

抛出异常的精髓&#xff1a;深度解析 throw、throws 关键字&#xff0c;优雅处理异常问题 &#x1f680; 抛出异常的精髓&#xff1a;深度解析 throw、throws 关键字&#xff0c;优雅处理异常问题 &#x1f680;一、什么是抛出异常 &#x1f60a;二、如何抛出异常 &#x1f914…

MetaAI语音翻译大模型Seamless登场,主打AI无缝同声传译

论文题目&#xff1a; Seamless: Multilingual Expressive and Streaming Speech Translation 论文链接&#xff1a; https://ai.meta.com/research/publications/seamless-multilingual-expressive-and-streaming-speech-translation/ 代码链接&#xff1a; GitHub - facebook…

DSP捕获输入简单笔记

之前使用stm32的大概原理是&#xff1a; 输入引脚输入一个脉冲&#xff0c;捕获1开始极性捕获&#xff0c;捕获的是从启动捕获功能开始计数&#xff0c;捕获的是当前的计数值&#xff1b; 例如一个脉冲&#xff0c;捕获1捕获上升沿&#xff0c;捕获2捕获下降沿&#xff1b;而两…

reactive数据不响应

我们知道&#xff0c;reactive函数用于创建对象等复杂数据的响应式代理对象&#xff0c;当该对象的属性发生变化时&#xff0c;会自动触发视图更新。 但在Vue 3中&#xff0c;当我们使用reactive创建的对象或数组进行赋值时&#xff0c;尽管能够完成正常的赋值操作&#xff0c…

TrustZone之调试、跟踪和分析

接下来,我们将查看系统中的调试和跟踪组件,如下图所示: 现代Arm系统包括支持调试和性能分析的广泛功能。在TrustZone中,我们必须确保这些功能不能被用来危害系统的安全性。 关于调试功能,考虑开发新的SoC。不同的开发人员被信任调试系统的不同部分。芯片公司的工程…