DNS协议基本概念
DNS的背景
我们知道主机通信需要依靠IP地址,但是每次通过输入对方的IP地址和对端通信不够方便,IP地址不好记忆
因此提出了通过主机名(也就是后面定义的域名中的某个部分)来和IP地址对应,通过访问主机名来实现访问IP地址,达到通信的效果;由于最开始网络上的主机比较少,通过使用本地的HOSTS.TXT文件来记录域名和IP地址之间的关系,并定期手动更新(Windows下的Host主机文件在:C:WindowsSystem32driversetchosts)
但是后来随着主机数量的增加,人工更新HOSTS.TXT文件不再适用,因此后面就提出了DNS规范
DNS协议的作用
DNS是一种具有层次结构的将域名和IP地址互相映射的分布式数据库(分布式:可以理解为通过大量的服务器来实现DNS解析—因为域名越来越多,少量服务器不够用)
其中记录了各种主机域名与IP地址的对应关系,能够使得用户更加方便的访问网站
即:
用户直接输入域名登录网站,通过DNS服务器将域名解析为IP地址,然后用户根据该IP地址进行报文封装和传输
DNS协议端口号
DNS端口号为53,支持TCP和UDP(TCP能够提供可靠的连接,并且可以处理更大的数据量)
使用UDP情况:
一般普通DNS查询为UDP协议
使用TCP情况:
区域传输的时候会使用TCP(即DNS服务器之间迁移记录的时候会使用到TCP协议)
DNS相关规范
域名的分类
根域名
顶级域名(又分为国家顶级域名和国际顶级域名)
国家顶级域名
美国us等
国际顶级域名
.org等
二级域名(又分为国际域名下的二级域名和国家域名下的二级域名)
国际顶级域名下的二级域名
例如ibm、yahoo、microsoft、sangfor等
类别域名6个
行政区域有34个,分别对应我国各省、自治区、直辖市
三级域名
按照地域性划分
根域名服务器:最高层次的域名服务器(每一个根域名副武器都要存储所有顶级域名服务器的IP地址和域名)
顶级域名服务器:顶级域名服务器负责管理在本顶级域名服务器上注册的所有二级域名
权威域名服务器:负责将区域管辖内的主机域名转换为该主机的IP地址
主域名服务器:负责维护某一个特定DNS区域的所有域名信息(对其中的解析记录具有自主控制权);是指定区域中唯一存在的权威服务器
辅助域名服务器:作为主域名服务器的备份,自动同步主域名服务器的域名信息(即从域名服务器提供的解析结果来自于主域名服务器—一般辅助服务器会定时向主域服务器进行查询-来了解记录是否发生变化通过TCP协议)
缓存域名服务器:没有自己的域名数据库,只提供域名解析结果的缓存功能;它从某个远程服务器取得每次域名服务器的查询回答(因此需要设置根域或其他DNS服务器作为解析来源),并将答案放在高速缓存中;以后查询相同的信息就会从缓存中的信息进行回答,提高查询速度和效率
转发域名服务器:负责所有非区域的本地查询;接到查询请求后,在本地缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止
常用DNS服务器地址
114.114.114.114 国内通用DNS服务器地址
223.5.5.5 阿里云服务器
8.8.8.8 美国谷歌
DNS服务器的记录
DNS相关记录
记录名称
记录内容
补充说明
——————–
AAAA记录
——————–
域名服务器记录(记录域名和DNS服务器的关系,一般为DNS服务器为权限域名服务器;表示想要查询该域名,你需要去找这个DNS服务器来查询对应域名的IP地址)
该记录只能设置为域名(即:记录的DNS服务器是以域名的形式显示的,不能通过IP地址的形式显示)
因此,该记录一般会结合A记录使用(通过A记录来指明该DNS服务器域名对应的IP地址)具体判断垃圾邮件的原理:垃圾邮件一般是伪造邮件头部的’From’字段(邮件的From字段有IP地址、域名等信息);当发送方发送邮件过来时,服务器通过PTR记录将IP地址解析为该IP地址对应的邮件域名,如果该邮件域名与发送方的邮件头中的’From’字段不一致(或者将邮件域名通过MX记录或A记录解析为IP地址,该IP地址与’From’字段不一致),则认为该邮件为垃圾邮件
邮件交换机器(告诉用户哪个邮件服务器负责接收特定域名的电子邮件,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器)
例子:当某用户要发送邮件到12313@qq.com时,该用户的邮件系统就会通过DNS查找qq.com这个邮件后缀的MX记录;如果MX记录存在则用户将邮件发送到该邮件后缀所对应的邮件服务器上(可以是IP地址,也可以是域名–如果是域名则需要A记录来记录域名对应的IP地址)
SPF记录
用于防范垃圾邮件而提出来的一种DNS记录类型,是一种TXT类型的记录(记录了一个域名所拥有的用来发送邮件的所有IP地址)
记录一般为以下格式
Name(域名或IP地址等)、TTL(生存周期)、Class(网路协议类型)、Type(资源记录类型)、Data(记录包含的数据)
TTL:将该DNS记录缓存在DNS服务器的时间(以s为单位),当TTL为0时,该记录会被认为过期,服务器会重新查询该记录的并进行更新(重新查询时使用的TCP协议)
以CNMA记录为例
DNS报文
包含域名、DNS服务器地址
Transaction ID:事务ID(DNS报文的ID标识)
Additional RRs:额外的记录数目(指的是权威名称服务器对应的IP地址的数目)
Transaction ID:事务ID(DNS报文的ID标识)
Flags:标志位
Additional RRs:额外的记录数目(指的是权威名称服务器对应的IP地址的数目)
具体的标志位讲解
Response(QR):查询响应标志位(1为响应,0为查询)
Opcode:操作码(0标识标准查询、1标识方向查询、2表示服务器状态请求)
Authoritative(AA):授权应答,在响应报文有效(1表示位权威服务器的回应,0表示不是)
Thruncated(TC):表示是否被截断(1表示响应超过512字节被截断,此时使用TCP重新查询)
Recursion desired(RD):期望递归(为1表示请求为递归查询、需要返回结果;为0表示请求为迭代查询,可以返回能够查询的DNS服务器)
Recursion available(RA):可用递归,在响应报文有效(1表示服务器支持递归查询)
Reply code(rcode):表示响应的差错状态(0表示没有错误、1表示报文格式错误、2表示域名服务器失败、3表示域名错误、4表示查询类型不支持、5表示拒绝响应)
DNS域名查询的两种方式
主要用于主机向本地域名服务器请求时使用(要求本地域名服务器返回给主机结果,本地域名服务器如何获得该结果主机不需要知道—即要返回给主机域名对应的IP地址)
主要用于DNS服务器和DNS服务器之间的请求(要求服务器返回可以返回域名对应结果,也可以返回能够解析该域名的域名服务器地址)
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,则本地域名服务器以DNS客户端的身份向其它根域名服务器继续发出查询请求报文(替主机查询)
根域名服务器收到本地域名服务器发出的迭代查询请求时,要么给出所查询域名的IP地址,要么告诉本地服务器下一步应该向哪一个域名服务器进行查询;就这样本地服务器依次发送DNS请求;最后本地域名服务将结果返回给主机
DNS工作过程
如果无法解析,则进行DNS请求(选择递归或者迭代—不过一般是迭代)
- 如果选择迭代,则发送DNS请求给其它服务器;其它服务器收到后,可以回应能够解析该域名的域名服务器地址,也可以回应结果(如果服务器回应能够解析该域名的域名服务器地址,则自身需要再发送DNS去请求—再此选择是迭代还是递归)
- 最后将得到的结果返回给主机
- 如果选择递归,则发送DNS请求给其它服务器;需要其它服务器回应具体的结果给自己(至于其它服务器如何获得结果自己不管)
DNS查询过程
DNS智能选路
一个域名可能对应多个IP地址(每个运营商都有),正常情况下DNS服务器会随机选择一个给主机,这时主机访问就是随机访问,可能会出现跨运营商访问的问题,造成体验较差
AD可以解决DNS域名解析跨运营商访问的问题(通过智能选路选择对应的运营商地址–通过AD产品结合NS记录实现);在该场景下,AD其实是作为一个域名解析服务器,提供最终的域名到IP地址的解析
具体步骤
需要先将权威服务器中关于网站的A记录改为NS记录,并指向AD的域名(然后再通过A记录来记录AD域名对应的IP地址),最后将AD地址发给用户
此时用户主机向此AD发送DNS请求,AD根据主机的源IP地址,判断其所属的运营商;然后进行域名解析时,就解析该运营商对应域名的IP地址,将其返回给主机
原文地址:https://blog.csdn.net/m0_49864110/article/details/134819638
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49282.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!