[计算机网络-应用层] DNS:因特网的目录服务
我们知道有两种方式可以识别主机:通过主机名或者IP地址。人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的、有着层次结构的IP地址。为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录服务。这就是域名系统(Domain Name System,DNS)的主要任务。
DNS运行在UDP上,使用53端口。
除了进行主机名到IP地址的转换外,DNS还提供了一些重要的服务:
·主机别名。有着复杂主机名的主机可以拥有一个或多个别名。原复杂主机名也叫规范主机名。主机别名(如果有的话)比主机规范名更容易记忆。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。
·邮件服务器别名。同主机别名类似,电子邮件应用程序调用DNS,对提供的邮件服务器别名进行解析,以获得该主机的规范主机名以及其IP地址。MX(Mail Exchanger,邮件交换)记录允许一个公司的邮件服务器和Web服务器用相同的(别名化的)主机名。
·负载分配。DNS也用于在冗余的服务器(如冗余的Web服务器等)之间进行负载分配。对于这些冗余的Web服务器,一个IP地址集合对应于同一个规范主机名。DNS数据库中存储着这些IP地址集合。当客户机为映射到这个IP地址集合的名字发出一个DNS请求时,该服务器用包含全部这些地址的报文回答,但在每个回答中旋转这些地址排放顺序。因为客户机通常总是向IP地址排在最前面的服务器发送HTTP请求报文,所以DNS就在所有这些冗余的Web服务器之间旋转分配负载。DNS旋转同样适用于邮件服务器,因此,多个邮件服务器可以具有相同的别名。
DNS工作机理:
DNS采用分布式的设计方案。
下面是DNS服务器的部分层次结构(由上到下,每层分别是根服务器、TLD服务器、权威服务器):

1.分布式、层次数据库
大致来说,有3种类型的DNS服务器:根DNS服务器、顶级域(Top Level Domain,TLD)DNS服务器和权威DNS服务器。
假设一个DNS客户机要确定主机名www.amazon.com的IP地址。粗略来讲,将发生下列事件:
·客户机请求根服务器以发现com TLD服务器
·客户机请求com TLD服务器以得到 amazon.com 权威服务器
·客户机请求amazon.com 权威服务器以得到对 www.amazon.com的IP地址
下面来详细介绍一下这三种类型的DNS服务器:
·根DNS服务器
在因特网上有13个根DNS服务器(标号为a到m),尽管我们将这13个根DNS服务器中的每个都视为单个的服务器,但每台“服务器”实际上是冗余服务器的群集,以提供安全性和可靠性。

·顶级域(TLD)服务器
负责com, org, net, edu等,以及所有顶级国家域 uk, fr, ca, jp.
·权威DNS服务器
组织的DNS服务器为组织的服务器(如Web和电子邮件)提供对IP映射的权威主机名。
能够由组织或服务提供商维护。
·本地DNS服务器
本地DNS服务器严格来说并不属于DNS服务器的层次结构,但它对DNS层次结构是很重要的。

图 1 图 2
在图1的例子中用到了递归查询和迭代查询。从cis.poly.edu到dns.poly.edu发出的查询是递归查询,因为该查询请求dns.poly.edu以自己的名义获得该映射。而后继的三个是迭代查询,因为所有的回答都是直接返回给dns.poly.edu。
从理论上,所有的DNS查询既可以是迭代的也可以是递归的。例如,图2显示了一条DNS查询链,其中所有查询都是递归的。
实际中,查询通常遵循图1中的模式:从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。
2.DNS缓存
为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用缓存技术。
原理:当一个DNS服务器接收一个DNS回答(例如,包含主机名到IP地址的映射)时,DNS服务器能将回答中的信息缓存在本地存储器。由于主机与主机名的IP地址映射决不是永久的,所以DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。
DNS记录:
实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。下面是RR的基本格式:

Type=A name 是主机名
Value是IP地址
Type=NS name 是域 (如 foo.com)
Value是该域的权威名字服务器的IP地址
Type=MX Value是与name相联系的邮件服务器
Type=CNAME Value是别名为name的主机对应的规范主机名
注:通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名
DNS报文:
DNS只有两种报文,即查询和回答报文,并且这两种报文有着相同的格式。
下图是DNS报文格式:

[计算机网络-应用层] DNS:因特网的目录服务的更多相关文章
- 【计算机网络】2.5 DNS:因特网的目录服务
第二章第五节 因特网的目录服务 DNS(域名系统)提供了一种能运行主机名到IP地址转换的因特网目录服务:一方面,他让人能够记住如taobao.com这样的主机别名:另一方面,他提供给路由器可理解的IP ...
- 【计算机网络】 DNS学习笔记 (>﹏<)
参考书籍 <计算机网络-自顶向下> 作者 James F. Kurose DNS的作用 DNS是因特网的目录服务 DNS是因特网的目录服务,它提供了主机名到IP地址映射的查询服务 ...
- DNS:因特网的目录服务
作者:华科小涛,http://www.cnblogs.com/hust-ghtao/ 有两种方式来识别主机:通过主机名或IP地址.人们当然喜欢便于记忆的主机名,而路由器则喜欢定长的.有层次结构的IP地 ...
- 计算机网络-应用层(4)DNS协议
域名系统(Domain Name System, DNS):一个分层的由DNS服务器实现的分布式数据库+一个使得主机能够查询分布式数据库的应用层协议 DNS服务器通常是运行BIND (Berkeley ...
- 第六章 应用层(DNS和http协议详解)
序言 这是计算机网络基础的最后一篇博文了,大体的从物理层到最上层的应用层做了一个大概的了解,花了也有快1个月的时间了,在本章结尾会给你们我学习该课程的视频资料,我希望能帮到所有想学习想提高自己技术的同 ...
- 计算机网络-应用层之HTTP协议
1.概念 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写:HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). ...
- 计算机网络之互联网|因特网|万维网|HTTP|HTML之间的关系辨析
本博文基于知乎"Web 是什么意思?"一问而引起.(本文均属于博主从知乎上自身所答搬运而至). 如无特殊声明,括号()内以分号分隔的名词均等效. 本文如无特殊引用声明,则所有内容版 ...
- [计算机网络-应用层] HTTP协议
1.HTTP概况 Web的应用层协议是超文本传输协议(HTTP),它是Web的核心. HTTP由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文进行对话. ...
- 计算机网络之DNS常见攻击
DNS欺骗 在Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同 ...
随机推荐
- java-执行流程控制语句
就像有知觉的生物一样,程序必须在执行的过程中控制它的世界,并做出选择.java使用执行流程控制语句做出选择. 1.选择语句 if if(布尔表达式){ 业务逻辑1; }else{ 业务逻辑2: } s ...
- [Oracle]关于Oracle分页写法的性能分析及ROWNUM说明
关于分页写法的性能分析及ROWNUM的补充说明 分页写法 一.测试前数据准备 SQL> SELECT COUNT(*) FROM BPM_PROCVAR; COUNT(*) ---------- ...
- 全国Uber优步司机奖励政策 (1月18日-1月24日)
本周已经公开奖励整的城市有:北 京.成 都.重 庆.上 海.深 圳.长 沙.佛 山.广 州.苏 州.杭 州.南 京.宁 波.青 岛.天 津.西 安.武 汉.厦 门,可按CTRL+F,搜城市名快速查找. ...
- Ajax跨域请求怎么解决?
前言 项目中需要将第三方系统中,对应用户的代办消息集成到系统中.对方提供了获取对应用户的接口url,但是由于两边的系统是部署到客户现场不同IP的虚机上的,所以进行ajax请求的时候是属于跨域请求的.之 ...
- STM32堆栈指针疑问
1. 下面的代码看的不是很明白,百为stm32开发板光盘\测试程序\CortexM3\Mode_Privilege\project,堆是程序员分配和使用的,栈是编译器指定的,存放函数参数,临时变量. ...
- java 面向对象一
一 基础部分 1.基本数据类型 Java的八种基本数据类型不支持面向对象的编程机制,不具备“对象”的特性:没有成员变量.方法可以调用.java之所以提供这八种基本数据类型,是为了照顾程序员的传统习惯. ...
- 卸载Oracle 11g
卸载oracle只需要执行deinstall.ba即可 运行.bat文件 按照提示步骤进行卸载 .bat文件所在目录需要手动删除,需要在程序管理器里面关掉Oracle的进程,在删除当前文件夹
- android分析windowManager、window、viewGroup之间关系(二)
三.接上一节,分析windowManager中添加一个悬浮框的方式,首先看代码 WindowManager.LayoutParams params = new LayoutParams(); para ...
- 「日常训练」Paths and Trees(Codeforces Round 301 Div.2 E)
题意与分析 题意是这样的,定义一个从某点出发的所有最短路方案中,选择边权和最小的最短路方案,称为最短生成树. 现在求一棵最短生成树,输出总边权和与选取边的编号. 我们首先要明白这样一个结论:对一个图求 ...
- 手机APP测试如何进行兼容性测试?
Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...