DNS(Domain Name System,域名系统),是一种应用层协议, 基于C/S结构,即服务器端和客户端。对于服务器来说,端口同时用到了tcp的53和udp的53,客户端端口一般是随机的。
功能
在ip地址和域名之间建立映射关系,在用户访问时,可以解析出ip地址,以便进行通信。 同样在本地的hosts文件中也有一份ip和主机名的映射清单。
linux 客户端:
[root@centos7 ~ ]#cat /etc/hos我sts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
windows客户端:
路径:%WINDIR%/system32/drivers/etc/hosts
DNS域名
对于我们经常访问的网站如www.baidu.com有一个专业的名称叫FQDN,即全称域名,而我们经常将它称为域名是不准确的。FQDN由两部分组成:主机名(或别名)+域名,由从左到右的第一个点进行分割,前面代表的是一台主机,后面代表的是一个组织的名称,而这个组织的名称又由点进行分级。
事实上,在www.baidu.com的后面是有个点的,只不过大部分情况下省略不写。由下往上分级为:
. 根域
com 一级域名或顶级域
baidu 二级域
www 主机名
根域
根(root)域就是".",由internet名称注册授权机构进行管理;
顶级域
同样由internet名称注册授权机构进行管理;有两种类型:
- 组织域:三个字符
顶级域 | 说明 |
---|---|
gov | 政府部门 |
com | 商业部门 |
edu | 教育部门 |
org | 非盈利性组织 |
net | 网络服务机构 |
mil | 军事部门 |
- 国家或地区顶级域
国家顶级域 | 说明 |
---|---|
cn | 中国 |
tw | 中国台湾 |
uk | 英国 |
二级域
二级域是注册到个人、组织或公司的名称。
二级域下面还可以有三级域、四级域等,最多127级域名,但是一般不超过5级。
主机名
代表具体的一台主机,和域名结合成FQDN————全称域名。
DNS工作原理
以用户访问www.baidu.com为例
步骤1:客户端用户在浏览器中输入www.biadu.com后回车,系统首先会查找本地的DNS缓存或者hosts文件信息,确认是否存在www.baidu.com域名对应的ip解析记录,如果有就直接获取到ip地址,然后去访问这个ip地址对应的服务器;
步骤2:如果客户端 本地的DNS缓存或者hosts文件中没有www.baidu.com域名对应的解析记录,系统会将解析请求发送给客户端本地设置的DNS服务器地址,一般称之为local DNS(LDNS),同样,如果LDNS服务器本地缓存有对应的解析记录,就会直接返回ip地址给客户端,否则,LDNS继续请求其他的DNS服务器;
步骤3:LDNS服务器向根服务器开始请求对www.baidu.com的解析,根DNS发现没有www.baidu.com的解析记录,但是它可以提供.com的地址,于是返回.com的地址给LDNS服务器;
步骤4:LDNS获取到.com的地址后,向.com的服务器的发送解析请求,.com的服务器发现也没有相关解析记录,但是它可以提供baidu.com的地址,于是返回baidu.com的地址给LDNS服务器;
步骤5:同理,LDNS获取到baidu.com的ip地址后,向它发送www.baidu.com的解析请求,由于baidu.com是该域名的授权服务器,所以直接返回ip地址给LDNS服务器;
步骤6:LDNS把来自授权服务器的与www.baidu.com对应的ip解析记录发给客户端浏览器,并且LDNS会在本地把域名和ip对应的解析记录缓存起来,以便下次更快地返回相同解析请求的记录给客户端。到此,整个DNS的解析流程就完成了。
DNS解析
DNS查询类型
递归查询:客户端和它的首选DNS之间就是递归查询。
迭代查询:首选DNS和根DNS等其他DNS之间进行的查询就是迭代查询。
解析类型
正向解析:FQDN——IP
反向解析:IP——FQDN
面试题:
客户端用户在浏览器中输入网址,到看到网站内容的完整访问流程。(DNS解析流程+HTTP协议的通信原理)