【计算机网络专题】DNS相关问题

本问题对应的项目链接:高频题回答模版训练

1、DNS协议是干嘛用的?

2、讲一下dns过程,给一个网址www.google.com,dns服务器如何逐级解析的?

3、DNS 用的是 TCP 还是 UDP ?

4、DNS解析请求的服务器单机并且响应速度慢怎么办?

共以下 3 个回答

  • 終达·斯维达尼亚 永久会员 2024年3月22日 上午12:00

    2、讲一下dns过程,给一个网址www.google.com,dns服务器如何逐级解析的?

    首先域名是有层级结构的,从上到下依次为根域名,顶级域名,二级/三级域名等等。那么根据域名查对应 IP 地址的过程也需要从上到下,先向根域名服务器请求所查询域名的顶级域名服务器的地址,再通过这个地址向顶级域名服务器去查权威域名服务器的地址,最终返回想要的 IP 地址,结束。

    需要多说的是,DNS 解析的过程是有两种方式的,递归查询和迭代查询。我刚只说了需要拿到某某地址,并没有说是上一级域名服务器去向下一级域名服务器请求,还是用户本身去请求下一级域名服务请,那么前者就对应着递归查询,后者就对应着迭代查询。不过一般 DNS 解析都是用的迭代查询,以免根服务器的压力过大。

    除此之外,整个过程也有缓存的存在,除了那些根,顶级,权威域名服务器都有之前请求的缓存,我们的电脑本身,还有本地域名服务器都有缓存,只有缓存未命中时才会进行下一级的查询。

    3、DNS 用的是 TCP 还是 UDP ?

    由于 DNS 的数据包一般情况下非常小,并且需要快速,高效的完成域名解析,大多数情况都是用的 UDP。主要还是数据量很小,如果丢包了重发一次就好了,速度很快。并且 DNS 报文中允许填入序号字段,请求报文和应答报文的序号相同,多个 DNS 请求之间可以通过序号来一一对应。

    但是某些特殊情况 DNS 的数据长度很大(512字节),为了保证数据完整性,此时也会用 TCP 来保证可靠性传输。

    0 赞同 0 条回复
  • Everglow 永久会员 2023年11月4日 下午3:38

    1、DNS协议是干嘛用的

    通常使用一个ip地址来标识一台主机,以ipv4为例使用了32位的整数来表明一台主机的地址,虽然计算机处理起来方便,但人记忆起来就很困难,所以使用域名来方便人的记忆。这时就需要一套域名解析系统来完成域名到ip地址的转换,这就是DNS的作用。

    2、讲一下dns过程,给一个网址www.google.com,dns服务器如何逐级解析的?

    首先会查询本地缓存,看是否有该域名对应的ip地址,如果没有,则进行DNS查询。

    首先会向本地DNS服务器发出查询请求,本地DNS服务器首先会向根DNS服务器发起查询(但通常情况下都会缓存有顶级域服务器的地址绕过了对根的查询), 根DNS服务器根据.com 返回.com对应的顶级域DNS服务器的ip地址,本地DNS再向TLD DNS服务器查询,TLD根据google.com返回google对应的权威DNS服务器的ip,本地DNS再向权威DNS服务器查询,权威DNS服务器返回www.google.com对应的ip地址,本地DNS服务器将该地址返回到主机上,主机接下来就可以进行三次握手发起TCP连接

    3、DNS 用的是 TCP 还是 UDP ?

    用UDP,因为针对DNS查询请求,携带的数据很小,并且对可靠性要求不是很高,所以使用UDP就够了

    4、DNS解析请求的服务器单机并且响应速度慢怎么办?

    可能是配置的本地DNS服务器有问题,可以设置一个离主机比较进的DNS服务器

    0 赞同 0 条回复
  • 秊 永久会员 2023年9月16日 下午7:14

    1、DNS协议是干嘛用的?

    我们通常用 IP 地址来唯一的标识一台上网的计算机,但由于 IP 地址不方便记忆,也不能显式的表名组织,地址等等属性,所以就诞生了域名,比如 http://www.baidu.com,容易记住,也能体现公司组织等等标识。DNS,也就是域名解析协议就是用来将域名和 IP 地址相互映射,使人们更加方便的访问互联网。

    2、讲一下dns过程,给一个网址www.google.com,dns服务器如何逐级解析的?

    首先域名是有层级结构的,从上到下依次为根域名,顶级域名,二级/三级域名等等。那么根据域名查对应 IP 地址的过程也需要从上到下,先向根域名服务器请求所查询域名的顶级域名服务器的地址,再通过这个地址向顶级域名服务器去查权威域名服务器的地址,最终返回想要的 IP 地址,结束。

    需要多说的是,DNS 解析的过程是有两种方式的,递归查询和迭代查询。我刚只说了需要拿到某某地址,并没有说是上一级域名服务器去向下一级域名服务器请求,还是用户本身去请求下一级域名服务请,那么前者就对应着递归查询,后者就对应着迭代查询。不过一般 DNS 解析都是用的迭代查询,以免根服务器的压力过大。

    除此之外,整个过程也有缓存的存在,除了那些根,顶级,权威域名服务器都有之前请求的缓存,我们的电脑本身,还有本地域名服务器都有缓存,只有缓存未命中时才会进行下一级的查询。那么加上本地缓存和本地域名服务器,整个 DNS 解析过程就变成了本地缓存,本地域名服务器,根域名服务器,顶级域名服务器,最后是权威域名服务器。

    3、DNS 用的是 TCP 还是 UDP ?

    由于 DNS 的数据包一般情况下非常小,并且需要快速,高效的完成域名解析,大多数情况都是用的 UDP。主要还是数据量很小,如果丢包了重发一次就好了,速度很快。并且 DNS 报文中允许填入序号字段,请求报文和应答报文的序号相同,多个 DNS 请求之间可以通过序号来一一对应。

    但是某些特殊情况 DNS 的数据长度很大(512字节),为了保证数据完整性,此时也会用 TCP 来保证可靠性传输。

    4、DNS 解析请求的服务器单机并且响应速度慢怎么办?

    一般情况下 DNS 服务器本身是没有问题的,有可能是客户端到 DNS 服务器的网络延迟比较大。这个问题可以通过 ping DNS 服务器的地址来验证。比如我试过的,正常网络情况下,有时使用 Google 提供的 DNS 服务延迟就在 100ms 左右,地址为 8.8.8.8。这个时候就可以更换 DNS 服务器地址成电信的 114.114.114.114 来加快速度。除此之外,某些 Linux 系统本身是不会自动配置 DNS 缓存的,需要我们自己去开启这个功能。有了 DNS 缓存,后面的 DNS 解析请求就比第一次要快的多了。

    0 赞同 0 条回复

# 回答此问题

后才能回答