计算机网络学习笔记(2) - 应用层 - DNS协议


一、DNS基础概念

DNS(Domain Name System)协议是一种将主机名转换为IP地址的目录服务,它存在的原因是在不同的条件下,标识方法的适用性可能会发生变化,例如在一般人通常喜欢用名字标识其他人,而在某些机构中用身份证号来标识其他人可能更加合适。在计算机网络中,主机名(例如 www.xxx.com)相当于前述例子中的人名,而IP地址则相当于身份证号。区别在于,通常人名可能会重复,而主机名一般不会重复。此外,主机名无法提供主机在因特网中的位置,且不是定长的,路由器较难处理。因此,通过IP地址来标识主机
DNS的基础设施是由分层的DNS服务器实现的分布式数据库,它是一种应用层协议,使得主机可以查询分布式数据库,DNS运行在UDP之上

二、DNS的作用

1.主机名到IP转换

DNS通常被其他应用层协议使用,例如HTTP协议。当一台用户主机试图通过服务器主机名(例如 www.xxx.com)访问某服务器,会首先通过DNS服务器获得服务器主机名对应的IP地址,然后向位于该IP地址的服务器主机发起连接。类似地,“DNS缓存服务器”的存在可以使得用户主机可以更快地实现上述转换,来减少DNS网络的负载和DNS的平均时延。

2.主机别名

对于一些主机可能存在多个主机名,类似有的人也存在多个别名。

3.邮件服务器别名

类似地,邮件服务器也可能存在别名,例如一个较为复杂的规范主机名和一个简单好记的邮件服务器别名。

4.负载分配

通常有些繁忙的站点分布在多台冗余服务器之上,每台服务器在不同的端系统上,有着不同的IP地址。DNS可以用于在这些冗余服务器之间进行负载分配。对这种站点的服务器来说,一个规范主机名可能会对应一个IP地址集合。当用户试图访问站点时,可以通过某种策略,例如在DNS响应中循环IP地址集合中的主机地址次序,实现对这些冗余服务器的负载分配。

三、DNS工作机理

1.分布式、层次结构

DNS的基础设施包括大量的DNS服务器,以分布式、层次结构存在于全世界。不存在1台DNS服务器记录了因特网上所有主机的映射,当前因特网的体量使得这不可能存在。大致来说,存在三种DNS服务器(层次结构由上层到下层形成树状结构):

  • 根DNS服务器,世界范围内存在超过千台DNS根服务器实体,本质为13台DNS根服务器的的副本。根服务器提供顶级域服务器的IP地址。
  • 顶级域(Top-Level Domain, TLD)DNS服务器,每个顶级域(例如com,net)都有TLD服务器或集群。
  • 权威DNS服务器,每个组织机构通常有自己的权威DNS服务器,用来提供公共可访问的DNS记录。

严格来说,还存在着一种本地DNS服务器,通常本地DNS服务器“邻近”本主机,它起着代理的作用。当主机发出DNS请求时,首先发往本地DNS服务器,然后由本地DNS服务器将请求转发到DNS服务器层次结构中。
在DNS服务器的交互中,上层域需要知道:1、子域的名称,子域的权威DNS服务器的名字;2、子域的权威DNS的IP。
此外,关于域有以下内容:

  • 域的域名:可以用于表示一个域
  • 主机的域名:一个域上的一个主机

一个域管理其下子域,创建一个新的域,必须征得它所属域的同意。域与物理网络无关,域遵从组织界限,而不是物理网络。一个域的主机可以不在一个网络,一个网络的主机可以不在一个域。域的划分是逻辑的,而不是物理的
通常,DNS服务器之间的交互可以是迭代的也可以是递归的,实践中,从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。

2.DNS缓存

同样为一种空间换时间的策略,DNS缓存通过存储DNS回应(包括主机名/IP地址对)缓存在本地存储器中,当存在另外的对相同主机名的DNS请求到达时,那么该本地存储器对应的DNS服务器就可以提供所请求的IP地址,即使它不是权威服务器。显然,这种策略可以降低时延,并降低DNS网络的负载,DNS中广泛采用缓存技术。此外,由于主机名和IP地址的对应关系可能发生变化,通常在一定时间后清除缓存的信息。

四、安全性和一些误解

DNS作为网络一种重要的基础设施,对于各种应用,例如Web,电子邮件等服务,如果DNS瘫痪,那么它们都无法正常工作。通常针对DNS服务的攻击有分布式拒绝服务(DDoS)带宽泛洪攻击、中间人攻击和投毒攻击等。
通常,一些非专业人士对于根服务器的认知,尤其是所谓的13台根服务器,认为没有一台在国内是存在巨大风险的。这种认知的本质原因在于错误的觉得因特网的流量全部都要经过国外的根服务器。事实上,它们是DNS(Domain Name System)根服务器,主要经过的是域名/IP转换请求及相关流量,而且DNS缓存服务器和国内其它DNS根服务器副本的存在,使得国内DNS服务对根服务器的依赖性没有那么严重,安全性是较为可靠的

如有错漏之处,敬请指正!

  • 43
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《Python学习笔记》是由皮大庆编写的一本关于Python语言学习的教材。在这本书中,作者详细介绍了Python语言的基础知识、语法规则以及常用的编程技巧。 首先,作者简要介绍了Python语言的特点和优势。他提到,Python是一种易于学习和使用的编程语言,受到了广大程序员的喜爱。Python具有简洁、清晰的语法结构,使得代码可读性极高,同时也提供了丰富的库和模块,能够快速实现各种功能。 接着,作者详细讲解了Python的基本语法。他从变量、数据类型、运算符等基础知识开始,逐步介绍了条件语句、循环控制、函数、模块等高级概念。同时,作者通过大量的示例代码和实践案例,帮助读者加深对Python编程的理解和应用。 在书中,作者还特别强调了编写规范和良好的编程习惯。他从命名规范、注释风格、代码缩进等方面指导读者如何写出清晰、可读性强的Python代码。作者认为,良好的编程习惯对于提高代码质量和提高工作效率非常重要。 此外,作者还介绍了Python的常用库和模块。他提到了一些常用的库,如Numpy、Pandas、Matplotlib等。这些库在数据处理、科学计算、可视化等领域有广泛的应用,帮助读者更好地解决实际问题。 总的来说,《Python学习笔记》是一本非常实用和全面的Python学习教材。通过学习这本书,读者可以系统地学习和掌握Python编程的基础知识和高级应用技巧,为以后的编程学习和工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值