前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机网络自学笔记:DNS

计算机网络自学笔记:DNS

作者头像
云时之间
发布2019-03-04 10:24:16
1.1K0
发布2019-03-04 10:24:16
举报
文章被收录于专栏:云时之间云时之间

因特网上的主机和人类一样,也可以使用多种方式进行识别。主机的一种识别方法是用它的主机名,这些名字便于记忆,也乐于被人们接受。主机也可以使用所谓IP地址进行识别。一个IP地址由4个字节组成,并有着严格的层次结构。我们说IP地址具有层次结构,是因为从左至右它包含了越来越详细的关于主机的位置息。

人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的、有着层次结构的IP地址。因此需要一种能进行主机名到IP地址转换的目录服务,这就是域名系统。

1DNS提供的服务

DNS是:

1:一个由分层的DNS服务器实现的分布式数据库;

2:一个允许主机查询分布式数据库的应用层协议。

DNS服务器通常是运行BIND软件服务器机器。DNS协议运行在UDP之上,使用53号端口。

DNS用于将用户提供的主机名解析为IP地址。例如当某个用户主机上的一个浏览器请求某个网页时,为了使用户的HTTP请求消息发送到Web服务器,用户主机首先必须获得Web服务器的IP地址。

在前面介绍的Socket编程接口中有专门的函数如gethostbyname()允许程序发起一个主机名到IP地址的查询。在Windows系统中专门有一个服务叫DNSClient完成DNS查询工作(控制面板-管理工具-服务中可见)。

除了进行主机名到lP地址的转换外,DNS还提供了一些重要的服务:

.主机别名

主机别名比主机规范名更容易记忆,例如http://www.mit.edu,其真实的服务器名字(主机规范名)并不是http://www.mit.edu,大家可以用ping命令发现它真实的名字。

.邮件服务器别名

一个单位或域中负责邮件收发的主机。

.负载均衡

DNS也可以用于在冗余的服务器之间进行负载分配。可以配置很多冗余的Web服务器,一个IP地址集合对应于同一个规范主机名。DNS数据库中存储着这些IP地址集合。当客户机为映射到这个IP地址集合的名字发出一个DNS请求时,该服务器用包含全部这些地址的消息进行回答,但在每个回答中轮回这些地址排放的顺序。因为客户机通常总是向IP地址排在最前面的服务器发送HTTP请求消息,所以就在所有这些冗余的Web服务器之间均衡分配负载。这是一种非常传统的负载均衡技术。

2工作机理概述

假设运行在用户主机上的某些应用程序(如Web浏览器)需要将主机名转换为IP地址。这些应用程序将调用DNS的客户机端,并指明需要被转换的主机名。在很多系统中,应用程序执行这种转换调用函数gethostbyname()。

DNS的客户机端接收到转换请求后,向网络中发送一个DNS查询消息。所有的DNS请求和回答消息使用UDP数据报经端口53发送。过若干时间后,用户主机上的客户机端接收到一个映射的DNS回答消息。这个查询结果则被传递到应用程序。

从用户调用应用程序的角度看,这是一个简单、直接的转换服务。但事实上,实现这个服务的系统非常复杂,它由分布于全球的大量DNS服务器组成。

DNS不能采用集中式设计的原因:

.单点故障

.通信负担

.延迟

.维护

•分布式、层次数据库

为了处理规模问题,DNS使用了大量的服务器,它们以层次方式组织,并且分布在全世界范围内。大致有3种类型的DNS服务器:根DNS服务器、顶级域DNS服务器和权威服务器。这些服务器以图中所示的层次结构组织起来。

假定一个DNS客户机要确定主机名http://www.mit.edu的IP地址。

域名查询主机的DNSClient向本地域名服务器发起一个查询。

本地域名服务器首先与根服务器之一联系,取得顶级域名edu的TLD服务器的IP地址。

本地域名服务器然后与这些TLD服务器之一联系,取得http://mit.edu权威服务器的IP地址。

本地域名服务器为http://www.mit.edu联系权威服务器,返回www主机的IP地址。

最后,本地域名服务器将结果返还给DNSClient,操作系统将结果作为函数调用返回值给应用程序。

三种类型的DNS服务器。

.根ONS服务器。在因特网上有13个根DNS服务器(标号为A到M),其中大部分位于北美洲。

.顶级域(TLD)服务器。这些服务器负责顶级域名(如COM,ORG,GOV和所有国家的顶级域名(如CN)。

.权威DNS服务器。将主机的名字映射为IP地址,由一个单位的权威DNS服务器负责保存这些记录。另一种方法是支付费用将这些记录存储在某个ISP的权威DNS服务器中。

根、TLD和权威DNS服务器都处在DNS服务器的层次结构中。

本地DNS服务器严格来说并不属于DNS服务器的层次结构,但它对DNS层次结构又是很重要的,本地DNS服务器通常与主机相隔不超过几个路由器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将域名简析请求转发到DNS服务器层次结构中。

DNS查询过程中可以是迭代查询或是递归查询。

3:DNS缓存

为了改善时延性能并减少在因特网上传输的DNS消息数量,DNS广泛使用了缓存技术。DNS缓存的原理非常简单。在请求链中,当一个DNS服务器接收一个DNS回答时,服

务器能将回答中的信息缓存在本地存储器。

另一个对相同主机名的查询到达该DNS服务器时,该服务器能够提供所要求的IP地址,

即使它不是该主机名的权威服务器。但DNS服务器在一段时间后(通常设置为两天》将丢弃缓存的信息。

4:DNS记录和消息

实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(ResourceRecord,RR)。RR提供了主机名到IP地址的映射。每个DNS回答消息包含了一条或多条资源记录。资源记录通常以文本的形式保存在DNS服务器的配置文件中。资源记录是一个包含了下列字段的4元组:

(Name,Value,Type,TTL)

TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。

Name和value的值取决于Type:

如果Type=A,则Name是主机名,value是该主机名的IP地址。因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。

如果Type=NS,则Name是域,而value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名。

如果Type=CNAME,则value是别名为Name的主机对应的规范主机名。该记录能够向请求主机提供一个主机名对应的规范主机名。

.如果Type=MX,则value是别名为Name的邮件服务器的规范主机名。使用MX记录,一个公司的邮件服务器和其他服务器(如它的web服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS客户机应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户机应当请求一条CNAME记录。

DNS只有查询和回答消息,并具有相同的格式。

如何在DNS数据库中添加记录

当你申请了一个域名http://test.com,需要向某些注册登记机构注册域名时,需要提供你的主DNS服务器和辅助权威DNS服务器的名字和IP地址。

对这两个权威DNS服务器地址,注册登记机构确保将一个类型NS和一个类型A的记录输入TLDcom服务器。例如注册登记机构会将下列两条资源记录插入该DNS系统中:

(http://test.comhttp://dns1.test.com,NS)

(http://dns1.test.com,210.210.111.12,A)

你如果开通了Web服务器、邮件服务器,那么需要在你的主域名服务器中添加www,主机的A类型记录和类型为MX资源记录。一旦完成所有这些步骤,人们就可以访问你的Web站点,并向你发送电子邮件了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.02.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
分布式数据库 TDSQL
分布式数据库(Tencent Distributed SQL,以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档