计算机网络第2章-DNS(3)

DNS:因特网的目录服务

在因特网上,主机和人类都一样,可以用很多种方式进行标识,主机的一种标识方法是它的主机名。

但是主机名一般是用IP来表示,IP是由四个字节组成,并且有严格的层次结构,不利于人类的记忆,为此一种新式的、允许人类以喜欢的方式、创建标识的方式诞生,域名和DNS。

DNS提供的服务

DNS是:

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

2.一个使得主机能够查询分布式数据库的应用层协议。

DNS协议运行在UDP之上,使用53号端口。

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

DNS的其它服务

主机别名

有着复杂的主机名的主机能拥有一个或者多个别名。

例如:

一台名为relay1.west-coast.enterprise.com的主机,可能还有两个别名为enterpraise.comwww.enterprise.com两个别名。

在这种情况下,relay1.west-coast.enterprise.com称为规范主机名。

主机别名比规范主机名更容易记忆,应用程序可以调用DNS来获得主机别名对应的规范主机名以及对应的主机IP地址。

邮件服务器别名

显而易见,人们也希望电子邮件地址也好记忆。

为此电子邮件应用程序也可以调用DNS来对主机名别名进行解析。

例如xxx.@163.com中的163.com就是一个别名。

负载分配

DNS也用在亢余的服务器(如亢余的Web服务器等)之间进行负载分配。

繁忙的站带你被亢余分配在多台服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址。

由于这些亢余的Web服务器,一个IP地址集合因此与一个规范主机名相联系。

DNS数据库中存储着这些IP地址集合。

当客户映射到某地址集合的名字发出一个DNS请求时,该服务器用整个IP地址集合进行相应,并且对该集合进行遍历循环。

DNS工作机理概述

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

为了处理扩展性问题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内。

没有一台DNS服务器拥有因特网上所有主机的映射,相反,这些映射分布在所有的DNS服务器上。

大致来说,共有三种类型的DNS服务器:

根DNS服务器、顶级域DNS服务器(Top-Level Domain/TLD)和权威DNS服务器。

三种服务器的结构如下所示。

现在我们假定有一个DNS客户要决定主机名www.amazon.com的IP地址,它的经过路径如下:

客户首先与根服务器之一联系,它将返回顶级域名com的TLD服务器的IP地址。

客户则与这些TLD服务器之一联系,它将返回amazon.com权威服务器的IP地址。

最后客户与amazon.com的全威威服务器之一联系,它为主机名www.amazon.com返回IP地址。

根DNS服务器

有400多个根服务器遍及全世界。

根服务器中提供TLD服务器的IP地址。

顶级域服务器(TLD)服务器

对于每个顶级域(com、org、net、edu、gov)和所有国家的顶级域(uk、fr)等等,都有TLD服务器。

权威DNS服务器

在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。

本地DNS服务器

一般来说,每个ISP都有一台本地DNS服务器(也叫默认名字服务器)

当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本地DNS服务器的IP地址。

下图是一个简单的本地DNS作用图。

现在是一个简单的例子。

假设主机cse.nyu.edu现在查询主机gaia.cs.umass.edu的IP地址。

则cse,nyu.edu先向本地DNS服务器dns.nyu.edu发送一个DNS查询报文。

随后本地DNS服务器将该报文转发到根DNS服务器,该根DNS服务器注意到其edu前缀并向本地DNS服务器返回负责edu的TLD的IP地址列表。

该本地DNS服务器则再次向这些TLD服务器之一发送查询报文,该TLD服务器注意到umass.edu前缀并用权威DNS服务器IP地址(dns.umass.edu)进行响应。

最后,本地DNS服务器向dns.umass.edu权威服务器发送查询报文,dns.umass.edu用gaia.umass.edu的IP地址返回,最后经由本地DNS服务器返回给请求主机cse.nyu.edu。

在该例子中,一共发送了四份查询报文,四份回答报文,共计八份报文。

递归查询和迭代查询

上面例子中(图2.18)同时利用了递归查询和迭代查询。

从cse.nyu.edu到dns.nyu.edu发出的查询是递归查询。

后继的3个查询都是迭代查询。

下面的图是一条全部为递归查询的查询链,但是实际应用并不是这种方式,而是上面所讲的递归查询和跌打查询一起使用。

DNS缓存

DNS缓存是为了改善时延并减少在因特网上到处传播DNS报文数量而诞生的。

在一个请求链中,当某DNS服务器接受一个DNS回答后,会保存该回答的记录并且缓存在本地存储器中。

例如,在上面的例子中,本地DNS服务器dns.nyu.edu接收到一个DNS服务器的回答后,后面另一个对相同主机查询到达该DNS服务器后,本地DNS就可以直接返回对应的IP地址,而不再需要查询其它DNS服务器。

值得注意的是,缓存并不是永久的,DNS服务器在一段时间后就会丢弃缓存的信息。

DNS记录和报文

DNS记录

共同实现DNS分布式数据库的所有DNS服务器都存储了资源记录(Resource Record/RR)

RR提供了主机名到IP地址的映射。

一个DNS回答报文一般包含了多个RR。

资源记录是一个包含了下列字段的4元组

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

其中,Name和Value的值取决于Type。

若Type = A。

则Name是主机名,Value是该主机名对应的IP地址,例如(relay1.bar.foo.com,145.37.93.126,A)就是一条A记录。

若Type  = NS。

则Name是一个域(如foo.com),而Value是个知道如何获得该域中IP地址的权威DNS服务器的主机名,(foo.com,dns.foo.com,NS)就是一个NS记录。

若Type = CNAME。

则Value是别名为Name的主机对应的规范主机名,(foo.com,relay1.bar.foo.com,CNAME)就是一个CNAME记录。

如果Type = MX。

则Value是一个别名为Name的邮件服务器的规范主机名,(foo.com,mail.bar.foo.com,MX)就是一条MX记录。值得注意的是,为了获得邮件服务器的规范主机名,DNS客户应当请求一条MX记录,而为了获得其它服务器的规范主机名,DNS客户应当请求CNAME记录。

DNS报文

DNS只有查询报文和回答报文。

查询报文和回答报文是一样的格式。

前12个字节是首部区域:

其中,标识符是一个16bit的数,用于标识唯一的一组报文(查询/回答)。

标志中有着若干标志,例如是“查询/回答”中的什么,查询的是权威NDS服务器还是TLD服务器等等。

剩下的四个数量字段(问题数、回答RR数、权威RR数、附加RR数)指出了在首部后的四类数据区域出现的数量。

问题区域包含着正在查询的信息,包含:

1.名字字段,正在被查询的主机名字。

2.类型字段,指出有关该名字正在被查询的问题类型,是A还是MX等等。

回答区域包含了对最初请求的名字的资源记录:

(A、NS、CNAME、MX)等等都在这里。在回答报文的回答区域中可以有很多条RR,因为一个主机名可以有很多个IP地址。(例如亢余Web服务器)

权威区域包含了其它权威服务器的记录。

附加区域包含了其它有帮助的记录:

例如对于一个MX回答,可能该附加区域包含了一个关于MX回答中Value规范主机名的IP地址的A记录。

更多可以使用nslookup程序来直接发送查询DNS报文。

在DNS中插入记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/160740.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1347. 制造字母异位词的最小步骤数 (中等,Counter)

闲来无事,今天多做一题 条件很宽,可以任意替换,且排列相同也可以所以只要统计每个字母在 s 中比在 t 中多出现的次数之和即可 class Solution:def minSteps(self, s: str, t: str) -> int:n [0] * 26for i in s:n[ord(i) - ord(a)] 1f…

2023亿发智能数字化解决方案供应商,贵州一体化企业信息管理系统

企业数字化服务的解决方案是指运用数字技术对企业运营进行全方位的数字化升级和优化,提供以数字化服务为核 心的全面解决方案,解决企业在数字化转型过程中面临的技术和业务难题。 数字化服务解决方案的功能 在数字化时代的背景下,贵州企业的…

内网和热点同时连接使用配置

解决如标题问题 查看当前永久路由信息 route print截图保存(重要) 截图保存(重要)查出来的永久路由,以防配置不成功时回退,回退方法就是下面的“添加永久路由” 删除当前的路由 0.0.0.0 是上面查出的网络地址 route delete 0.0.0.0内网IP信息 添加永久…

Pytorch:cat、stack、squeeze、unsqueeze的用法

Pytorch:cat、stack、squeeze、unsqueeze的用法 torch.cat 在指定原有维度上链接传入的张量,所有传入的张量都必须是相同形状 torch.cat(tensors, dim0, *, outNone) → Tensor tensor:相同形状的tensor dim:链接张量的维度,不能超过传入张…

讲解嵌入式软件中超时机制设计

软件超时机制 1、背景 在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行相关程序处理,下面介绍两种超时(或定时)的程序设计方案。 2、方案…

Python面向对象编程

Python面向对象 1. 面向对象2. 创建简单类3. 属性4. 魔法方法5. 继承 1. 面向对象 面向对象编程 OOP:(Object-Oriented Programming)是一种将数据和相关操作封装在一起的编程方式 类:对一系列具有相同特征和行为的食物的统称&…

Python —— hou.Node class

Houdini内所有节点(Object、SOP、COP等)的基类,该类的实例对应houdini内的节点; 每个节点都有一个唯一的路径(定义其在节点树内的位置);节点路径层次结构类似于文件系统中的文件和文件夹的层次结…

【Linux】Linux常用指令

ls指令(对属性操作,查看文件相关属性) 用法:ls[选项][目录或文件] 功能:1. 对于目录,该命令列出该目录下的所有子目录和文件。2. 对于文件,将列出文件名以及其他信息。 常用选项: …

WPF 用户控件依赖注入赋值

前言 我一直想组件化得去开发WPF&#xff0c;因为我觉得将复杂问题简单化是最好的 如何组件化开发 主窗口引用 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.…

爱胜品YPS-1133DN系列打印机与奔图P3301DN打印机耗材更换的简单对比说明

速印机&#xff08;理想、荣大等&#xff09;、复印机&#xff08;夏普、理光、佳能、震旦等全系列&#xff09;、打印机、扫描仪、传真机、多媒体教学一体机、交互式电子白板、报警器材、监控、监考设备、特种安防设备维护及维修。吴中函 某用户的爱胜品YPS-1133DN Pro、爱胜品…

Hadoop3教程(十一):MapReduce的详细工作流程

文章目录 &#xff08;94&#xff09;MR工作流程Map阶段Reduce阶段 参考文献 &#xff08;94&#xff09;MR工作流程 本小节将展示一下整个MapReduce的全工作流程。 Map阶段 首先是Map阶段&#xff1a; 首先&#xff0c;我们有一个待处理文本文件的集合&#xff1b; 客户端…

微信聊天记录真的可以被监听吗?

你们好&#xff0c;我的网工朋友 不少朋友都和身边的人交流过同一个话题&#xff1a; “自己的微信聊天记录到底能不能被公司窃取查看&#xff1f;” “可以的&#xff0c;在哪个群&#xff0c;和谁聊了什么&#xff0c;看的一清二楚&#xff0c;还可以搜索……” 这类型的…

Flow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略

Flow深入浅出系列之在ViewModels中使用Kotlin FlowsFlow深入浅出系列之更聪明的分享 Kotlin FlowsFlow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略 Flow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略 讨论在Android应用程序中使用Kotlin Flow高效加载…

springBoot复杂对象表示和lombok的使用

springBoot复杂对象表示 前言简单案例lombok的使用通过properties文件进行绑定在yaml文件中使用 前言 对象&#xff1a;键值对的集合&#xff0c;如&#xff1a;映射&#xff08;map)/哈希&#xff08;hash)/字典&#xff08;dictionary&#xff09; 数组&#xff1a;一组按次…

leetcode做题笔记174. 地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

Java应用性能问题诊断技巧

作者&#xff1a;张彦东 参考&#xff1a;https://developer.aliyun.com/ebook/450?spma2c6h.20345107.ebook-index.28.6eb21f54J7SUYc 文章目录 &#xff08;一&#xff09;内存1.内存2.内存-JMX3.内存-Jmap4.内存-结合代码确认问题 &#xff08;二&#xff09;CPU1.CPU-JMX或…

史上最短的“牛熊转换”:BTC价格昨夜起飞,但却来自一条假新闻!

昨夜&#xff0c;加密市场经历了史上最短的一次“牛熊转换”。 在短短10分钟内&#xff0c;BTC快速走出多根阳线&#xff0c;价格直接起飞&#xff0c;连续突破28000美元、29000美元、30000美元的整数关口&#xff0c;最高触及30535.8美元&#xff0c;涨幅近10%&#xff08;数据…

Compose Canvas基础(2) 图形转换

Compose Canvas基础&#xff08;2&#xff09;图形转换 前言平移 translate缩放 scale旋转 rotate自定义绘图区域及绘制内边距inset组合转换 withTransform完整代码总结 上一篇文章 Compose Canvas基础&#xff08;1&#xff09; drawxxx方法 前言 阅读本文需要一定compose基…

mysql——面试题初体验

查询环境 1、student&#xff08;学生表&#xff09; 2、课程表(course) 3、教师表(teacher) 4、成绩表(score) 问题 (1) 查询所有学生的学号、姓名、选课数、总成绩 mysql> select s.s_id as 学号,s.s_name as 姓名 from student as s; ---------------- | 学号 | 姓名…

E138: Can‘t write viminfo file

E138: Can’t write viminfo file /home/xxx/.viminfo! 原因 进入/home/xxx/目录下&#xff0c;用ls -a你会发现有很多.viminfa.tmp - .viminfz.tmp 这种的临时文件&#xff0c;这是因为使用vim编辑器时&#xff0c;如果编辑器没有正常退出就会生成一个暂存文件&#xff0c;…