dns查找链路及请求格式

2022-10-09 12:44:19 浏览数 (1)

theme: condensed-night-purple

上一节梳理了大概的流程,但是dns解析器和浏览器一样没有网络访问的功能,因此都需要委托操作系统的协议栈进行下一步操作;

上文遗漏点

dns解析器和浏览器一样解析请求生成对应的请求消息,委托协议栈的udp模块向dns服务器发起请求;dns服务器收到后也是通过协议栈处理查询将数据发送给dns解析器

协议栈:网络控制模块,拥有tcp/ip协议,udp协议

向dns服务器发送请求同样也需要知道dns服务器的ip地址,这个在tcp/ip设置项中可以手动设置dns的ip地址

如果对应的域名ip映射能够在dns服务器中找到就完成了链路,但是一个计算机能够存储的映射表是有限的,这个之后讲解,~~

dns请求格式

先看下dns解析器生成的请求信息格式:

  • 域名

服务器名称

  • class

识别网络信息,目前只有互联网,该值永远为N

  • 记录类型

域名对应的查询类型,当该值为A代表对应的是通过域名查询ip地址,当为MX时代表查询的是邮件服务器名称

查询流程

dns服务器会从资源记录表中查找到请求信息对应的ip地址或邮件服务器名称

如何存储资源记录表

一个dns服务器所存储的资源是有限的,如何能够映射所有的资源?通过层级关系划分,将域名按照.进行分割,每个部分即是一个层次一个域, 最右边的域层次最高依次往左层次下降。

每个域只可以存在于一个dns服务器中,不能存储在多个服务器中;但是一个dns服务器可以存放多个域;可以在域下创建下级域

www.glass.com

com是最大的域结构,接下来下一层

去找glass域,那么如何知道存储glass域 ,com域的dns服务器ip地址呢?

域存储结构

下一层的域要注册到上层域中,这样上层域就可以找到存放下层域的dns服务器ip; 从右至左查找,右边的服务器域名最大保管的是下一级的解析这个域名的dns服务器的ip地址,每个计算机dns客户端都会保存一些映射表,互联网里面所有的dns服务器里面就会保存最上层域的dns服务器ip

如果当前有对应的域名映射表就直接返回,如果没有就需要一层一层从上往下查找各个不同层级的dns的ip地址从而找到存储这个域名对应的ip地址dns服务器

还有一个跟域最容易被忽略,在com,cn等服务器的后面还可以在家一个点.代表跟域;跟域保存着com,cn等解析这些域名的dns服务器地址

大致流程:

每次都从根域进行查找太浪费时间了,因此DNS有缓存功能,缓存最近访问过的域名IP映射信息;但是缓存的信息可能会更改比如域名更换了,因此缓存会设置一个有效期,到期之后会进行清除,客户端在收到对应IP的时候也会有相应的表示此次结果是缓存命中还是所属DNS服务器返回的

0 人点赞