为什么DNS适合UDP协议而不是TCP?
-
资源一致性层面上讲,快,小包
udp的dns协议只要一个请求和一个答应就是了,但是如果我们基于tcp的dns协议就需要三次握手,发送数据应答,四次握手等等,tcp相对于udp更加的浪费资源 -
资源节约层面上讲,节约资源,避免握手
DNS数据包不是那种大数据包,所以使用UDP不需要考虑分包,如果丢包那么就是全部丢包,如果收到了数据,那就是收到了全部数据!所以只需要考虑丢包的情况,那就算是丢包了,重新请求一次就好了。而且DNS的报文允许填入序号字段,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答是对应的哪个请求
那么dns只能用Udp吗?
Udp缺陷就是512k以上没法传输
什么是DNS?
DNS是域名系统,用来吧域名地址转化为ip地址,dns配置,将我们连接到最近的服务器。DNS服务器可以看成是一种分布式数据库。
什么是DNS污染?
某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。某些国家或地区为出于某些目的防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也可以利用此方法进行屏蔽。
和某些流氓运营商利用DNS劫持域名发些小广告不同,DNS污染则让域名直接无法访问了,非得修改DNS服务器不可。
Dns污染如何解决?
1.更换DNS解析服务器。一般来说,域名注册商家都是提供免费的DNS解析服务的,提供了许多免费的DNS解析服务,更换两个DNS服务器即可。
2.使用第三方DNS解析服务。目前有很多第三方网站提供DNS解析服务,不少都是免费的,国内也有免费提供DNS解析服务的,使用第三方DNS服务可以部分解决问题,比如新之洲数据正在使用的DNSpod服务,就是国内还算比较稳定的DNS解析服务。
3.搭建自己的DNS服务器。
Dns解析原理
1.首先搜索 浏览器的 DNS 缓存 ,缓存中维护一张域名与 IP 地址的对应表
2.如果没有命中😢,则继续搜索 操作系统的 DNS 缓存
3.如果依然没有命中🤦♀️,则操作系统将域名发送至 本地域名服务器 ,本地域名服务器查询自己的 DNS 缓存,查找成功则返回结果(注意:主机和本地域名服务器之间的查询方式是 递归查询 )
4.若本地域名服务器的 DNS 缓存没有命中🤦,则本地域名服务器向上级域名服务器进行查询,通过以下方式进行 迭代查询 (注意:本地域名服务器和其他域名服务器之间的查询方式是迭代查询,防止根域名服务器压力过大):
5.本地域名服务器 将得到的 IP 地址返回给操作系统,同时自己将 IP 地址 缓存 起来
6.操作系统 将 IP 地址返回给浏览器,同时自己也将 IP 地址 缓存 起来
7.至此, 浏览器 就得到了域名对应的 IP 地址,并将 IP 地址 缓存 起来
DNS的迭代查询和递归查询
(递归)
在递归查询中,接收客户端请求的DNS服务器将完成全部的工作,然后返回结果。在工作过程中,DNS服务器可能代表客户端,向internet上的其他DNS服务器查询,以获得答案。
优点:快
缺点:服务器压力大
(迭代)
当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。而本节所介绍的DNS迭代名称解析(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。
缺点:没递归快
优点:根服务器压力小