速读原著-TCP/IP(DNS 基础)

2023-11-01 09:50
文章标签 基础 ip tcp dns 速读 原著

本文主要是介绍速读原著-TCP/IP(DNS 基础),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第14章 DNS:域名系统

14.2 DNS 基础

D N S的名字空间和U n i x的文件系统相似,也具有层次结构。图 14-1 显示了这种层次的组织形式。

每个结点(图 1 4 - 1中的圆圈)有一个至多 6 3个字符长的标识。这颗树的树根是没有任何标识的特殊结点。命名标识中一律不区分大写和小写。命名树上任何一个结点的域名就是将从该结点到最高层的域名串连起来,中间使用一个点“.”分隔这些域名(注意这和 U n i x文件系统路径的形成不同,文件路径是由树根依次向下的形成的)。域名树中的每个结点必须有一个唯一的域名,但域名树中的不同结点可使用相同的标识。

以点“.”结尾的域名称为绝对域名或完全合格的域名 F Q D N(Full Qualified DomainN a m e),例如s u n . t u c . n o a o . e d u .。如果一个域名不以点结尾,则认为该域名是不完全的。如何使域名完整依赖于使用的 D N S软件。如果不完整的域名由两个或两个以上的标号组成,则认为它是完整的;或者在该域名的右边加入一个局部后缀。例如域名 s u n通过加上局部后缀. t u c . n o a o . e d u .成为完整的。
在这里插入图片描述
顶级域名被分为三个部分:

  1. a r p a是一个用作地址到名字转换的特殊域(我们将在 1 4 . 5节介绍)。
  2. 7个3字符长的普通域。有些书也将这些域称为组织域。
  3. 所有2字符长的域均是基于 I S O 3 1 6 6中定义的国家代码,这些域被称为国家域,或地理域。

图1 4 - 2列出了7个普通域的正式划分。在D N S中,通常认为 3字符长的普通域仅用于美国的组织机构, 2字符长的国家域则用
于每个国家,但情况并不总是这样。许多非美国的组织机构仍然使用普通域,而一些美国的组织机构也使用 . u s的国家域( RFC 1480[Cooper and Postel 1993] 详细描述了. u s域)。
在这里插入图片描述
普通域中只有. g o v和. m i l域局限于美国。许多国家将它们的二级域组织成类似于普通域的结构:例如, . a c . u k是英国研究机构的二级域名,. c o . u k则是英国商业机构的二级域名。D N S的一个没在如图 1 4 - 1中表示出来的重要特征是 D N S中域名的授权。没有哪个机构来管理域名树中的每个标识,相反,只有一个机构,即网络信息中心 N I C负责分配顶级域和委派其他指定地区域的授权机构。

一个独立管理的 D N S子树称为一个区域 ( z o n e )。一个常见的区域是一个二级域,如n o a o . e d u。许多二级域将它们的区域划分成更小的区域。例如,大学可能根据不同的系来划分区域,公司可能根据不同的部门来划分区域。

如果你熟悉U n i x的文件系统,会注意到D N S树中区域的划分同一个逻辑U n i x文件系统到物理磁盘分区的划分很相似。正如无法确定图 1 4 - 1中区域的具体位置,我们也不知道一个Unix文件系统中的目录位于哪个磁盘分区。

一旦一个区域的授权机构被委派后,由它负责向该区域提供多个名字服务器。当一个新系统加入到一个区域中时,该区域的 D N S管理者为该新系统申请一个域名和一个 I P地址,并将它们加到名字服务器的数据库中。这就是授权机构存在的必要性。例如,在一个小规模的大学,一个人就能完成每次新系统的加入。但对一个规模较大的大学来说,这一工作必须被专门委派的机构(可能是系)来完成,因为一个人已无法维持这一工作。

一个名字服务器负责一个或多个区域。一个区域的管理者必须为该区域提供一个主名字服务器和至少一个辅助名字服务器。主、辅名字服务器必须是独立和冗余的,以便当某个名字服务器发生故障时不会影响该区域的名字服务。

主、辅名字服务器的主要区别在于主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器则从主服务器调入所有信息。我们将辅名字服务器从主服务器调入信息称为区域传送。

当一个新主机加入一个区域时,区域管理者将适当的信息(最少包括名字和 I P地址)加入到运行在主名字服务器上的一个磁盘文件中,然后通知主名字服务器重新调入它的配置文件。辅名字服务器定时(通常是每隔 3小时)向主名字服务器询问是否有新数据。如果有新数据,则通过区域传送方式获得新数据。

当一个名字服务器没有请求的信息时,它将如何处理?它必须与其他的名字服务器联系。(这正是D N S的分布特性)。然而,并不是每个名字服务器都知道如何同其他名字服务器联系。相反,每个名字服务器必须知道如何同根的名字服务器联系。 1 9 9 3年4月时有8个根名字服务器,所有的主名字服务器都必须知道根服务器的 I P地址(这些 I P地址在主名字服务器的配置文件中,主服务器必须知道根服务器的 I P地址,而不是它们的域名)。根服务器则知道所有二级域中的每个授权名字服务器的名字和位置(即 I P地址)。这意味着这样一个反复的过程:正在处理请求的名字服务器与根服务器联系,根服务器告诉它与另一个名字服务器联系。在本章的后面我们将通过一些例子来详细了解这一过程。

你可以通过匿名的F T P获取当前的根服务器清单。具体是从f t p . r s . i n t e r n i c . n e t或nic.ddn.mil 获取文件n e t i n f o / r o o t - s e r v e r s . t x t。

D N S的一个基本特性是使用超高速缓存。即当一个名字服务器收到有关映射的信息(主机名字到 I P地址)时,它会将该信息存放在高速缓存中。这样若以后遇到相同的映射请求,就能直接使用缓存中的结果而无需通过其他服务器查询。 1 4 . 7节显示了一个使用高速缓存的例子。

这篇关于速读原著-TCP/IP(DNS 基础)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322156

相关文章

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停