这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
上次浏览器的网络进程对浏览器地址栏中发送过来的URL进行了解析,获得了URL对应的协议和域名。不过我们知道,网络请求应该向一个IP地址进行发送,而我们现在只获得了域名,并没有目标IP地址,网络进程如何知道向哪个IP地址发送我们的请求呢?
这个时候就需要DNS服务器上场啦!DNS服务器可以根据我们的域名请求,返回域名对应的IP地址。我们的网络进程就知道应该往哪里发送我们的请求了。不过,为了减轻DNS服务器的压力,同时提高IP的解析速度,浏览器还是会先在本地寻找域名与IP的K-V对。如果在本地中已经有了域名和IP的映射关系,网络进程就会直接使用本地的缓存进行请求的发送。
如果在本地中并不存在IP与域名的映射关系,网络进程就只好去请求DNS服务器的帮助。
对于一个域名在DNS服务器中的查询请求,是以迭代的方式进行的。具体来说,DNS服务器家族也是有分级制度的,越顶级的DNS服务器,掌握的信息也越多,可以指导下层的DNS服务器发送来的查询请求。
网络进程首先会向本地或者局域网内的DNS服务器发送请求,如果没有查到结果的话,本地DNS服务器会向根服务器发送请求,而根服务器会将请求目标转给顶级DNS服务器,本地DNS服务器会跟随请求来到顶级DNS服务器处查询,如果没有查到结果,顶级DNS服务器会将请求转给授权DNS服务器。在授权DNS服务器中查询到DNS请求中包含的域名对应的IP地址后,本地DNS服务器会将拿到的IP地址返回给网络进程,同时将IP地址与域名信息保存在本地缓存中,以备下一次查询时使用。