计网 --- > 域名服务系统:因特网的目录服务

主机名:

// 主机的一种标识方法如:
cnn.com
www.yahoo.com
gaia.cs.umass.edu
cis.poly.edu

主机名可能由不定长的字母数字组成,路由器难以处理.由于这些原因,
主机也可以使用IP地址(IP address) 进行标识

// 简略介绍ip地址
// 一个IP地址由4个字节组成,并有着严格的层次结构
// 例如:121.7.106.83这样一个IP地址,其中的每个字节都被句点分隔开来,表示了0~255的十进制数.

DNS提供的服务:

// 识别主机的方式有2种:通过主机或者IP地址
// 人们喜欢便于记忆的主机名标识方式
// 路由器喜欢定长的、有着层次结构的IP地址
// 为了折衷这些需求,就产生了DNS(Domain Name System, DNS).DNS是:
// 1.一个由分层的DNS服务器实现的分布式数据库;
// 2.一个使得主机能够查询分布式数据库的应用层协议

// 注:DNS服务器通常是运行BIND(Berkeley Internet Name Domain)软件的UNIX机器
// DNS运行在UDP上面,使用端口53

DNS工作机理概述:

// 当某个用户主机上的一个浏览器请求URL www.someschool.edu/index.html页面时会发生如下:
// ·同一个用户主机上运行着DNS应用的客户端
// ·浏览器从输入的URL中提取出主机名www.someschool.edu,并将该主机名传递给DNS应用的客户端
// ·DNS客户像DNS服务器发送一个包含主机名的请求
// ·DNS客户最终会收到一份回答报文,其中包含对于该主机的IP地址.
// ·一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

主机别名(host aliasing):

// 有些主机可能拥有一个或多个别名,如:
// relay1.west-coast.enterprise.com的主机,可能还有两个别名
// enterprise.com 和 www.enterprise.com。
// 称relay1.west-coast.enterprise.com为规范主机名
// 很明显,主机别名(enterprise.com)更容易记忆.
// 通过DNS可以主机别名查找到对应的规范主机名以及主机的IP地址

负载均衡(load distribution):

// 用于在冗余的服务器之间进行负载分配

DNS的分布式、层次数据库:

// DNS的一种简单设计是在因特网上只使用一个DNS服务器,该服务器包含所有的映射...
// 这种设计有很多缺陷(单点故障、通信容量、维护麻烦等),因此采用分布式、层次数据库

// DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内.
// 没有一台DNS服务器拥有因特网上所有主机的映射(映射分布在所有的DNS服务器上).

DNS大致分为3类:根DNS服务器、顶级域DNS服务器和权威DNS服务器

顶级域(Top_Level Domain, TLD)DNS服务器:

// 这些服务器负责顶级域名如com、org、net、edu和gov
// 以及素有国家的顶级域名如uk、fr、ca和jp

权威DNS服务器:

// 在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址
// 一个组织机构的权威DNS服务器收藏了这些DNS记录
// 一个组织机构能够选择实现它自己的权威DNS服务器以保存这些记录
// 另一种方法是,该组织能够支付费用,让这些记录存储在某个服务提供商的一个权威DNS服务器中

本地DNS服务器(local DNS server):

// 每个ISP都有一台本地DNS服务器(也叫默认名字服务器)
// 当主机与一个ISP连接时,该ISP提供一台主机的IP地址
// 一台主机可能有一台或堕胎本地DNS服务器的IP地址.
// 可以通过访问Windows或UNIX的网络状态窗口来确定本地DNS服务器的IP地址(ipconfig?)

// 主机的本地DNS服务器通常"邻近"本主机.
// 对于某机构的ISP而言,本地DNS服务器可能就与主机在同一个局域网中
// 对于某居民区的ISP来说,本地DNS服务器通常与主机相关不超过几台路由器

// 当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用
// 并将该请求转发到DNS服务器层次结构中(权威DNS服务器、TLD DNS服务器、根DNS服务器)

更详细的论述:

// 假设主机cis.poly.edu想知道主机gaia.cs.umass.edu的IP地址
// 设某理工大学的本地DNS服务器为dns.poly.edu
// 设gaia.cs.umass.edu的权威DNS服务器为dns.umass.edu
// (1)主机cis.poly.edu首先向它的本地DNS服务器dns.poly.edu发送一个DNS查询报文(含主机名gaia.cs.umass.edu)
// (2)本地DNS服务器将该报文转发到根DNS服务器
// (3)根DNS服务器注意到其edu前缀并向本地DNS服务器返回负责edu的TLD的IP地址列表
// (4)该本地DNS服务器则再次向这些TLD服务器之一发送查询报文
// (5)该TLD服务器注意到umass.edu前缀,并用权威DNS服务器的IP地址进行响应
// (6)该权威DNS服务器是负责马萨诸塞大学的dns.umass.edu
// (7)最后本地DNS服务器直接向dns.umass.edu重发查询报文,dns.umass.edu用gaia.cs.umass.edu的IP地址进行响应
// (8)本地DNS服务器将IP地址返还给端系统,

// 得到ip地址后,就可以建立TCP连接了!!!

参考《计算机网络-自顶向下方法》(原书第6版)P89~P92

猜你喜欢

转载自blog.csdn.net/piano9425/article/details/93666865