域名解析协议
一、DNS简述
DNS协议是一种应用层协议,用于将域名转换为对应的IP地址,使得客户端可以通过域名来访问Internet上的各种资源
DNS的基础设施是由分层的DNS服务器实现的分布式数据库,它运行在UDP之上,通常使用端口号53
DNS报文:
查询报文和响应报文,无论是查询报文还是响应报文,都有12个字节的头和查询问题
报文头部包含标识、标志、问题计数、回答资源记录数、权威名称服务器计数以及附加资源记录数等字段
二、请求流程
1、浏览器中输入一个域名(如www.example.com),浏览器作为客户端,需要将这个域名解析为IP地址才能访问对应的服务器
2、浏览器会向本地DNS服务器发送一个域名解析请求,这个请求通常使用UDP协议,因为UDP协议速度快,只需要一个请求和一个应答
3、本地DNS服务器收到请求后,首先会检查自己的缓存中是否已经有这个域名的解析结果
缓存中有结果,本地DNS服务器会直接将IP地址返回给客户端(浏览器)
缓存中没有结果,本地DNS服务器会进行递归或迭代查询,向其他DNS服务器发送查询请求
4、查询到ip后,返回给客户端(浏览器),客户端使用这个IP地址与www.example.com的服务器建立网络连接
相关配置文件
/etc/resolv.conf这是Linux系统中与DNS设置相关的配置文件
在该文件中添加nameserver来指定DNS服务器地址
如:nameserver 1.1.1.1
三、一些命令
# 查询DNS服务器以获取域名相关的信息。
# 查询http://www.example.com的A记录和NS记录。
dig www.example.com A
dig www.example.com NS# 用于查询域名的IP地址或反向解析IP地址为域名
nslookup www.example.com# 用于查询域名的IP地址或反向解析IP地址为域名
host www.example.com
四、域名记录类型
1、A记录:A记录是最基本的DNS记录类型,用于将域名指向一个IPv4地址。
example.com. IN A 192.168.0.165
表示将example.com解析到192.168.0.1这个IPv4地址上
2. AAAA记录:AAAA记录与A记录类似,但用于将域名指向一个IPv6地址。
example.com. IN AAAA 8fe0::8f61:ac8:30cd:a16e
表示将example.com解析到对应的IPv6地址上
3. CNAME记录:CNAME记录用于将一个域名指向另一个域名,即别名记录。适用于需要将多个域名指向同一个域名的情况,如做CDN、企业邮箱、全局流量管理等。
example.com. IN CNAME my.example.com.
表示将example.com解析到my.example.com这个别名上
4. MX记录:MX记录用于指定邮件服务器的地址,用于电子邮件的路由
example.com. IN MX 10 mail.example.com.,表示将example.com的邮件服务指向mail.example.com这个邮件服务器,优先级为10
5. NS记录:NS记录用于指定域名所使用的权威域名服务器,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录
example.com. IN NS ns1.domain.com.
表示example.com的域名解析由ns1.domain.com这个DNS服务器负责