背景
我们都知道,用ip可以唯一标识互联网上的主机。
从前,互联网的主机非常的少。我们都可以记住每台Server的ip。
就像是大哥大时期,电话非常少,电话号码也就非常少,我们都能记住某个人的电话。
后来,互联网变得非常大,ip非常多,我们记不住。
所以就出现了DNS域名解析服务。我只需要记住某个Server的名字,然后去找提供DNS服务的Server,询问它这个域名对应的ip。
就像是,手机里面的电话本,我们只需要记住每个人的名字,拨打电话时,按名字查找就行了。
关于DNS
Domain Name System,域名解析服务
主要用来将域名解析为ip。(还有其他的作用)
DNS使用UDP,53端口
域名的组成
域名:由根域,顶级域,二级域,子域和主机组成。
根域我们用.表示,它表示世界上13台根域名服务器。
注意:www.baidu.com其实隐藏了根域(www.baidu.com.)
比如:www.baidu.com.中最后的.为根域名,通常不用写。
com表示顶级域名
baidu表示二级域名
www为主机。
域名的解析过程
过程:
1.
Client向本地DNS服务器发送请求:请求解析域名,如www.baidu.com。
这个本地域名服务器就是设置在网卡中的DNS地址,如114.114.114.114。
2.
如果本地域名服务器有相应的 域名-ip 记录,则返回ip地址,查询结束。
如果本地域名服务器没有相应的记录,则转第3步。
3.
本地域名服务器询问根域名服务器:.com的域名服务器ip。
4.
本地域名服务器询问.com域名服务器:baidu.com的域名服务器ip。
5.
本地域名服务器询问baidu.com域名服务器:www.baidu.com的主机ip。查找结束。
我们可以注意到:
1. DNS服务器是有层次关系的
2. DNS的解析过程是递归和迭代的
- 递归:
Client -> 本地域名服务器 -> 根域名服务器等其他权威服务器
- 迭代
本地域名服务器 -> 根域名服务器
本地域名服务器 -> 顶级域名服务器
本地域名服务器 -> 次级域名服务器
…
DNS缓存
服务器一般不会变换域名和ip,那么我们就可以将域名和ip对应关系缓存。
缓存之后,下次就可以直接拿来用。提升效率。
一般这些地方会缓存域名信息:
- 浏览器
- 主机
- 路由器网关
- 本地DNS服务器