DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址


DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址

文章插图
DNS是域名系统的英文缩写
一、什么是DNS?
【DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址】DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作 。你可以把它想象成一本巨大的电话簿 。
举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69 。
DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示:
DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址

文章插图
 
二、DNS域名空间结构
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名 。DNS数据库中的名称形成一个分层树状结构称为域命名空间 。
DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址

文章插图
DNS域名空间结构
根域:DNS域名使用中规定由尾部句点'.'来指定名称位于根或者更高层次的域层次结构 。
顶级域:用来指示某个国家、地区或者组织 。采用三个字符,如com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事政府机构等等 。
二级域:个人或者组织在Internet使用的注册名称 。采用两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等 。
主机:主机名处于域名空间结构中的最底层,主机名和域名结合构成FQDN,主机名是FQDN最左端的部分 。
DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址

文章插图
 
三、DNS的获取流程
DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址 。
具体过程如下:
①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了 。
②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/,并将这个主机名传送给DNS应用的客户端 。
③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作) 。
④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址 。
⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接 。
四、DNS服务的体系架构
DNS服务的作用:把域名解析为IP地址,将IP地址解析为域名 。
假设运行在用户主机上的某些应用程序(如Webl浏览器或者邮件阅读器)需要将主机名转换为IP地址 。这些应用程序将调用DNS的客户机端,并指明需要被转换的主机名 。(在很多基于UNIX的机器上,应用程序为了执行这种转换需要调用函数gethostbyname()) 。用户主机的DNS客户端接收到后,向网络中发送一个DNS查询报文 。所有DNS请求和回答报文使用的UDP数据报经过端口53发送(至于为什么使用UDP,请参看为什么域名根服务器只能有13台呢? - 郭无心的回答)经过若干ms到若干s的延时后,用户主机上的DNS客户端接收到一个提供所希望映射的DNS回答报文 。这个查询结果则被传递到调用DNS的应用程序 。因此,从用户主机上调用应用程序的角度看,DNS是一个提供简单、直接的转换服务的黑盒子 。但事实上,实现这个服务的黑盒子非常复杂,它由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成 。
DNS即域名系统怎样工作?看这位“翻译官”如何转换域名和IP地址

文章插图
 
五、DNS为什么不采用单点的集中式的设计方式,而是使用分布式集群的工作方式?
DNS的一种简单的设计模式就是在因特网上只使用一个DNS服务器,该服务器包含所有的映射,在这种集中式的设计中,客户机直接将所有查询请求发往单一的DNS服务器,同时该DNS服务器直接对所有查询客户机做出响应 。尽管这种设计方式非常诱人,但它不适用当前的互联网 。因为当今的因特网有着数量巨大并且在持续增长的主机,这种集中式设计会有单点故障,通信容量(上亿台主机发送的查询DNS报文请求,包括但不限于所有的HTTP请求,电子邮件报文服务器,TCP长连接服务),远距离的时间延迟(澳大利亚到纽约的举例),维护开销大(因为所有的主机名-IP映射都要在一个服务站点更新)等问题 。


推荐阅读