DNS协议与Wireshark抓包分析详解
一、DNS协议基础
1、定义:DNS(Domain Name System,域名系统),是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串,通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
2、工作原理:当客户端尝试访问互联网的某个网站时,访问请求会通过一台DNS服务器发送出去,这台DNS服务器会查找自己包含的资源记录,找到对应的IP地址并返回。
3、DNS服务器类型:有四种不同的类型,包括根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。
二、使用Wireshark捕获DNS数据包
1、设置捕获过滤器:在Wireshark中,可以通过设置捕获过滤器为“port 53”来只抓取DNS数据包。
2、捕获步骤:启动Wireshark,选择上网的网卡接口,点击捕获图标开始捕获,打开浏览器访问一个网站(如美国飞塔的网站),在捕获一段时间后关闭捕获。
三、DNS数据包分析
1、基本结构:每个DNS数据包都由多个部分组成,包括事务ID、标志位、问题、回答、授权和额外等字段。
事务ID:用于将一个域名查询消息和对应的响应消息对应起来。
标志位:包含响应、操作码、截断、期望递归等标记。
问题:表示数据包中包含的查询数量。
回答:对查询消息所作的响应。
授权:表示响应消息中授权资源记录的数量。
额外:表示响应消息中额外资源记录的数量。
2、具体案例分析:以访问fortinet.com为例,通过Wireshark捕获到的数据包可以看到,每次查询都会得到一个响应,响应中包含了查询的域名、类型、IP地址等信息,还可以看到DNS查询过程中的递归搜索和CNAME记录等细节。
四、DNS查询错误处理
1、常见错误类型:当输入的网址不正确时,DNS查询可能会返回错误,域名错误、格式错误、服务器故障等。
2、错误处理机制:如果第一个DNS服务器查找不到域名,会自动到第二个DNS服务器查询,直到找到负责解析该域名的权威DNS服务器。
五、相关问题与解答
1、Q: 如何查看Wireshark捕获的DNS数据包中的详细信息?
A: 在Wireshark中,可以展开每个捕获的DNS数据包,查看其中的各个字段和值,还可以使用“Follow TCP Stream”或“Follow UDP Stream”功能来跟踪特定流中的数据交换情况。
2、Q: 如果我想只捕获特定域名的DNS查询和响应,应该如何设置Wireshark的显示过滤器?
A: 可以在显示过滤器中输入类似“dns.qry.name == “example.com””的条件来只显示与特定域名相关的DNS查询和响应(将“example.com”替换为目标域名)。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/190025.html