DNS的作用:
将人易于记忆的Domain Name与人不容易记忆的IP Address作转换。
DNS域名解析基于UDP协议,原因在于:
UDP比起TCP效率更高 但不能保证数据的完整性解析。DNS基于UDP主要是考虑到降低服务器的负载,降低网络流量,也考虑到DNS服务器的网络通常很稳定,万一失败,重试的损失也不大。
DNS域名解析的过程如下:
1、搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的DNS缓存中是否有www.myApp.com对应的条目,而且没有过期,如果有且没有过期,则解析到此结束。
2、如果在浏览器自身的DNS缓存里没有找到,则搜索操作系统自身的DNS缓存,如果找到且没有过期,则解析到此结束。
3、如果在操作系统自身的DNS缓存里也没有找到,则尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),如果找到,则解析到此结束。
4、 如果在hosts文件里也没有找到,则会发起一个DNS的系统调用,根据本地配置网络时填写的DNS地址向首选DNS服务器(一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求(通过UDP协议向DNS的53端口发起请求,这个请求是递归的请求)。
4.1) 首选DNS服务器首先查找自身的缓存,如果找到且没有过期,则解析到此结束。
4.2) 如果没有找到,则由首选DNS服务器代浏览器发起迭代的DNS解析请求,首先会找根域的DNS服务器的IP地址,找到根域的DNS服务器后,就会向其发起请求(请问www.myApp.com这个域名的IP地址是多少啊?)
4.3) 根域的DNS服务器发现这是一个顶级域com域的一个域名,于是就告诉首选DNS服务器我不知道这个域名的IP地址,但是我知道com域的DNS服务器的IP地址,于是首选DNS服务器就得到了com域的DNS服务器的IP地址,又向com域的DNS服务器发起了请求(请问www.myApp.com这个域名的IP地址是多少?)
4.4)com域的DNS服务器告诉首选DNS服务器我不知道这个域名的IP地址,但是我知道myApp.com这个域的DNS服务器的IP地址,于是首选DNS服务器又向myApp.com这个域的DNS服务器发起请求(请问www.myApp.com这个域名的IP地址是多少啊?),这时linux178.com域的DNS服务器一查,找到了www.myApp.com这个域名对应的IP地址,于是把找到的结果发送给首选DNS服务器,这时首选DNS服务器就拿到了www.myApp.com这个域名对应的IP地址,并返回给Windows系统内核,内核又把结果返回给浏览器,终于浏览器拿到了www.myApp.com对应的IP地址。