什么是DNS?为什么选择UDP?详细的DNS解析过程?

DNS

1、DNS是什么?

DNS ( Domain Name Systme)简单理解就是解析器、域名服务器的组合,比如大家访问知乎,会输入http://www.zhihu.com,事实上网站域名只是一个IP 地址,人们是很难记住各式各样的IP地址的,所以就需要DNS服务器了,DNS就像手机通讯录一样,存放着各亲朋好友的手机号。为什么要存储到通讯录里?因为你不可能记得一百个人的手机号码,但是通过名字你可以快速定位某位朋友的手机号码。DNS就是存储了各种IP地址,然后让你通过域名定位到IP地址来进行连接通信的。

  • DNS domain name system 主要作用就是将主机域名转换为ip地址
  • 所有DNS请求和回答报文使用的UDP数据报经过端口53发送
  • DNS是应用层协议,client端(一般指浏览器)构建DNS查询请求,依次被传输层,网络层,数据链路层等封装传送到达DNS服务器端,最终client端接收到DNS响应消息

在这里插入图片描述
为什么选择UDP?

UDP(User Datagram Protocol)这样的无连接的,尽最大能力交付的不可靠数据连接,而不是使用TCP(Transmission Control Protocol 传输控制协议)这样的面向连接的可靠数据连接。

一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。

考虑到效率原因,TCP连接的开销大得,故采用UDP作为DNS的运输层协议,这也将导致只有13个根域名服务器的结果。

2、因特网的域名结构

因特网的域名结构:

  • 1、 因特网采用了层次树状结构的命名方法。

  • 2、 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

  • 3、 域名的结构由标号序列组成,各标号之间用点隔开:

在这里插入图片描述
域名服务器:

  • 1、一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。

  • 2、 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。

  • 3、每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

  • 4、DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:

    (1)国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。

    (2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。

    (3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

在这里插入图片描述
域名服务器有以下四种类型:

  • 1、根域名服务器
    • 1、 根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。

    • 2、 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析只要自己无法解析,就首先求助于根域名服务器。

    • 3、 在因特网上共有13个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)

    • 4、 根域名服务器并不直接把域名直接转换成 IP 地址。

    • 5、 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。

  • 2、顶级域名服务器
    • 1、这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
    • 2、 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)
  • 3、 权限域名服务器
  • 4、本地域名服务器

在这里插入图片描述

3、缓存(Cache)

DNS缓存:每次你访问网站,DNS会保存你访问过的网站的域名服务器(即DNS) 信息,它存储在你的本机电脑上,目的就是为了帮助你下次在浏览器以最短的路径、更快的速度找到所需的DNS信息,解析你的网站!

缓存具体分类:

  • 1) 浏览器缓存

当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);

  • 2) 系统缓存

当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;

  • 3) 路由器缓存

当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;

  • 4) ISP(互联网服务提供商)DNS缓存

当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;

4、 DNS请求实例

  • 1、 浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www . qq .com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
  • 2、如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。
  • 3、如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS(53号端口UDP协议)服务器发起域名解析请求。(本地域名服务器)
  • 4、主机向本地域名服务器解析的过程采用递归(也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。
  • 迭代:
1、本地域名服务器向根域名服务器发请求

2、返回给本地域名服务器我们要向哪个顶级域名服务器去找

3、顶级域名服务器向权限域名服务器发请求

4、返回给本地域名服务器IP地址。

5、返回给Windows系统内核,最后返回给浏览器。
  • 递归:
1、本地域名服务器向根域名服务器发请求

2、之后根域名服务器向顶级域名服务器去找

3、顶级域名服务器返回给根域名服务器。

4、根域名服务器返回给本地域名服务器

5、返回给Windows系统内核,最后返回给浏览器。

在这里插入图片描述
这里补充说明,一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把www . qq .com的A记录返回给客户端就可以了。

DNS资源记录

在这里插入图片描述
记录一条域名信息映射关系,称之为资源记录(RR)。

当我们查询域名http://www.zdns.cn的时候,查询结果得到的资源记录结构体中有如下数据:

  • 1、TTL,就是生存周期,是递归服务器会在缓存中保存该资源记录的时长。

  • 2、网络/协议类型,它的代表的标识是IN,IN就是internet,目前DNS系统主要支持的协议是IN。

  • 3、type,就是资源记录类型,一般的网站都是都是A记录(IPv4的主机地址)。

  • 4、rdata是资源记录数据,就是域名关联的信息数据。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark是一款强大的网络协议分析工具,它可以用来深度剖析和解码网络数据包,包括DNS(Domain Name System)报文。以下是一些步骤指导你如何使用Wireshark来分析DNS报文: 1. **安装Wireshark**:首先确保你在计算机上安装了Wireshark。如果你还没有安装,可以从Wireshark的官方网站下载并按照指示安装。 2. **启动Wireshark**:打开Wireshark,通常可以通过在任务栏搜索或从开始菜单启动。 3. **设置过滤器**:在Wireshark的过滤器栏中输入`dns`,这将帮助你只捕获DNS相关的数据包。你也可以根据需要进一步细化过滤,如指定特定的IP地址、端口或协议类型。 4. **捕捉网络流量**:点击“开始捕捉”按钮或者使用快捷键F5开始捕获数据包。在电脑连接互联网的情况下,Wireshark会显示正在进行的网络通信。 5. **查看DNS报文**:在捕获的包列表中,找到DNS查询或响应。它们通常以`udp`协议并且源/目的端口为53(DNS默认端口)。 6. **解析DNS报文**:双击DNS报文,Wireshark会解析详细信息,包括源/目标IP地址、DNS请求/回答类型(如A记录、MX记录等)、查询名称和对应的IP地址等。 7. **分析细节**:观察DNS报文的资源记录(RR)部分,了解域名解析过程。你还可以查看TCP或UDP头部,检查是否有任何异常或延迟。 8. **深入了解**:如果你想研究更高级的主题,例如DNS缓存、递归查询或DNSSEC(安全扩展),Wireshark提供了丰富的工具和选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值