- 大多数dns查询基于udp,少部分基于tcp,因为dns查询比较注重查询的速度,是否成功,数据量都没有要求
域名服务器可以划分为以下四种不同的类型
- 根域名服务器:每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器
顶级域名分为一下三类
- 国家顶级域名 nTLD:cn、us、uk
- 通用顶级域名 gTLD:com、net、org、int、edu、gov、mil
- 反向域名 arpa:用于返乡域名解析,即IP地址反向解析为域名
域名解析的过程
- 递归查询
- 迭代查询
高速缓存
-
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项目(例如:每个项目只存放两天)
-
不但在本地服务器中更需要高速缓存,在用户主机中也很需要,许多用户主机在启动时从本地域名服务器下载域名和ip地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性
DNS解析的具体过程
当一个用户在地址栏中输入 www.baidu.com 时,DNS解析有大致十个过程
浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同名域名被缓存的时间也可通过TTL属性来设置。- 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查
操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。 - 如果至此还没有命中域名,才会真正的
请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成啦 - 如果LDNS仍然没有命中,就直接跳到
Root Server域名服务器请求解析 - 根域名服务器返回给LDNS一个
所查询域的主域名服务器地址 - 此时LDNS在发送请求给上一步返回的gTLD
- 接受请求的gTLD查找并返回这个域名对应的
Name Server的地址,这个Name Server就是网站注册的域名服务器 - Name Server根据映射关系表找到目标ip,返回给LDNS
- LDNS
缓存这个域名和对应的ip - LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束