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

news2024/11/27 6:23:03

文章目录

  • 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.coloradmin.cn/o/1318888.html

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

相关文章

Unity中URP下的菲涅尔效果实现(个性化修改)

文章目录 前言一、我们修正一下上篇文章中,可能遗留的Bug1、N向量 变为 单位向量2、使颜色范围在合理区间 二、实现菲涅尔效果强弱可自定义调节三、修改菲涅尔效果颜色1、在属性面板定义颜色属性2、在常量缓冲区申明该参数3、在片元着色器中,用颜色和菲涅…

数据结构 AVL树概念以及实现插入的功能(含Java代码实现)

为啥要有avl树 avl树是在二叉搜索树下的一种进阶形式,是为了防止二叉搜索树在极端情况下产生的链表化的场景,从而在二叉搜索树的基础上,加上了某些条件来阻止这种极端情况的产生,但不是保证完全平衡,而是放开了一定的条件,使得这种情况不那么难以满足.(条件:左右子树的高度差的…

【Vulnhub 靶场】【IA: Keyring (1.0.1)】【中等】【20210730】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/ia-keyring-101,718/ 靶场下载:https://download.vulnhub.com/ia/keyring-v1.01.ova 靶场难度:中等 发布日期:2021年07月30日 文件大小:1.1 GB 靶场作者&#xf…

Day63力扣打卡

打卡记录 寻找最近的回文数(模拟) 链接 class Solution:def nearestPalindromic(self, n: str) -> str:m len(n)candidates [10 ** (m - 1) - 1, 10 ** m 1]selfPrefix int(n[:(m 1) // 2])for x in range(selfPrefix - 1, selfPrefix 2):y …

ArcMap自定义脚本工具箱迁移至ArcGIS pro

本文记录了将ArcMap10.7创建的自定义脚本工具箱(.tbx)迁移至ArcGIS pro的过程 ArcGIS Pro使用的是python版本与ArcMap不同,前者为python3,后者为python2。由于python3 和 python2 的部分语法不兼容,以及一些地理处理工…

性能测试之Artillery(示例及指标)

官方文档:https://www.artillery.io/docs/get-started/first-test PS:文档挺详细,教程比较全 示例 config:http:extendedMetrics: truetarget: http://127.0.0.1:8005phases:- duration: 10 # 持续时间arrivalRate: 10 # 每秒创建10个用户rampTo: 100 …

【漏洞复现】CVE-2023-6848 kodbox远程命令执行

漏洞描述 kodbox 是一个网络文件管理器。它也是一个网页代码编辑器,允许您直接在网页浏览器中开发网站。您可以在基于 Linux、Windows 或 Mac 的平台上在线或本地运行 kodbox。唯一的要求是要有 PHP 5及以上。 kalcaddle kodbox 中发现漏洞,最高版本为 1.48。它已被宣布为关…

LV.13 D5 uboot概述及SD卡启动盘制作 学习笔记

一、uboot概述 1.1 开发板启动过程 开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到内存,然后跳…

目标跟踪 MOT数据集和可视化

目录 MOT15数据集格式简介 gt可视化 本人修改的GT可视化代码: MOT15数据集格式简介 以下内容转自:【目标跟踪】MOT数据集GroundTruth可视化-腾讯云开发者社区-腾讯云 MOT15数据集下载:https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?…

机器学习算法---时间序列

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

vue3中ref及reactive的说明

目录 1.响应式说明 2.vue3的ref及reactive的使用 3.reactive响应式失效问题 4.总结 1.响应式说明 vue的响应式是vue框架中的核心概念之一,它是指当数据发生变化时,vue能够自动更新视图。vue2的响应式是基于Object.defineProperty进行实现的。 当你把…

安全密码(字符串)

#include <stdio.h> #include <stdbool.h> #include <string.h> bool is_secure_password(const char* password); int main() {int M;char password[51];// 读取输入中的密码数量 Mscanf("%d", &M);// 处理每个密码for (int i 0; i < M; …

智慧校园2.0物联网管理平台建设方案:PPT全文22页,附下载

关键词&#xff1a;物联网解决方案&#xff0c;智慧校园解决方案&#xff0c;物联网平台建设方案&#xff0c;物联网应用技术 一、智慧校园2.0物联网管理平台建设背景 1、教育现代化和强国建设的需要&#xff1a;近年来&#xff0c;国家为了加快推进教育现代化、教育强国建设…

OpenSergo Dubbo 微服务治理最佳实践

*作者&#xff1a;何家欢&#xff0c;阿里云 MSE 研发工程师 Why 微服务治理&#xff1f; 现代的微服务架构里&#xff0c;我们通过将系统分解成一系列的服务并通过远程过程调用联接在一起&#xff0c;在带来一些优势的同时也为我们带来了一些挑战。 如上图所示&#xff0c;可…

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…

Apache Flume(5):多个agent模型

可以将多个Flume agent 程序连接在一起&#xff0c;其中一个agent的sink将数据发送到另一个agent的source。Avro文件格式是使用Flume通过网络发送数据的标准方法。 从多个Web服务器收集日志&#xff0c;发送到一个或多个集中处理的agent&#xff0c;之后再发往日志存储中心&…

Maui blazor与sqlite开发一个增删改查

在android端增删改不能运行。也看不出来是什么&#xff0c;但运行到windows可以运行。 引入sqlite-net-pcl 开发Model using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.T…

深入探讨线程池及其关键参数

目录 引言 1. 线程池概述 2. 线程池的工作原理 3. 线程池的关键参数 4. 线程池的最佳实践 5. 实际应用场景 结论 引言 在并发编程领域&#xff0c;线程池是一种重要的工具&#xff0c;用于管理和重用线程&#xff0c;提高程序的性能和效率。线程池可以有效地管理线程的生…

VMware----基于 VMware 玩转 CentOS 虚拟机创建、克隆以及配置后台运行

查看原文 文章目录 一、安装 Vmware二、创建 CentOS7 系统的虚拟机三、克隆虚拟机四、设置虚拟机后台运行 一、安装 Vmware &#xff08;1&#xff09;打开VMware下载地址页面&#xff0c;滑动页面&#xff0c;找到如下界面&#xff0c;点击【下载】 &#xff08;2&#xff…

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密恢复

在计算机技术飞速发展的今天&#xff0c;越来越多的企业走向了数字化办公模式&#xff0c;极大地方便了企业的生产运营&#xff0c;为企业带来了更高的效率。但网络威胁无处不在&#xff0c;网络威胁手段随着计算机技术的不断发展也在不断增加。近期&#xff0c;云天数据恢复中…