计算机网络之DNS


前言

DNS算是计算机网络中比较难,也比较重要的部分。

概述

识别主机有两种方式,通过主机名或IP地址。
域名系统(DNS)的主要任务就是提供进行主机名到IP地址转换的目录服务。
DNS是:

  1. 一个由分层的DNS服务器实现的分布式数据库
  2. 一个使得主机能够查询分布式数据库的应用层协议

也可以说:
DNS由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式应用层协议组成。

DNS也是一种应用层协议。
DNS协议运行在UDP之上,使用53号端口。

DNS通常是由其他应用层协议所使用的,包括HTTP、SMTP和FTP,将用户提供的主机名解析为IP地址。

DNS提供的服务

最重要的服务当然是从主机名到IP地址的转换。
除此之外DNS还提供了一些重要服务:

  • 主机别名,规范主机名
    拥有复杂主机名的主机能拥有一个或多个别名
    例如一台名为relay.west-coast.enterprise.com的主机,可能还有两个别名为enterprise.com和www.enterprise.com。
    在这种情况下,relay.west-coast.enterprise.com也称为规范主机名
    主机别名(当存在时)比主机规范名更加容易记忆。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。
    应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址

  • 邮件服务器别名
    显然人们也希望电子邮件地址便于记忆。
    例如Bob在雅虎邮件上有一个账户,Bob的邮件地址为bob@yahoo.com。实际上雅虎邮件服务器的主机名可能更加复杂,而不是像yahoo.com这样简单(规范主机名可能是realy1.west-coast.hotmail.com这种)。电子邮件可以调用DNS,对提供的主机名别名进行解析,以获得该主机的规范主机名机器IP地址。事实上,MX记录允许一个公司的邮件服务器和Web服务器使用相同的别名化的(简单好记化的)主机名。例如一个公司的Web服务器和邮件服务器都可以叫做enterprise.com。

  • 负载分配
    繁忙的站点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址。由于这些冗余的Web服务器,一个IP地址集合因此与同一个规范主机名相联系。DNS数据库中存储着这些IP地址的集合,当用户对映射到某地址集合的名字发出一个DNS请求时,该服务器用IP地址的整个集合进行响应。但在每个回答中循环这些地址次序。因为客户通常总是向IP地址排在最前面的服务器发送HTTP请求报文,所以DNS就在所有这些冗余的Web服务器之间循环分配了负载。DNS的循环同样可以用于邮件服务器,因此多个邮件服务器可以具有相同的别名。

下面对第三点,负载分配,或者说对下面这个知识点

规范主机名对应多个别名,多个IP地址,一个别名也可以对应多个IP地址。

进行一下说明。
其实还是很好理解的,www.baidu.com是一个主机名,我现在要访问www.baidu.com,于是我在网址栏输入www.baidu.com,敲下回车,浏览器把这个主机名送到DNS应用的客户端(DNS应用的客户端也运行在我的这台客户主机上),DNS客户端向DNS服务器发送一个包含主机名的请求。之后DNS客户端会收到一个回答报文,回答报文中就含有对应于该主机名的IP地址。
那我们知道每天要访问www.baidu.com的人肯定非常多,www.baidu.com这个站点绝对不止有一台服务器,每个服务器都在不同的端系统上,拥有不同的IP地址,虽然我上午和下午都在网址栏输入www.baidu.com并且成功访问了百度页面,但是我上午和下午访问的可能是百度的两个不同的服务器,也就是访问两个不同的IP地址,这就是一个主机名对应多个IP地址。

DNS的应用

当浏览器请求URL界面时

考虑运行在某用户主机上的一个浏览器(即一个HTTP客户)请求URL www.someschool.edu/index.html页面时会发生什么现象。
为了使用户的主机能够将一个HTTP请求报文发送到Web服务器www.someschool.edu,该用户主机必须获得www.someschool.edu的IP地址。其做法如下:

  1. 同一台用户主机上运行着DNS应用的客户端
  2. 浏览器从上述URL中抽取出主机名www.someschool.edu,并将这台主机名传给DNS应用的客户端
  3. DNS客户向DNS服务器发送一个包含主机名的请求
  4. DNS客户最终会收到一份回答报文,其中含有对应于该主机名的IP地址
  5. 一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址的80端口的HTTP服务器进程发起一个TCP连接

DNS分布式层次是数据库

DNS是一个在因特网上实现分布式数据库的精彩范例。
为了处理扩展性为题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内。没有一台DNS服务器拥有因特网上所有主机的映射。
大致说来,有三种类型的DNS服务器:

  1. 根DNS服务器
  2. 顶级域(TLD)DNS服务器
  3. 权威DNS服务器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值