【计算机网络】lab8 DNS协议

devtools/2025/1/17 11:12:40/

🌈 个人主页:十二月的猫-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请求的跟踪

  1. 关闭不必要的浏览器标签和窗口
  2. 启动线鲨,用“udp port 53”的过滤器开始捕获。
  3. 重复上一步骤中的挖掘命令。这一次,您应该会看到与您在跟踪窗口中捕获的命令相对应的DNS请求和回复数据包。
  4. 等待10秒钟,然后打开浏览器,浏览各种网站。使用您的浏览器将在您访问新域的浏览器时生成DNS流量,以及在您的浏览器运行其后台任务时生成DNS任务。
  5. 当您有一个良好的DNS流量样本时,请停止捕获。

4.3 Inspect the Trace

点开这个trace,点开其DNS block,如下图:

可见:

  1. DNS消息是在UDP中携带的,所用端口为53
  2. Transaction id(事物标识符),用于连接请求及其回复,同一事务带同一事务标识符
  3. 标志段,用于标识消息类型等
  4. 然后是查询,回答,授权等还有additional record,这个也是header的结尾
  5. 之后是一个查询,查询的是www.uwa.edu.au
  6. 一些派生信息,不包括在真正的trace中

4.4 Details of DNS Messages

经过对UDP消息的仔细查看,回答问题:

  1. 我的事务ID为4个16进制数,为16位.
  2. DNS的flag字段的第一个二进制数标志这个消息是什么类型的,0为query,1为response。
  3. 观察到,DNS的头部有12个字节为固定头部,还有4个可变长度区段,queries,answers,Authoritative nameservers,additional records(在固定12字节后)。

查看初始响应(response)的数据:

可知:

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

类似的,查看下面图:

可知:

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

可知:

  1. 对于最终响应,域名的IP地址通常包含在DNS响应消息的Answer部分中。

4.5 DNS Response Time

按照指导要求,得到MAX及AVG的IO图表如下:

Explore Your Network

  1.         查找其他类型的DNS记录
    1.         谷歌提供了一个您可以使用的替代DNS名称服务器系统,称为“谷歌公共DNS”。查找它,并按照配置说明进行测试。尝试看看此DNS服务是否比现有的DNS安排快
      1.         反向DNS查找确定与IP地址关联的域名。
        1.         阅读有关DNSSEC的信息,并使用dig执行一些DNSSEC查找。

DNS的安全问题一直被互联网研究和工程领域广为关注,但是有一种普遍存在的攻击却始终没有解决,即DNS的欺骗和缓存污染问题。DNS安全扩展主要是为了解决这一问题而提出的(尽管它还有其他用途)。因此,在介绍DNSSEC的原理之前有必要简单介绍DNS欺骗和缓存污染攻击的原理。

5. 总结 

本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~


http://www.ppmy.cn/devtools/151258.html

相关文章

PyTorch框架——基于深度学习YOLOv11神经网络路面坑洞检测系统

基于深度学习YOLOv11神经网络路面坑洞检测系统,其能识别路面坑洞,见如下 第一步:YOLOv11介绍 YOLOv11是由Ultralytics公司开发的新一代目标检测算法,它在之前YOLO版本的基础上进行了显著的架构和训练方法改进。以下是YOLOv11的一…

带头双向循环链表(数据结构初阶)

文章目录 双向链表链表的分类概念与结构实现双向链表定义链表结构链表打印判空申请结点初始化头插尾插头删尾删查找指定位置插入和删除销毁链表 顺序表和链表的分析结语 欢迎大家来到我的博客,给生活来点impetus!! 这一节我们学习双向链表&a…

root后如何隐藏环境?

很多小伙伴在给手机root之后以为就大功告成啦!其实你要做的才刚刚开始,很多安全性强的软件会侦查出你手机里的root,进而限制部分功能或直接拒绝你的访问。今天我来教大家一些常见的隐藏环境的方法以及步骤,希望对大家有帮助。 方…

做跨境电商服务器用什么宽带好?

做跨境电商服务器用什么宽带好?做跨境电商服务器,推荐选择光纤宽带或高性能的5G网络。光纤宽带高速稳定,适合处理大量数据和实时交互;5G网络则提供超高速移动连接,适合需要灵活性和移动性的卖家。具体选择需根据业务规…

Dual Split A2dp SBC Streams

背景 SBC是经典蓝牙A2DP强制支持的音频标准配置的codec,通常情况下,在我们的印象中SBC是蓝牙低质量音质的代名词,如果一个耳机或者音响只支持SBC一个codec,那么这个耳机或音响肯定是低端货,一般高端的人耳机都会支持一…

uniapp 小程序 textarea 层级穿透,聚焦光标位置错误怎么办?

前言 在开发微信小程序时,使用 textarea 组件可能会遇到一些棘手的问题。最近我在使用 uniapp 开发微信小程序时,就遇到了两个非常令人头疼的问题: 层级穿透:由于 textarea 是原生组件,任何元素都无法遮盖住它。当其…

【蓝桥杯】43687.赢球票

题目描述 某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。 主持人拿出 N 张卡片(上面写着 1⋯N 的数字),打乱顺序,排成一个圆圈。 你可以从任意一张卡片开始顺时针数数: 1,2,3 ⋯ ⋯ 如果数到的数字刚好和卡片上的数字…

分类统计字符个数(PTA)C语言

本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义: void StringCount( char s[] ); 其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照 letter 英文字母个数, blank 空格或回…