【计算机网络】DNS

1.题外话:计算机网络学完了,然后要考试了。。。所以开始把之前的东西拿出来复习一下。然后作为软件专业的,我们学的其实还是比较深的。从顶层的应用层协议到最底层的物理层都学了,以及网络安全等。虽然后边学的不是很深入。应用层协议http协议就不多说了,这个就是在调用传输层提供的接口,大家平时也耳熟能详,我们把放在TCP里面。应用层就说一下DNS吧

2.然后开始这一章的话题:DNS:Domain Name System。域名服务系统。这个东西到底是干啥的????

3.首先什么域名?这个我就举个简单的例子吧:www.baidu.com.这个就是一个域名。我们看这个域名,其实由三部分组成,www:万维网的缩写,万维网是个啥玩意就不说了,地球人都知道。baidu:公司的名称。com域名的等级标志。其实域名就是一个机构在网络上的名字,域就是区域的意思。

4.搞懂了域名,我们提出一个问题:为什么在浏览器的地址栏中输入这个字符串,按下回车就可以到达baidu的页面?这其中发生了什么?是怎么是实现的,接下来解决这个问题。

5.IP地址。IP:Internet Protocol.互联网协议,IP地址其实就是在这个协议下地址,你可能听说过什么IPV 4,IPV6之类的,说的都是这个。一台电脑要想上网,就必须有一个唯一的IP地址(这个唯一其实具有空间局部性,后边我们有机会解释)。然后你和其他的电脑在通信的时候,别的电脑就可以通过这个唯一的IP找到你,你也可以通过这个IP找到别人。所以其实在网络中寻址都是根据IP来的(啥?找到这台电脑之后,如何找到是哪个应用程序发出的?这个通过端口寻找。采用多路复用技术,后边有机会再说)。IP其实就是一个32位的数据,被划分为4部分,每部分八位,例如:192.168.168.42这种?

6.OK,现在我们已经知道了这样的事实:电脑之间的互相寻址是通过IP是实现的,但是你发现了,其实你很少直接在地址栏输入IP,一般输入的都是域名(其实一般域名也不输入,百度一下直接找到网站完事,但是对于某些网站你是百度不出来的(手动滑稽))那么他俩到底是什么关系?

7.IP和域名的关系:其实,正如上边我们看到的一样,域名和IP是唯一对应的。这是显然的,因为如果不唯一那就乱了。也就是说浏览器似乎提供了这样的功能:我只需要输入域名,他就可以找到对应的IP。然后浏览器其实没有这么强大,为了提供这种服务,就出现了DNS:域名解析服务。这个服务只做这样一种事情:输入域名,输出IP。这就需要有一台服务器,上边有一个数据库,数据库中一张表,表里面两列,第一列是域名,第二列是IP,其中第二列是关键字。然后这个服务器的IP是大家都知道的,然后每次在地址栏输入域名,浏览器就去问这个服务器这个域名对应的IP,然后拿到IP之后,再继续后边的通信。

8.分布式状态下的DNS服务。上边我们可以看出来,要想通信,就要知道IP。获得IP的途径有两种,第一:根据浏览器当前的缓存。第二:去问那个域名服务器。假设我们不考虑浏览器的缓存,那么就存在一个很大的问题,世界上这么多电脑通信,都去问一个服务器,那这谁顶得住啊,而且数据库的那个表,也显然是存不下来的。还有如果这个服务器gg,那么网络几乎全部瘫痪。这其实就是集中式存在的巨大问题。所以人们提出了分布式的DNS服务。

                               

 

9.根据DNS服务器的等级,分为了四种DNS服务器。其中传说中的root服务器,全世界由13个(几乎全在美洲和欧洲,亚洲似乎就有一个在Tokyo。不过不用担心,中国虽然没有这玩意,但是中国的攻城狮早就做好了镜像)。

下边是这13个服务器的分布:

                     

10.虽然做了分布式处理,但是如何查询呢?总的有个规则吧,要不然都去问root,那root服务器表示:老子要你们这些fw何用?然后就规定了两种查询的方式:分别是递归查询和迭代查询。

11.递归查询:

                            

递归查询其实是这样玩的:311想知道右下角电脑的IP,然后呢,他就去问他的上一级,上一级表示懵逼,去问他的老大root(root表示要你们何用?)root虽然不知道,但是他会帮你去问他的小弟,直到问到。最后一层一层的返回,直到把结果返回给311.这显然是有问题的,这样root还是很累啊,所以不是很合适。

12.迭代查询:

                             

 

依旧是311,依旧是想知道右下角的IP。他依旧是去问他的老大,他老大依旧是懵逼,去问root。root表示,老子不知道,但是你可以去问我的小弟。然后311的上级就去问root的小弟,root的小弟表示我也不知道,但是我知道谁知道,你去问那谁谁,然后311的上级就去问那谁谁,那谁谁告诉了他答案,然后他在把答案告诉311.这种模式下,我们可以看出来,极大的减小了root的压力。root表示很爽。

真的的情况也就是两种问结合使用,本地采用递归,其他采用迭代。然而其实我们访问的网址很多时候具有实践局部性,浏览器端缓存我们最常使用的IP,然后每次找IP首先找缓存,如果早缓存里面找到了,就不用去查了。这又加快了速度。

13.DNS也是一种应用层的协议,本文的最后,就说一下其他的细节问题吧。首先是DNS轮循。其实在前边,我们说DNS服务器上数据库的一行两个记录,第一个是域名,第二个数IP,我们说IP是关键字,也就是说一个域名可以对应多个IP。其实这是很重要的,试想一下,对于大型的网站,一台服务器显然是不行的,需要多台服务器共同处理,然后我们就可以吧这个服务器的IP都对应到一个域名下,对于每次请求,DNS服务器返回的IP是循环的,然后服务的请求就会被多个服务器轮换处理,这样就不会说让一台服务器瞬间处理大量请求。示意图如下:

                                   

前边也说了,DNS是一种协议,那么就会有这种协议规定的数据包格式,文章最后,贴一下这个格式,虽然可能用处不大。

                                                            

 

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值