目录
DNS概念
DNS域名系统(Domain Name System缩写DNS,Domain,Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS系统的作用
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名
DNS使用的协议及端口号
DNS的默认端口号为53, DNS端口分为TCP和UDP
1、TCP是用来做区域传送,多用于主从同步
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNSs数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。
2、UDP是用来做DNS解析的
域名:通常由一个完全合格域名(FQDN)标识。FQDN全称 Fully Qualified Domain Name,它能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用"."分隔,对于DNS域google来说,其完全正式域名(FQDN)为google.com。
例如,google为 com域的子域,其表示方法为google.com,而 www 为 google域中的子域,可以使用wwrw .google.com.丧示。
注意:通常,FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z2和减号(-)。点号(.)只允许在域名标志之间(例如"google.com")或者FQDN的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。即全域名:同时带有主机名和域名的名称FQDN = Hostname + DomainName
如:www .baidu . com.
注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上:www.abc.com=w .abc.com.
域名体系结构
根域:位于树状结构最顶层,用"."表示
顶级域:一般代表一种类型的组织机构或国家地区;
如.net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育结构)、.gov(政府门)、.cn(中国国家域名)
二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
主机:主机位于域名空间最下层,就是一台具体的计算机
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
附:
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是Google公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
223.5.5.5和223.6.6.6:阿里云DNS
两种查询方式
递归查询
递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
总的一句话,就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。
迭代查询
DNS服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台 DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。
总的一句话,客户机的请求需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反。
递归与查询的区别
从递归和迭代查询可以看出:
①客户端-本地DNS服务器:这部分属于递归查询
②本地DNS服务端—外网:这部分属于迭代查询
递归查询时,返回的结果只有两种:查询成功或查询失败
迭代查询又称作重指引,返回的是最佳的查询点或者主机地址。
迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
授权回答:向dns服务器查询一个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。
客户端访问外网的DNS解析顺序
第一部分
PC机访问www.baidu.com
本地解析顺序
-》缓存
-》/etc/hosts
-》/etc/resolv.conf
nameserver 8.8.8.8
找到“本地DNS----8.8.8.8”
第二部分
DNS解析系统(有多种类型的DNS服务器构成)
DNS域名服务器系统是按照域名的层级关系,来对应解析的根域、顶级域、二级域、三级域/子域
根域----》根域名服务器帮助解析“.”
顶级域----》顶级域名服务器.cn .us .hk
二级域----》“权威域名服务器” .com .cn
三级域/子域----》“权威域名服务器” baidu.com.cn
主机名----》“权威域名服务器”www mail ftp
DNS系统包含的映射关系如下:
ftp.baidu.com.cn. 192.168.226.128
www.baidu.com.cn 192.168.226.129
www.lxx.com.cn 192.168.226.130
www.kiva.edu.cn 192.168.226.131
第三部分(对应上图中的箭头序号)
1.找根域名服务器 “.”
2.找顶级域名服务器 .cn.
3.找二级域名服务器 .com.cn.\
4.找三级域名服务器 .baidu.com.cn.
5.找主机名 www.baidu.com.cn.
6.确认了解析关系:192.168.226.129
7.返回给本地DNS服务器
8.本地DNS服务器返回给客户端
9.客户端访问baidu的同时,将解析关系缓存在本地
DNS服务器类型
1.主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名—>IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
2.从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名–>IP地址记录来源于主域名服务器
- 需要从域名服务器自动同步区域地址数据库
从域名服务器:当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
3.缓存域名服务器
- 也称为DNS告诉缓存服务器
- 通过向其他域名服务器查询获得域名—>IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
缓存域名服务器:只提供域名解析结果的缓存功能 目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
4.转发域名服务器
转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
访问百度的流程(重点)
1、DNS解析(递归解析方式)
①首先查看本地缓存是否有【域名-IP地址】映射关系,有的话直接使用,没有进行下一步。
②尝试解析/etc/hosts解析文件(DNS解析,本地配置),有的话直接用,没有进行下一步。
③通过/etc/resolv.conf配置文件中指定的DNS服务器(代理服务器)的位置,请求解析www.baidu.com 域名和IP的映射关系。
2、开始进行DNS的迭代解析
①首先DNS服务器接收到请求后,向根域服务器请求解析
②根域服务器返回给DNS服务器后,向顶级域服务器请求解析
③顶级域服务器返回个DNS服务器后,再依次向二级域、子域进行请求解析
④直到将www.baidu.com 这个域名全部解析完成,找到对应的IP映射关系,然后返回给DNS服务器
3、DNS服务器返回给客户端(用户端),此时用户端接收到了www.baidu.com域名与IP的映射关系
①保存在本地的缓存中
②根据请求的协议类型,向www.baidu.com 服务器进行连接(三次握手建立连接)
4、建立连接通道后,根据http/https协议进行传输数据