通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

本文涉及的产品
.cn 域名,1个 12个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

文/朱季谦

本文主要想通过动手实际分析一下是如何通过DNS服务器来解析域名获取对应IP地址的,毕竟,纸上得来终觉浅,绝知此事要躬行。

域名与IP地址

当在浏览器上敲下“www.baidu.com”时,一键回车,很快,浏览器上就会刷新出熟悉的百度搜索页面。以前刚接触网络时,总以为这个过程是通过域名www.baidu.com来访问远程服务器,其实不然,本质上,还是通过IP去远程访问服务器获取资源。

这时,聪明的小伙伴就会出现一个疑问,为啥不直接通过域名去寻找到相应的服务器主机呢?

其实,若要实现通过域名的方式去寻找服务器主机,也不是不行,但没这个必要。

先来对比一下域名方式与IP地址方式两者的最关键差异在哪里,就知道为啥没这个必要了。

我们日常工作接触的IPv4地址一般都是以十进制的方式表示,例如,192.168.200.111,但在计算机当中,它其实是以二进制形式存在,192.168.200.111的二进制为1100 0000 1010 1000 1100 1000 0110 1111,总共32位,也就是32比特。众所周知,1个字节占了8比特,那么就意味着,一个32比特的IP地址长度也就4个字节。

在网络传输过程中,4个字节的长度,可以说,微不足道,但,若换成域名呢?

目前,域名最大长度可达:63个字符,每个char字符就占了2字节,63字符占了126字节,可见,若要用域名当成传输的地址,是多么耗性能,但若用IP地址就不一样了,32位也就只占4字节。

事实上,在浏览器上通过IP同样可以访问到对应域名的网址,但IP地址是一长串数字,难以记住,更难以理解这一堆数字代表了啥,但域名就不一样了,像百度的域名www.baidu.com,很直观就知道,这是访问百度的网址。

按照百度百科的说法,设计域名的作用,就是为了让用户更好理解。

当在浏览器上敲下“www.baidu.com”,在这个过程当中,会做一步域名解析成IP地址的操作,这里就涉及到一个叫做DNS的概念。DNS,全称Domain Name System,即域名系统,它提供的作用是将域名和IP地址相互映射。最通俗的理解,它就像是Java里key-value形式的Map,key是域名,value是对应映射的IP地址,通过map.get(域名),可得到域名对应的IP地址。

这里值得多提一点是,与DNS相反的另一个相似概念,是ARP(Address Resolution Protocol,地址解析协议),它是根据已知的IP地址,可获得MAC地址,当然,MAC这块已是数据链路层的知识,DNS则是应用层的东西了。

域名解析IP的步骤

域名解析出其映射的IP地址,主要有以下几个步骤:

首先,会根据域名从浏览器缓存当中获取,若能获取到,直接返回对应的IP地址;若获取失败,会尝试获取操作系统本地的域名解析系统,即在hosts文件检查是否有对应的域名映射,若能找到,直接获取其映射的IP地址返回。其中,关于这一步,作为程序员,可能多少都做过相关操作。例如,网上有一些关于Windows系统如何加快访问Github网站的教程,其中有一个方式,就是将Github的域名与对应的IP地址,添加到Windows的C:\Windows\System32\drivers\etc\hosts文件当中,随后再浏览Github,发现速度确实快了不少。这是因为,直接本地DNS解析出IP地址,可以减少远程网络方式去DNS服务器上获取域名对应的IP地址操作,也就意味着,域名解析IP速度将更快。

在hosts文件里存储的域名与IP地址映射,一般都是针对IP比较稳定且经常用的,例如工作当中的一些线上开发环境或者测试环境等域名,如果是IP变化比较频繁或者是根本就不知道IP是啥的,这类情况就无法通过hosts文件进行配置获取,只能通过网络访问DNS服务器去获取。

首先,会先去本地区域的DNS服务器找,我们可以在系统的网络配置上查看,究竟哪个是属于所在网络的本地区域DNS服务器,在命令行提示窗口输入,ipconfig /all,然后按回车键,可以找到“DNS服务器”一栏——

例如,我所在网络的DNS服务器IP是192.168.31.1,当浏览器访问某个域名时,就会向这个DNS服务器发送查询消息。

可以使用Wireshark抓包软件验证一下,还是以www.baidu.com域名来做实验,我们先看一下该域名对应的IP是啥,直接在命令窗口ping一下,就可以知道了,其IPv4地址是14.215.177.38


通过Wireshark分析域名解析网络传输

这时,先打开Wireshark抓包软件。

接着,在谷歌浏览器上输入www.baidu.com,回车,可以看到,本机IP会向本区域DNS服务器192.168.31.1发送了一个DNS协议的消息,该消息包含了域名www.baidu.com,A,还有一个0x1515这几个数据,然后,DNS服务器response返回了 以下信息:response 0x1515 A www.baidu.com CNAME www.a.shifen.com A 14.215.177.38 A 14.215.177.39 ......

这些信息当中,正好包含了域名www.baidu.com映射的IP地址(不止一个),其中就有一个是前面ping返回的14.215.177.38。

理论上,若在最近的DNS服务器上,无法解析到域名对应的IP地址时,那么最近的DNS服务器就会类似充当一个中介角色,帮助客户端去其他DNS服务器寻找,看看哪台DNS服务器上可以找到该域名对应的IP。同时,需要理解一个知识点是,任何一台DNS服务器,都存储了根域名的IP地址。在www.baidu.com域名这个案例当中,加入无法从192.168.31.1这条最近的DNS服务器上解析到对应IP地址时,该DNS服务器就会将客户端的查询请求发送给根域名服务器去询问www.baidu.com域名在哪里可以解析。根域名服务器不做解析,更像是一位指路人,告知去com域对应的DNS服务器查询。com域所在的DNS服务器同样无法解析,继续充当一位指路人,告知把请求转发去baidu.com所在的DNS服务器,层层转发下去,最后找的目标DNS服务器,解析出域名对应的IP地址,然后返回给客户端,这时,客户端就可以通过IP地址获取到相应的服务器资源了。

在《网络是怎样连接的》一书当中,有一个关于DNS服务器解析流程的插图,觉得比较直观地表达出从最近DNS域名如何转发到目标DNS域名的流程,这里直接引用了——

当然,这只是理论,实际情况其实还是存在一些区别的。

再回到刚刚Wireshark抓包获取的截图上分析,可以看到一点是,客户端发送给DNS服务器的消息,不止域名这一个信息,还包括了A等书,那么,问题就来了,DNS协议的查询请求当中,都包含了哪些参数呢?

在《网络是怎样连接的》一书当中,有相关一些介绍,客户端发送给DNS服务器的查询消息包含了3种信息:

  • 域名:服务器的域名名称,例如本文中提到的www.baidu.com这样的域名;
  • Class:Class是用来识别网络的信息,但目前除了互联网已经没有其他网络了,因此,Class只有一个IN值;
  • type类型:表示该域名映射对应的类型,当类型为A,表示DNS服务器上域名映射的是IP地址;当类似是MX时,则表示映射的是邮件服务地址;

针对以上说明,我们可以具体通过Wireshark被选中数据包详细信息栏来分析,通过DNS服务器解析www.baidu.com过程当中,客户端都发送了哪些查询信息。

可见,该DNS查询信息的域名为www.baidu.com,Class为IN,type类型为A,即代表映射的是IP地址。

通过本文,主要是分享一些自己对DNS解析的学习与理解,同时,通过实际Wireshark抓包方式,来深入分析下本机如何发送DNS协议去DNS服务器上获取访问域名对应的IP地址,希望也能让您有一些收获。

目录
相关文章
|
4天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
27 3
|
17天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
24天前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
46 4
|
1月前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
|
1月前
|
域名解析 网络协议 CDN
阿里云服务器购买后如何解析域名,三步操作即可解析绑定
阿里云服务器购买后如何解析域名,三步操作即可解析绑定
|
1月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
67 1
|
1月前
|
域名解析 弹性计算
内网域?名解析记录是否会覆盖公网域名解析记录?
内网域?名解析记录是否会覆盖公网域名解析记录?
|
1月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
1月前
|
存储 安全 数据库
阿里云最新域名注册和续费、企业邮箱、云虚拟主机收费标准与价格参考
域名注册和续费以及企业邮箱和云虚拟主机是很多用户上云第一步需要购买的产品,从2024年9月1日开始,全球域名又迎来了一波价格上调,目前阿里云的.com英文域名的注册价格由原来的78元涨价到了83元,续费价格也涨到了90元,不过企业新用户注册有1元购等活动。企业邮箱目前活动价540.00元/1年起,云虚拟主机独享基础增强版月付49元/1个月起,年付588元/1年起。本文为大家整理汇总了截止目前,阿里云域名注册和续费及转入收费标准、企业邮箱收费标准与活动价格、云虚拟主机最新收费标准,以供参考。

热门文章

最新文章

推荐镜像

更多