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			主机名

Markdown

根域

根(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协议的通信原理)