Skip to content

Latest commit

 

History

History
5 lines (3 loc) · 2.09 KB

DNS原理.md

File metadata and controls

5 lines (3 loc) · 2.09 KB

DNS原理

需要明确的一点,互联网上的通信寻址是通过ip地址来寻址的,打个比方,如果从你的电脑上ping 1.1.1.1,首先判断1.1.1.1是否和你处于同一个子网,如果属于同一个子网,则按照内网通信的基本流程,先进行ARP广播,查找ip地址为1.1.1.1的mac地址,然后通过mac地址进行通信,如果不属于同一个子网,则也要先进行arp广播,不过查找的是网关ip地址的mac地址,将数据包发给网关,网关匹配路由之后,继续转发给他的上一级路由,依次迭代,直到到达1.1.1.1所在的机器。

如果纯粹使用ip地址通信,通信是没问题的,但是互联网发展太快了,五六年前的规模和现在完全一个层面,五六年前,我还在学jsp,学MFC,现在MFC也叫没饭吃,设计互联网的人很早就想到了这点,ip地址太难记了,要记住所有网站的ip地址显然是不可能的,所以他们设计了域名系统,在ip地址与域名之间构建一个映射关系,通过域名关联到ip地址,然后用户只需要记住域名即可,记住www.notr.tech总比记住120.25.214.63要容易得多。但是这又会产生一个问题,用户每次访问www.notr.tech的时候,都需要先通过互联网获取到www.notr.tech的ip地址,每个域名相对直接使用ip而言,都多了一步域名解析的步骤。于是为了加速域名解析的过程,DNS服务器都会设置有高速缓存,不仅如此,每台电脑针对域名查询,也做了高速缓存,不仅如此,有的浏览器内部也做了域名高速缓存。所以就有了如果某浏览器是带有dns缓存功能的,访问一个网站时,首先从自身的缓存看有没有记录,如果有,直接用,如果没有,看系统DNS缓存是否有记录,如果有,直接用,如果没有,发起DNS查询,如果刚好你的网关配备有DNS服务器,而且dhcp服务器给你电脑下发的DNS就是你的网关地址,那么你的网关先从自身缓存查,依次迭代下去,所以,DNS缓存提高了域名解析的效率。