计算机网络——应用层(三)

DNS服务

DNS全称叫Domain Name System,翻译过来就是域名系统,但我们一般称之为域名解析。

什么是域名解析呢?简单来说就是把我们表面所看到的主机域名转化为网络上能够识别的IP地址。这就像同一个东西在不同地方的不同表现形式,举个例子,比如说你叫张三,是一名老师,在学校的时候大家都称呼为你为张老师,但在家里或者其他场合,大家都称呼你为张三。这个张老师和张三都对应的是你自己本身,但因为在不同的场合,所以表现的形式不太一样。

对于计算机网络体系也是一样,我们怎么来识别一个主机或者服务器呢?对于计算机来说,它们比较喜欢用IP地址来表示网络中每一个主机;但对我们自己来说,IP地址格式太难记忆了,也不好理解,比如15.49.14.18;159.156.5.15等等这些个IP地址(我随便敲的),我们大部分人不能理解是什么意思,也不好记。所以我们就发明了一个我们能够理解的表示方法——域名

域名

什么是域名呢?简单来说就是我们平常所看到的各种各样的网址,比如像 www.baidu.com, www.qq.com这些等等。前面的WWW代表这遵循的是万维网的格式,后面的 baidu.com,qq.com才是真正有区分度的域名。而后缀COM代表的是顶级域服务器 。这些顶级域服务器就像一个服务机构,如果你想拥有一个以COM结尾的属于自己的网址,那么你就得去这些服务机构注册,缴纳一定的费用,提供一些资料,这些服务机构就会给你注册一个属于你自己的独特的网址,这样别人就能通过这个网址来访问你的服务器了。这样的顶级域名还有很多,像 .net,.cn等等。

DNS负责将这些网址,也就是我们能够理解的域名转化为计算机能够理解的IP地址,然后再打包生成网络报文交付给传输层

那么这是怎么实现的呢?

我们自己计算机中都有个DNS应用程序,这个应用程序通过网络(UDP)来跟DNS服务器打交道。之前提到过的顶级域服务器就是一个DNS服务器,它们能接受DNS应用程序传给它的域名,然后返回这个域名对应的IP地址。所有之前你去注册所提供的一些资料就包括你的IP地址。这样的DNS服务器总共分为三个层次:

  • 根DNS服务器
  • 顶级域DNS服务器
  • 权威DNS服务器

DNS应用程序具体做法是:

1)浏览器从请求URL中提取出域名,比如 www.baidu.com然后将这个域名交给DNS应用程序。
2)你的DNS应用程序向DNS服务器发送一个请求,这个请求包含域名 www.baidu.com
3)DNS服务器向你的DNS应用程序返回一个响应报文,这个报文包含那个域名所对应的IP地址。
4)你的DNS应用程序会将这个IP地址返回给浏览器,浏览器随即生成请求报文交给传输层。

我们接下来要介绍的就是其中的第2步和第3步。
首先我们先来了解一下DNS服务器的层次模式:
在这里插入图片描述
我们的DNS应用程序在拿到域名 www.baidu.com之后,首先将这个域名发送给根DNS服务根DNS服务器检查这个域名,发现这个域名是以com结尾的,然后返回给DNS应用程序com所对应的顶级域服务器的IP地址。然后DNS应用程序再向这个IP地址(顶级域服务器)发送 www.baidu.com这个域名,该顶级域服务器检查这个域名,发现这个域名是以baidu.com结尾的,然后它就把baidu.com所对应的权威DNS服务器的IP地址发给DNS应用程序,而这个IP地址就是之前你去注册域名的时候要提交的。然后DNS应用程序再向这个IP地址(权威DNS服务器)发送www.baidu.com这个域名,这个权威DNS服务器就会把这个域名所对应的IP地址传回给DNS应用程序。最后,DNS应用程序终于拿到了www.baidu.com这个域名所对应的IP地址。

权威DNS服务器

这里我想讲一下这个权威DNS服务器,权威DNS服务器时建立在用户自己那里的。比如百度公司去申请www.baidu.com这个域名,百度公司就要提供自己的权威DNS服务器和自己的IP地址。你通过顶级域服务器能够查询到这个IP地址,然后通过这个IP地址访问百度的权威DNS服务器,百度的权威DNS服务器就会将www.baidu.com这个域名对应的IP地址返回给你。

有些人可能会问,为什么顶级域服务器不直接存储baidu.com这个域名对应的IP地址?这样我们不经过权威DNS服务器就能获得域名对应的IP。

我是这么考虑的,因为百度公司有很多WEB服务器,你请求的页面可能分布在不同的WEB服务器上,而不同的WEB服务器具有不同的内网IP地址,比如百度公司有三台WEB服务器,其IP地址分别为192.168.0.1 / 192.168.0.2 / 192.168.0.3。 顶级域DNS服务器不能根据你所提供的域名找到正确的WEB服务器IP地址,所以它就让你直接跟百度公司的权威DNS服务器打交道,因为它知道百度公司的权威DNS服务器的IP是192.168.0.0。而百度公司自己的DNS服务器当然知道你所请求的页面在哪个WEB服务器上,然后它再把准确的WEB服务器IP地址发给你。

猜你喜欢

转载自blog.csdn.net/weixin_43379478/article/details/83752007