DNS协议

本文详细介绍了DNS(域名系统)的基本概念、为何需要、域名的层级结构、工作原理,包括DNS服务器配置、查询流程和常见记录类型。还涵盖了相关命令如dig、host和whois的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 什么是DNS

DNS是Domain Name Server的缩写,所有的网络通信(基于TCP/UDP)最后都需要基于IP来完成,DNS的作用就是域名转换为具体的IP。

2. 为什么需要

在互联网的初期,对外提供的服务极少,人们直接通过IP来相互访问。显然要记住毫无规律的IP地址并不容易,于是人们想到了通过文件,描述IP对应的内容,就像我们现在看到/etc/hosts文件:

[dev@namenode2 ~]$cat /etc/hosts
10.20.38.12 apiserver5 logserver1
10.20.38.13 apiserver6 logserver2
10.20.38.49 gateway1

然而换机器、和好友共享时,我们必须手动的同步配置文件,显然还是很麻烦的,最直观的解决方案是将这份配置集中式存储,DNS的职责就是提供域名和IP关系的集中式存储,并提供查询的能力。

3. 域名的层级

我们常见的域名,比如www.baidu.com,实际全名是www.baidu.com.root,这里的.root就是根域名,因为根域名只有一个,所以.root经常被省略。
在这里插入图片描述
每个层级都允许指定自己的下一级的域名服务(Name Service,简称NS)。根域名的NS是固定的,通过dig +trace我们能查看到对应的13组根域名服务器:
在这里插入图片描述

根域名的NS一般固化在域名服务中,域名服务中固定的提供一组IP,通过访问这组IP获取根域名的NS域名/IP地址。这一组根服务器基本是被米国垄断的。

根域名的NS服务器提供了下层域名解析服务,所以我们可以向根域名NS申请顶级域名(如.com),当然这个是很费钱的(据说几十万美刀)。

获得顶级域名后,我可以配置自己的NS服务器,再向外出售二级域名。这确实是个低成本高收益的买卖,就这一点域名服务商/炒域名的就赚的盆满钵满。

4. 工作原理

4.1 DNS服务器配置

每一个连接到Internet的机器,或主动或被动的,都需要设置自己的IP地址和DNS服务器,比如我机器上的TCP/IP设置是这样的。
在这里插入图片描述

这里的DNS服务器就是用来完成域名到IP的转换过程的。当我们在浏览器地址栏输入www.baidu.com之后,浏览器会通过系统访问这里指定(自动获得)的DNS服务器地址,获取指定域名对应的IP。Linux下也有类似的配置,DNS服务器的IP地址保存在/etc/resolv.conf文件下,里边的内容大概是长这样的。

[dev@namenode2 ~]$cat /etc/resolv.conf
options attempts:1 timeout:5 rotate
nameserver  10.20.60.58
nameserver  10.20.60.59

这里的DNS服务器地址是两个内网IP,说明公司内部搭建了自己的DNS服务器,通过开源软件BIND很容易就能搭建自己的DNS服务器。

如果是个人用户,一般会用ISP服务商或者大厂的IP,比如谷歌的8.8.8.8、Level 3的4.2.2.2

4.2 处理流程

  • 本机通过DNS服务器查询域名对应的IP,DNS服务器查询根域名对应的NS服务
  • 通过根域名NS服务器获取顶级域名的NS服务,例子里选的是d.root-servers.net.
  • 通过顶级域名NS服务获取二级域名的NS服务,例子里选的是a.gtld-server.net.
  • 通过二级域名NS服务获取三级域名的NS服务,例子里选的是ns4.baidu.com.
    在这里插入图片描述

4.3 DNS记录类型

记录类型说明
AAddress,地址记录,返回域名指向的IP
NSName Server, 域名服务器记录,对应域名服务器地址,只能设置为域名,不能设为IP
MXMail eXchange,邮件记录,返回电子邮件服务器IP
CNAMECanonical Name,规范名记录,返回另一域名,做为别名,别名可以独立修改对应A记录,自动对CNAME生效,是一种解耦
PTRPointer Record,逆向查询记录,用于从IP反查域名

一般为了安全,NS记录至少提供2条,A记录MX记录可以有多条,需要保证对应IP的服务高可用,如虚IP。CNAME记录常用的场景是CDN接入,将我们的静态资源域名添加一条CDN厂商域名的CNAME记录。

5. 相关命令

5.1 dig

4.2章节,我们通过dig +trace查看了DNS将域名转换为IP的流程。dig命令默认返回6个部分内容:
在这里插入图片描述

  1. 查询参数和统计信息
  2. 请求内容,查询www.baidu.comA记录
  3. DNS服务器响应,返回2个A记录,数字272是TTL(Time To Live),单位,表示缓存时间,272秒内不需要重新查询,1个CNAME记录
  4. 表示www.baidu.com对应的NS记录,哪些服务器提供a.shifen.com.对应的IP
  5. NS记录对应的IP地址
  6. 本次请求的统计信息

5.2 dig +trace

通过dig +trace能完整的查看DNS解析的过程,前面已经详细的解释过每一条记录,这里就不再赘述。
在这里插入图片描述

5.3 host

host命令可以反查IP对应的域名,反查是基于DNS的PTR记录的,很多域名并没有设置PTR记录,经常我们通过dig命令解析域名对应的IP,再通过IP反查对应的域名却不成功,这是因为这个域名没有设置PTR记录。功能等同于dig -x
在这里插入图片描述

5.4 whois

通过whois查询域名注册时的信息,实际中并没有多大作用。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值