对网络应用层的理解(二)

来源:互联网 发布:char转int c语言 编辑:程序博客网 时间:2024/05/22 05:27

上次博客主要总结回顾了应用层的一些知识,包括体系结构,HTTP协议,cookie等,今天主要来总结一下dns的知识。

DNS概述

DNS(Domain Name System),主要解决的问题:

  • Internet上主机/路由器的识别问题(域名->IP地址)

DNS服务

  • 域名向IP地址的翻译
  • 主机别名
  • 邮件服务器别名
  • 负载均衡:Web服务器

IP地址是每一台主机的唯一标识符,而在我们真实上网过程中所用到的是便于我们记忆的域名。DNS是一个什么东西呢?它是一个域名解析系统,也是一个多层命名服务器构成的分布式数据库,作为应用层的协议主要功能就是完成域名的解析。为什么是分布式的呢,如果是集中式的会造成下面几个问题:

  • 单点失败问题
  • 流量问题
  • 距离问题
  • 维护性问题

如果我们使用一个或多个统一在一起一起服务,一旦机器换掉了,那么这个网络就要瘫痪了,这是单点失败问题。对于流量问题,想象一下几十台主机同时到某个服务器区请求,那么流量是巨大的,成本也是巨大的。距离问题的话,如果某台服务器在中国,美国人想要访问的话,还要横跨一个太平洋,这个成本也可想而知,还会造成时延问题。当然了集中式分布会造成一些列的维护性问题。所以我们采用分布式系统,如图:

这里写图片描述

第一层是根服务器,第二层是顶级域的域名服务器,比如com,org,edu等,再下面一级就是比较具体的,比如雅虎,亚马逊公司有自己的域名服务器,umass这个大学有自己的域名服务器,所以这样就构成了一个分布式层次式的数据库。

比如客户想要查询www.amazon.com的IP地址,分为以下这么几个步骤:

  • 客户端查询根服务器,找到com域名解析服务器
  • 客户端查询com域名服务器,找到amazon.com域名解析服务器
  • 客户端查询amazon.com域名解析服务器,获得www.amazon.com的IP地址

DNS根域名服务器

全球有13个根域名服务器,当本地域名解析服务器无法解析域名时,访问根域名服务器,如果根域名服务器不知道映射,访问权威域名服务器,然后获得映射返回本地域名服务器。

顶级域名服务器

负责com,org,net,edu等顶级域名和国家顶级域名,例如cn,uk,fr等,其中Network Solutions维护com顶级域名服务器,Educause维护edu顶级域名服务器。

本地域名解析服务器

不严格属于层级体系,每一个运营商都有一个本地域名服务,也称作默认域名解析服务器,当主机进行DNS查询时,查询被发送到本地域名服务器,作为代理,将查询转发给域名解析服务器系统。

DNS查询

先来解释几个名词:

迭代查询:被查询服务器返回域名解析服务器的名字(“我不认识这个域名,但是你可以问这个服务器”)。本地域名服务器向根域名服务器的查询的迭代查询。

递归查询:将域名解析的任务交给所联系的服务器。主机向本地域名服务器的查询一般都是采用递归查询。

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

DNS记录缓存和更新

只要域名解析服务器获得域名——IP映射,即缓存这一映射,一段时间过后,缓存条目会失效,本地域名服务器一般会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问到。