一.DNS域名系统
- 作用:将域名转换为IP地址(也可以将IP地址转化为响应的域名地址)
- DNS的功能:方便用户使用
question:TCP/IP中使用的是IP地址和端口号来确定网络上的某一台主机上的某一个程序,那为什么不用域名来直接通信呢?
Answer:IP地址是面向主机的,而域名则是面向用户的
(1)因为IP地址是固定长度,IPV4是32位,IPv6是128位,而域名是变长的,不便于计算机处理
(2)IP地址对于用户来说不方便记忆,而域名便于用户使用
二.DNS报文格式
-
1.DNS查询和响应的一般格式
这个报文由1 2字节长的首部和4个长度可变的字段组成。 标志后的4个16 bit 字段说明最后 4个变长字段中包含的条目数。对于查询报文,问题( q u e s t i o n )数通常是 1,而其他3项则均为0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是0或非0。
-
标志段
(1)QR 是1 bit字段: 0表示查询报文, 1表示响应报文。
(2)o p c o d e是一个4 bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
(3)A A是1 bit标志,表示“授权回答 (authoritative answer)”。该名字服务器是授权于该域的。
(4)T C是1 bit字段,表示“可截断的 ( t r u n c a t e d )”。使用U D P时,它表示当应答的总长度超过5 1 2字节时,只返回前5 1 2个字节。
(5) R D是1 bit字段表示“期望递归(recursion desired)”。该比特能在一个查询中设置,并
在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如
果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的
其他名字服务器列表,这称为迭代查询。在后面的例子中,我们将看到这两种类型查询
的例子。
(6)R A是1 bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为 1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。
(7) 随后的3 bit字段必须为0
(8)r c o d e是一个4 bit的返回码字段。通常的值为 0(没有差错)和 3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。 -
DNS查询报文中的问题部分
-
DNS响应报文中的资源记录部分
三.工作原理
- 输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据
- 如果没有,就向上级域名服务器进行查找,以此类推
- 最多回溯到根域名服务器,肯定能找到这个域名的IP地址
- 域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找过程。
eg:主机点开一个域名的具体过程
- (1)主机先向本地域名服务器进行递归查询
- (2)本地域名服务器采用迭代查询,向一个根域名服务器进行查询
- (3)根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
- (4)本地域名服务器向顶级域名服务器进行查询
- (5)顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
- (6)本地域名服务器向权限服务器进行查询
- (7)权限服务器告诉本地域名服务器所查询的主机的IP地址
- (8)本地域名服务器最后把查询结果告诉主机