DNS\LLMNR\MDNS\NBNS原理
DNS
域名解析过程
浏览器先在自己的缓存中查找有没有域名的解析,如果没有则到主机的hosts文件中找,如果也没有就到本地dns缓存中去找,如果也没有就到本地dns服务器去找,如果该域名不在本地dns服务器解析的范围内,但缓存中已经包好了该解析则返回ip,此解析具有权威性,如果设置了转发模式,则将该消息转发到上一级解析服务器,如果仍不能解析或找根或者上上级,如果没有配置解析则转发到13台根服务器,根服务器再告诉服务器顶级域服务器的地址,顶级于服务器返回二级域服务器的地址,这样一直递归查询,直到找到为止。
dns使用的协议
dns解析时使用udp协议
解析数据数据量较小,一般不超过512字节,解析速度快,对稳定性要求不高
区域传送时使用tcp协议
区域间复制信息传输数据量大,对稳定性的要求高。
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。 这种情况下,使用TCP协议。
查看域名解析过程命令
dig www.baidu.com
dig +trace www.baidu.com
资源记录RR类型
A
AAAA
PTR //反向域名解析
NS //域名服务器
cname //canonical name 规范名
max 邮件交换
soa 起始授权机构
域名解析服务器又分为权威域名服务器与递归解析服务器。
FQDN-完全合格域名
从客户端到本地dns服务器是迭代查询,dns服务器之间的交互查询是递归查询f
CDN-内容分发网络
将内容缓存再终端用户附近
当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。
LLMNR
link-local multicast name resolution 本地链接多路名称解析
当DNS服务不可用时,本地主机就会使用LLMNR协议来进行名称解析,通过UDP协议向224.0.0.252:5355组播地址发送广播,来解析本网段上得名称,使用的数据包格式与传统DNS数据包一致,其不仅能解析ipv4的地址同样也能解析ipv6的协议,。与LLMNR相似的另一种协议是MDNS,其多播地址为224.0.0.251:5353。
工作过程
主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到了名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。
主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。
链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。
NBNS
netbios-名称解析