关于DNS那些事

定义

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。(以上摘抄自百度百科)
简单点说,就是当我们在浏览器中输入一个网址,需要有一台DNS服务器帮我们解析成 IP地址,这样,我们才能打开网页。

为什么要用DNS

我们知道IP地址是十进制数字的组合,我们访问网站时实际上是对网站服务器进行访问,那么如何区分不同的服务器呢?IP协议给因特网上的每台计算机和其它设备都规定了一个唯一的“IP地址”,既然是唯一的,那么就可以用IP地址作为服务器的标识符了。也就是说我们访问网站的时候要知道网站的IP地址才行,实际上我们知道吗?我们只知道www.baidu.com这一类的域名。说到这里,你应该能够明白DNS在这个过程中起了什么作用了吧。它将你输入的域名解析成相对应的IP地址并返回,这样你才能访问网站。

DNS报文结构

先看一下整体结构,在进行详细讲解
在这里插入图片描述

DNS报文的报头部分**

报头部分是固定12字节长度的
标识 (Identification)
16位标识符,由客户端设置,在服务器响应中原样返回。客户端通过它来确定返回的响应与发送的请求是否匹配
标志 (Flags)
用于指定所请求的操作及返回的响应码,它是以位字段的形式组织的,总长度为16bit
在这里插入图片描述
标志部分结构详解

QR(Response)
查询请求/响应的标志信息。查询请求时,值为0,响应时,值为1.

Opcode(操作码)
0表示标准查询,1表示反向查询,2表示服务器状态请求。
(注:标准查询即域名解析成相对应的IP地址,反向查询即将IP地址解析成相对应的域名)

AA(Authoritative授权应答)
该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
TC(Truncated)
表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节

RD(Recursion Desired)
期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。

RA(Recursion Available)
可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。

Reserved
保留字段,在所有的请求和应答报文中,它的值必须为 0。

RCODE(Reply code返回码字段)
表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。

查询数
表示发送给域名服务器的查询数。
答案数
表示域名服务器返回的答案数。
权威答案数
表示权威域名服务器返回的答案数。
附加答案数
表示附加部分包含的答案数

以上四个16bit字段说明最后四个变长字段中包含的条目数,对于查询报文,询问数通常是1,而其他三项均为0。对于应答报文,答案数至少是1,剩下的两项可以是0或非0

接下来是查询部分

查询部分

在这里插入图片描述
紧随在报头部分的是“查询部分”,查询报文必须填写这个字段,“查询部分”可以包含多个查询记录

查询名称
要解析的站点的域名,它是一个或多个标识符的序列

查询类型
查询类型是类型(资源记录中用到的字段)的一个超集

查询类
取值通常是1,指Internet地址(因某些站点也支持其他非IP地址)

DNS查询和响应的类型值和查询类型值
ddd
A记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录(正向查询需要使用此记录)

NS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录

CNAME记录: 如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。这个域名一般是主机服务商提供的一个域名

MX记录: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录

TXT记录: 可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录

AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录

SRV记录: 添加服务记录服务器服务记录时会添加此项,SRV记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)。

SOA记录: SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器

PTR记录: PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名(反向查询需要使用此记录)

显性URL转发记录: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址为:www.itbilu.com。

隐性UR转发记录L: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址,隐性转发会隐藏真实的目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址仍然是:www.liuht.cn。

答案部分、权威答案部分和附加信息部分

在这里插入图片描述

DNS报文中最后的三个字段:答案部分、权威答案部分和附加信息部分,均由一个或多个资源记录(RR)组成。

域名:记录中资源数据对应的名字
存活时间:指定了客户端在缓存中保留资源记录的秒数
资源数据长度:指定了以字节为单位的资源数据的长度。
资源数据:包含了域名服务器返回给客户端的查询答案

讲完报文结构,接下来就讲一讲DNS的解析过程

DNS解析过程

第一步,输入域名后,电脑首先看自己有没有对应域名的缓存,有缓存就直接用缓存里的IP访问
在这里插入图片描述
查看方式,打开cmd,输入ipconfig/displaydns
第二步,如果缓存中没有,则去查询hosts文件。若该文件中有记录,则可直接从hosts文件里读取
在这里插入图片描述
具体位置:C:\Windows\System32\drivers\etc

第三步,如果hosts文件中也没有找到想解析的域名,则将域名发送到自己配制的DNS服务器中,也叫本地DNS服务器
在这里插入图片描述
查看本地DNS服务器方法:打开cmd,输入ipconfig/all
比如客户端是192.168.1.34,本地DNS服务器是192.168.1.221,当客户端向服务器请求http://www.hunau.edu.cn本地服务器向根服务器199.7.91.13转发,这是其中一台根服务器

本地DNS一般是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个有可能是手工指定的或者是DHCP自动分配的。
如果你的电脑是直连运营商网络,一般默认设置情况下DNS为DHCP分配到的运营商的服务器地址。如果你的电脑和运营商之间还加了无线或者有线路由,那极有可能路由器本身还内置了一个DNS转发器,这玩意的作用是将发往他所有的DNS请求转发到上层DNS。此时由于路由器本身也接管了下挂电脑的DHCP服务,所以它分配给下面电脑的DNS地址就是它自身,所以你能看到电脑的DNS分配到的可能是192.168.1.1。实际上就是路由器自身,而路由器的DNS转发器将请求转发到上层ISP的DNS。所以这里说DNS是局域网或者是运营商的都可以。

第四步,如果本地DNS服务器有相应的域名记录,则返回记录
在这里插入图片描述
第五步,如果电脑自己的服务器中没有记录,会去找根服务器,根服务器全球只有十三台,会去找其中之一。找到了根服务器后,根服务器会根据请求的域名,返回对应的“顶级域名服务器”。
在这里插入图片描述
注意,这里说的十三台是指逻辑上的十三台,物理上远不止。

在这里插入图片描述
关于根服务器所在地以及更多相关信息,可以登陆https://www.iana.org/domains/root/servers查看。

第六步,顶级域名服务器收到请求,会返回二级域服务器的地址
比如一个网址是http://www.xxx.edu.cn,则顶级域名服务器再转发给负责http://edu.cn域的二级服务器

第七步,以此类推,最终会发到负责所查询域名的,最精确的那台dns,可以得到查询结果

在这里插入图片描述
抓包分析。客户端是192.168.1.34,本地dns服务器是192.168.1.221,当客户端向服务器请求http://www.hunau.edu.cn,本地服务器向根服务器199.7.91.13转发,根域名服务器返回一个顶级域名服务器地址202.112.0.44。
本地域名服务器向顶级域名服务器202.112.0.44发送请求,顶级域名服务器返回一个二级域名服务器地址202.112.0.13。本地域名服务器向二级域名服务器202.112.0.13发送请求,二级域名服务器返回一个三级域名服务器地址210.43.224.1。本地域名服务器向三级域名服务器210.43.224.1发送请求,三级域名服务器返回其查询域名的IP地址,本地域名服务器将该IP地址发送给客户端。
最后一步,本地DNS服务器,把最终的解析结果,返回给客户端,对客户端来讲,只是一去一回的事,客户端并不知道本地DNS服务器经过了千山万水
在这里插入图片描述
可以看到,本次查询是正向查询且是IPv4地址,所以查询的是A记录。

递归查询与迭代查询

递归查询
如果域名服务器对于请求查询的域名来说不是权威的,它会将请求传送给另一个域名服务器,如果那个域名服务器还是无法解析域名,它同样会请求其他的域名服务进行解析,这个过程就像爬梯子一样。
如果某个域名服务器成功解析了该域名,则IP地址信息会沿相反的路径返回给客户端,就像从梯子上下来一样。

迭代查询
如果域名服务器不能解决查询,它将给客户端返回一个响应,告诉客户端能解决该查询的域名服务器,客户端需要自行与这个服务器联系,以获得域名解析的结果。

以上面的查询过程来说明这两者的区别。对于客户端来说,他只是向本地DNS服务器发送了一次请求,然后本地DNS服务器就返回了一个与他请求相对应的IP地址回来。对于客户端来说,这一个过程就是递归查询。但是对本地DNS服务器来说呢?他先向根服务器查询,根服务器返回了一个顶级域名服务器地址,然后又向顶级域名服务器查询,顶级域名服务器返回了一个二级域名服务器地址…,一直到查询到了域名所对应的IP地址才返回给客户端,显然这是一个迭代查询。
不知你是否把握到了两者之间的区别。

智能DNS

出现背景
随着原中国电信集团按南北地域分家,新的中国电信和网通集团随即成立,互联网的骨干网也被一分为二了,北有网通、南有电信。从此,细心的网民可以发现,有些经常访问的网站速度一下子慢了下来,有时候还有访问不到的情况出现。例如北方地区的网络用户访问中国网通的服务器会非常快,而访问中国电信的服务器时,感觉非常慢。
这种现象不仅影响了网站的访问量,更严重的是它直接影响了一些经营性网站的经济效益。据分析,产生这个问题的根本原因是中国电信分家之后,电信与网通之间的互连存在问题。虽然信息产业部已经在规划南北互通计划,但在今后相当长的一段时期内,南北方网互连的问题还会长期存在。

原理
智能DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址。如访问者是网通用户,DNS策略解析服务器会把你的域名对应的网通IP地址解析给这个访问者。如访问者是电信用户,DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。

智能DNS策略解析还可以实现就近访问机制(即将推出)。有些用户在国外和国内都放置了服务器,使用我们的DNS策略解析服务可以让国外的网络用户访问你国外的服务器,国内的用户访问国内的服务器,从而使国内外的用户都能迅速的访问到你的服务器。
智能DNS策略解析还可以给你的多个主机实现负载均衡,这时来自各地的访问流量会比较平均的分布到你的每一个主机上。

作用
双线路的机房:服务本身有两个IP,一个电信IP,一个网通IP或者其他线路。
镜象网站:在网通及电信的机房放置多个相同的镜象站点, 让不同的地方客户访问不同的站点。
负载均衡:对于流量比较大的网站,可以把流量分配到几台不同的服务器上,以提高网站速度。
个性化站点服务:比如通过IP表的重新定义, 让国外的客户自动访问英文版的网站; 让国内的客户自动访问中文版的网站。

好处
1、区分网通用户与电信用户,减少用户使用两运营商之间的接口网络。
2、在网通及电信的机房放置多个相同的镜象站点,让不同的地方客户访问不同的站点,加快访问速度。
3、对于流量比较大的网站,可以通过该功能把流量分配到几台不同的服务器上,以提高网站的运行速度。

申明:以上部分图片来源自网络,如有侵权,请联系删除。

本人刚学相关内容不久,如有不足之处,请谅解,如有错误欢迎指正。
欢迎各位技术大佬指点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值