【计算机网络】lab8 DNS协议

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. 实验目的
3. 实验需要
4. 实验步骤
4.1 Manual Name Resolution
4.2 Capture a Trace
4.3 Inspect the Trace
4.4 Details of DNS Messages
4.5 DNS Response Time
5. 总结
1. 前言
本系列重点针对山东大学-软件学院-计算机网络实验的任务。
希望通过实验,一方面加强大家对理论知识的认识,另一方面提升大家的动手能力。
也希望我的博客能够给学弟学妹们的学习提供一些帮助。
2. 实验目的
DNS(域名系统)是将域名转换为 IP 地址等的系统和协议。课文第 7.1 节介绍了 DNS。在进行本实验之前,请先复习该章节。
3. 实验需要
Wireshark :本实验室使用 Wireshark 捕捉或检查数据包跟踪。数据包跟踪是网络上某个位置的流量记录,就像对通过特定线路的所有比特进行快照一样。数据包跟踪记录了每个数据包的时间戳,以及组成数据包的比特,从低层报头到高层内容。Wireshark 可在大多数操作系统上运行,包括 Windows、Mac 和 Linux。它提供了一个图形用户界面,显示数据包的顺序和比特在解释为协议标头和数据时的含义。数据包用颜色编码来表达其含义,Wireshark 包含多种过滤和分析数据包的方法,让你可以研究不同方面的行为。它被广泛用于排除网络故障。如果您的电脑上尚未安装 Wireshark,可以从 www.wireshark.org 下载。我们强烈建议您观看网站上的 5 分钟视频短片 “Wireshark 简介”。
Browser: 本实验室使用网络浏览器查找或获取网页作为工作量。任何网络浏览器都可以。
dig: dig 是一种灵活的命令行工具,用于查询远程 DNS 服务器,它取代了旧式的 nslookup 程序。它已安装在 Mac OS 上。在 Window 上,你可以从 ISC 的 BIND 网站下载 dig,作为 bind 下载的一部分。(请注意,可能存在一些依赖关系。请查看在线说明以设置 dig
4. 实验步骤
在典型的网络中,计算机会与本地 DNS 名称服务器联系,将域名解析为 IP 地址。本地域名服务器可能是公司网络中的另一台计算机、ISP 的计算机或无线接入点。它与互联网上的远程 DNS 名称服务器交换一系列信息,以执行解析。设置如下图所示。
我们在实验室中假设了这种设置,它有一个重要的含义:我们在计算机上收集的跟踪将看到我们的计算机与本地名称服务器之间的交换,但看不到本地名称服务器与远程名称服务器之间的交换。
4.1 Manual Name Resolution
Dig(全称为“Domain Information Groper”,即域名信息搜索器)是一款强大的DNS查询工具,可以展示DNS查询过程的详细信息,广泛应用于DNS故障诊断。尽管Linux和Unix系统通常预装了此工具,但在Windows操作系统中,仅提供了nslookup工具。如果需要使用dig,则必须手动安装并配置。
安装和配置Dig工具:
首先,下载并安装dig工具,并将相关的动态链接库(DLL)文件以及dig.exe文件复制到C:\Windows\System32目录中。这样可以确保dig命令可以在Windows环境下正常使用。
使用Dig进行DNS查询:
一旦配置完成,您可以通过dig向根名称服务器发起请求,这通常是执行DNS解析过程的第一步。在没有本地缓存的情况下,dig会直接从根名称服务器开始逐级解析。
如果没有安装dig,见如下文章:Windows安装dig命令-腾讯云开发者社区-腾讯云
例如,执行命令 dig www.sdu.edu.cn 时,dig将会向名称服务器发送请求,查询该域名的IP地址。值得注意的是,来自根名称服务器的回复通常不包含完全的域名解析信息,但它会提供指向更接近目标域名解析结果的名称服务器的信息。这使得dig能够高效地引导用户通过一系列的DNS服务器进行查询,直至获取所需的IP地址。
查询校园网的dns服务器地址,如下网址:
关于调整校园网DNS域名解析服务器IP地址的通知 -山东大学信息化工作办公室 (sdu.edu.cn)
查询到为:192.168.254.141
打开cmd,输入命令:dig @192.168.254.141 www.baidu.com,得到截图如下

得知百度的IP地址为:182.61.200.6和182.61.200.7
4.2 Capture a Trace
使用如下方式捕获浏览器发出的DNS请求的跟踪
- 关闭不必要的浏览器标签和窗口
- 启动线鲨,用“udp port 53”的过滤器开始捕获。
- 重复上一步骤中的挖掘命令。这一次,您应该会看到与您在跟踪窗口中捕获的命令相对应的DNS请求和回复数据包。
- 等待10秒钟,然后打开浏览器,浏览各种网站。使用您的浏览器将在您访问新域的浏览器时生成DNS流量,以及在您的浏览器运行其后台任务时生成DNS任务。
- 当您有一个良好的DNS流量样本时,请停止捕获。
4.3 Inspect the Trace
点开这个trace,点开其DNS block,如下图:

可见:
- DNS消息是在UDP中携带的,所用端口为53
- Transaction id(事物标识符),用于连接请求及其回复,同一事务带同一事务标识符
- 标志段,用于标识消息类型等
- 然后是查询,回答,授权等还有additional record,这个也是header的结尾
- 之后是一个查询,查询的是www.uwa.edu.au
- 一些派生信息,不包括在真正的trace中
4.4 Details of DNS Messages
经过对UDP消息的仔细查看,回答问题:
- 我的事务ID为4个16进制数,为16位.
- DNS的flag字段的第一个二进制数标志这个消息是什么类型的,0为query,1为response。
- 观察到,DNS的头部有12个字节为固定头部,还有4个可变长度区段,queries,answers,Authoritative nameservers,additional records(在固定12字节后)。
查看初始响应(response)的数据:

可知:
- 在初始响应中,域名服务器的名称包含在"Authority Nameservers"部分。 "Authority Nameservers "部分列出了可用于进一步解析域名的权威DNS服务器的信息。该部分还包括name,type,TTL等(可以点开自己看看),这些信息可以告诉您存储有关请求的DNS记录的时间。携带域名服务器的名称的记录类型是"NS记录",它是一种DNS资源记录类型。 NS记录是用于指定授权给特定域名的DNS服务器的记录。 每个域名都必须至少有一个NS记录,指向授权该域名的DNS服务器。 当一个域名被查询时,响应中的Authority Nameservers部分将包含来自NS记录的权威DNS服务器信息。
类似的,查看下面图:

可知:
- 名称服务器的IP地址在DNS查询中被携带,携带IP地址的记录类型是A记录。

可知:
- 对于最终响应,域名的IP地址通常包含在DNS响应消息的Answer部分中。
4.5 DNS Response Time
按照指导要求,得到MAX及AVG的IO图表如下:


Explore Your Network
- 查找其他类型的DNS记录
- 谷歌提供了一个您可以使用的替代DNS名称服务器系统,称为“谷歌公共DNS”。查找它,并按照配置说明进行测试。尝试看看此DNS服务是否比现有的DNS安排快
- 反向DNS查找确定与IP地址关联的域名。
- 阅读有关DNSSEC的信息,并使用dig执行一些DNSSEC查找。
- 反向DNS查找确定与IP地址关联的域名。
- 谷歌提供了一个您可以使用的替代DNS名称服务器系统,称为“谷歌公共DNS”。查找它,并按照配置说明进行测试。尝试看看此DNS服务是否比现有的DNS安排快
DNS的安全问题一直被互联网研究和工程领域广为关注,但是有一种普遍存在的攻击却始终没有解决,即DNS的欺骗和缓存污染问题。DNS安全扩展主要是为了解决这一问题而提出的(尽管它还有其他用途)。因此,在介绍DNSSEC的原理之前有必要简单介绍DNS欺骗和缓存污染攻击的原理。
5. 总结
本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~

相关文章:
【计算机网络】lab8 DNS协议
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
了解linux中的“of_property_read_u32()”
of_property_read_u32(node, "post-pwm-on-delay-ms",&data->post_pwm_on_delay); /*根据"post-pwm-on-delay-ms",从属性中查找并读取一个32位整数*/ /*读到一个32位整数,保存到data->post_pwm_on_delay中*/ of_property_read_u32…...
iOS - Objective-C 底层中的内存屏障
1. 基本实现 // objc-os.h 中的内存屏障实现 #define OSMemoryBarrier() __sync_synchronize()// ARM 架构特殊处理 static ALWAYS_INLINE void OSMemoryBarrierBeforeUnlock() { #if defined(__arm__) || defined(__arm64__)OSMemoryBarrier(); #endif } 2. 解锁前的内存屏…...
阿里云服务器扩容系统盘后宝塔面板不显示扩容后的大小
解决方法步骤: 1. yum install cloud-utils-growpart xfsprogs -y 2.growpart /dev/vda 3 扩容系统盘的第3个分区 主要是这个命令1 3. fdisk -l 4. df -h 5. xfs_growfs /dev/vda3 主要是这个命令2 主要使用 df -Th 这个命令查看对应的文件系统类型 (1)、ext…...
c语言——【linux】多进程编程 【进程的创建,相关shell指令,进程状态切换,回收资源,守护进程等】
1.思维导图 2.进程的创建 函数原型:pid_t fork(void); 功能描述:以当前进程为父进程,创建一个子进程 进程链和进程扇的创建 3.多进程具体使用 3.1进程替换 exec 函数一族 int execl(const char *path, const char *arg, ... /* (char *) N…...
macos 搭建 ragflow 开发环境
ragflow 是一个很方便的本地 RAG 库。本文主要记录一下在本机的部署过程 1、总体架构说明 开发环境:macbook pro(m1),16G内存 512G固态 因本机的内存和硬盘比较可怜,所以在服务器上部署基础 docker 包,…...
信创改造-龙蜥操作系统搭载MySql、Tomcat等服务
龙蜥操作系统 Anolis OS 8 是 OpenAnolis 社区推出的完全开源、中立、开放的发行版,它支持多计算架构,也面向云端场景优化,兼容 CentOS 软件生态。Anolis OS 8 旨在为广大开发者和运维人员提供稳定、高性能、安全、可靠、开源的操作系统服务。…...
Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现
目录 常用方法 示例代码 常见实现 Java中的双端队列(Deque,Double Ended Queue)是一种队列,它允许在队列的两端插入和删除元素。与普通队列(FIFO)不同,双端队列的元素可以从队列的两端进行添…...
【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
提升数据质量:质量评估与改进策略 引言:数据质量的概念 在大数据时代,数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途,确保数据的准确性、完整性、一致性和及时性是数据质量的…...
arcgis中生成格网矢量带高度
效果 1、数据准备 (1)矢量边界(miain.shp) (2)DEM(用于提取格网标高) (3)DSM(用于提取格网最高点) 2、根据矢量范围生成格网 模板范围选择矢量边界,像元宽度和高度根据坐标系来输入,我这边是4326的,所以输入的是弧度,输出格网矢量gewang.shp 3、分区统计 …...
使用gtsam添加OrientedPlane3Factor平面约束因子
在基于地面约束的SLAM优化中,已知的地面信息(如 plan.pcd 文件中的地面模型)可以用作一个先验约束,以帮助优化位姿估计。具体而言,这个过程涉及将地面模型和每个帧的位姿结合,以创建一个因子模型࿰…...
换了城市ip属地会变吗?为什么换了城市IP属地不变
当我们跨越城市的界限,从一个地方迁移到另一个地方时,许多日常使用的网络服务和应用程序都会感知到这种变化,其中一个显著的现象就是IP属地的变化。IP属地,即IP地址所在的地理位置信息,它通常与互联网服务提供商&#…...
移远通信多模卫星通信模组BG95-S5获得Skylo网络认证,进一步拓展全球卫星物联网市场
近日,全球领先的物联网整体解决方案供应商移远通信正式宣布,其支持“卫星蜂窝”多模式的高集成度NTN卫星通信模组BG95-S5已成功获得NTN网络运营商Skylo的网络认证。BG95-S5也成为了获得该认证的最新款移远卫星通信模组。 BG95-S5模组顺利获得Skylo认证&a…...
IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南
IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南 什么是 Type Hierarchy? Type Hierarchy 是 IntelliJ IDEA 提供的一个工具,允许开发者查看某个类的继承关系及其实现的接口结构。它是理解类关系的重要工具,尤其在处理复杂的继承体系…...
简聊MySQL并发事务中幻读、虚读问题的解决方案
在MySQL数据库中,事务的幻读和虚读问题是并发控制中的关键挑战。以下是针对这两个问题的解决方案及原理说明,并附上相关示例。 一、幻读问题及其解决方案 幻读问题的定义 幻读是指一个事务在前后两次查询同一个范围的时候,后一次查询看到了…...
【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序
Tomcat–容器(Container) 下载 Apache Tomcat - Welcome! 下载完成 请求/响应 结构 测试 查看Jdk版本 改端口号localhost8080–>8099 学学人家以后牛逼了可以用自己名字当文件夹名 配置端口8099 找到server文件 用记事本打开 再打开另一个logging文件 ”乱码解决“步骤&…...
【Qt】01-了解QT
踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…...
websocket股票行情接口
股票行情区别 交易所出来的数据,不管通过什么渠道,延时一般都不会差太远,估计一般也就几十ms的差别。 但是如果是通过http轮询,不太可能几十ms全部轮询一次。所以,做量化的话,用http协议是最次的选择。 …...
朴素贝叶斯分类器
目录 一、生成模型(学习)(Generative Model) vs 判别模型(学习)(Discriminative Model) 1、官方说明 2、通俗理解 3、举例 二、生成学习算法 1、数学符号说明 2、贝叶斯公式 …...
智能化植物病害检测:使用深度学习与图像识别技术的应用
植物病害一直是农业生产中亟待解决的问题,它不仅会影响作物的产量和质量,还可能威胁到生态环境的稳定。随着人工智能(AI)技术的快速发展,尤其是深度学习和图像识别技术的应用,智能化植物病害检测已经成为一…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
