DNS基础知识

DNS简介

定义
域名系统DNS( Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,提供域名与IP地址之间的转换服务。
目的
网络中的每台主机都是由IP地址来标识的,用户只有获得待访问主机的IP地址才能够成功实现访问操作。对于用户来讲,记住主机的IP地址是相当困难的,因此设计了一种字符串形式的主机命名机制,这些主机名与IP地址一一对应,这就是域名系统。域名系统解决了IP地址信息不便于记忆这一问题。用户进行访问网络主机操作时,可以直接使用便于记忆的、有意义的域名,由网络中的域名解析服务器将域名解析为正确的IP地址。

给大家举个简单的例子: 你要去访问百度,直接输入http://163.177.151.110,就可以打开百度网站了,但是你发现没有,是不是很难记住这个IP地址?

那如果换成这种方式,直接输入http://www.baidu.com,也可以打开百度网站,是不是舒服多了,www叫做主机名,baidu.com叫做域名,通常我们就是按这种方式来访问相关网站。

DNS 工作原理

DNS域名解析分为静态域名解析和动态域名解析,二者可以配合使用。在解析域名时,首先采用静态域名解析(查找静态域名解析表),如果静态域名解析不成功,再采用动态域名解析。由于动态域名解析可能会花费一定的时间,且需要域名服务器的配合,因而可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
静态 DNS
静态域名解析通过静态域名解析表进行,用户手动建立域名和IP地址之间的对应关系表,将一些常用的域名放入表中。当客户端需要域名所对应的IP地址时,首先到静态域名解析表中查找指定的域名,从而获得所对应的IP地址,提高域名解析的效率。
动态 DNS
用户程序(例如Ping、 Tracert)对域名服务器( DNS Server)的访问是通过DNS客户端( DNS Client)的一个地址解析器( Resolver)完成的。

用户程序、解析器和域名服务器以及解析器上的缓存区关系如图5-1所示。

图 5-1 动态 DNS 工作原理图

其中解析器和缓存区集成在一起构成DNS Client,它的作用是接收用户程序的DNS请求,并对其做出反应。一般来说,用户程序(例如Ping、 Tracert)、缓存区和解析器是在同一台主机上,域名服务器和它们在不同的主机上。

动态 DNS 的工作过程
1. 用户使用域名访问某些应用服务时,用户程序首先向DNS客户端中的解析器发出请求。
2. 解析器收到用户程序发送的DNS请求后,首先查询本地的域名缓存。
– 本地的域名缓存中存在该域名对应的映射表项,解析器就将域名对应的IP地址返回给用户程序。
– 本地的域名缓存没有发现所要查找的映射项,解析器就向域名服务器( DNS
Server)发送查询请求。
3. 域名服务器收到查询报文后,首先判断请求的域名是否处于自己被授权管理的子域里,再根据不同的判断结果,向DNS Client发送相应的响应报文。
– 如果是在自己被授权管理的子域范围之内,服务器首先从自己的数据库中查
找域名对应的IP地址。

– 如果判断该域名不属于本域范围之内,就将请求交给上一级的域名解析服务
器处理,直到完成解析,并将解析的结果返回给DNS客户端。
4. DNS客户端收到域名服务器的响应报文后,将解析结果返回给应用程序。
动态域名解析支持缓存功能。每次动态解析成功的域名与IP地址的映射均存放在动态域名缓存区中,当下一次查询相同域名的时候,就可以直接从缓存区中读
取,不用再向域名服务器进行请求。缓存区中的映射在一段时间后会被老化删
除,以保证及时从域名服务器得到最新的内容。老化时间由域名服务器设置,
DNS客户端从协议报文中获得老化时间。

域名后缀列表功能
动态域名解析支持域名后缀列表功能,用户可以预先设置一些域名后缀,在域名解析的时候,用户只需要输入域名的部分字段,系统会自动将输入的域名加上不同的后缀
进行解析。举例说明,用户想查询域名huawei.com,那么可以先在后缀列表中配置com,然后输入huawei进行查询,系统会自动将输入的域名与后缀连接成huawei.com进行查询。
使用域名后缀的时候,根据用户输入域名方式的不同,查询方式分成以下几种情况:
● 如果用户输入的域名中没有“ .”,比如huawei,系统认为这是一个主机名,会首
先加上域名后缀进行查询,如果所有加后缀的域名查询都失败,将使用最初输入
的域名(如huawei)进行查询。
● 如果用户输入的域名中间有“ .”,比如www.huawei,系统直接用它进行查询,如果查询失败,再依次加上各个域名后缀进行查询。
● 如果用户输入的域名最后有“ .”,比如huawei.com.,表示不需要进行域名后缀添加,系统直接用输入的域名进行查询,不论成功与否都直接返回。如果用户输入的字符中最后一个字符为“ .”,就只根据用户输入的字符进行查找,而不会去匹配用户预先设置的域名后缀,因此最后这个“ .”,也被称为查询终止符。带有查询终止符的域名,称为绝对域名或完全合格域名FQDN( Full Qualified Domain Name)。

DNS Proxy和Relay

DNS代理/中继用于Client与DNS服务器之间转发DNS请求和应答。 DNS client发送DNS请求报文(假设:请求www.baidu.com对应的IP)到DNS代理/中继,代理/中继再转发到DNS服务器,并将DNS服务器的应答报文(假设:www.baidu.com解析的IP为163.177.151.110)转发给DNS client,从而实现域名解析。

 

说明:DNS代理和中继的功能是一样的,都是转发请求和应答报文,区别在于代理可以查询本地缓存域名与IP对应表,而中继则是直接转发的。

报文解析

http://c.biancheng.net/view/6457.html

本文出自:https://www.jianshu.com/p/cffd7d99ce84