看完这篇DNS解析过程,终于明白为啥选择UDP了。
目录
1、DNS是什么? 2、因特网的域名结构 3、缓存(Cache) 4、 DNS请求实例
1、DNS是什么?
DNS ( Domain Name Systme)简单理解就是解析器、域名服务器的组合,比如大家访问知乎,会输入http://www.zhihu.com,事实上网站域名只是一个IP 地址,人们是很难记住各式各样的IP地址的,所以就需要DNS服务器了,DNS就像手机通讯录一样,存放着各亲朋好友的手机号。为什么要存储到通讯录里?因为你不可能记得一百个人的手机号码,但是通过名字你可以快速定位某位朋友的手机号码。DNS就是存储了各种IP地址,然后让你通过域名定位到IP地址来进行连接通信的。
DNS domain name system 主要作用就是将主机域名转换为ip地址 所有DNS请求和回答报文使用的UDP数据报经过端口53发送 DNS是应用层协议,client端(一般指浏览器)构建DNS查询请求,依次被传输层,网络层,数据链路层等封装传送到达DNS服务器端,最终client端接收到DNS响应消息
为什么选择UDP?
UDP(User Datagram Protocol)这样的无连接的,尽最大能力交付的不可靠数据连接,而不是使用TCP(Transmission Control Protocol 传输控制协议)这样的面向连接的可靠数据连接。
一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。
考虑到效率原因,TCP连接的开销大得,故采用UDP作为DNS的运输层协议,这也将导致只有13个根域名服务器的结果。
2、因特网的域名结构
因特网的域名结构:
1、 因特网采用了层次树状结构的命名方法。
2、 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
3、 域名的结构由标号序列组成,各标号之间用点隔开:
域名服务器:
1、一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。
2、 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
3、每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
4、DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:
(1)国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
域名服务器有以下四种类型:
1、根域名服务器
a、 根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。 b、 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析只要自己无法解析,就首先求助于根域名服务器。 c、 在因特网上共有13个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母) d、 根域名服务器并不直接把域名直接转换成 IP 地址。 e、 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
2、顶级域名服务器
a、这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。 b、 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)
3、 权限域名服务器
4、本地域名服务器
3、缓存(Cache)
DNS缓存:每次你访问网站,DNS会保存你访问过的网站的域名服务器(即DNS) 信息,它存储在你的本机电脑上,目的就是为了帮助你下次在浏览器以最短的路径、更快的速度找到所需的DNS信息,解析你的网站!
缓存具体分类:
1) 浏览器缓存
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
2) 系统缓存
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
3) 路由器缓存
当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;
4) ISP(互联网服务提供商)DNS缓存
当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
4、 DNS请求实例
1、 浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www . qq .com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
2、如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。
3、如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS(53号端口UDP协议)服务器发起域名解析请求。(本地域名服务器)
4、主机向本地域名服务器解析的过程采用递归(也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。
❝迭代:
1、本地域名服务器向根域名服务器发请求
2、返回给本地域名服务器我们要向哪个顶级域名服务器去找
3、顶级域名服务器向权限域名服务器发请求
4、返回给本地域名服务器IP地址。
5、返回给Windows系统内核,最后返回给浏览器。
❝递归:
1、本地域名服务器向根域名服务器发请求
2、之后根域名服务器向顶级域名服务器去找
3、顶级域名服务器返回给根域名服务器
4、根域名服务器返回给本地域名服务器
5、返回给Windows系统内核,最后返回给浏览器。
这里补充说明,一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把www . qq .com的A记录返回给客户端就可以了。
DNS资源记录
记录一条域名信息映射关系,称之为资源记录(RR)。
当我们查询域名http://www.zdns.cn的时候,查询结果得到的资源记录结构体中有如下数据:
1、TTL,就是生存周期,是递归服务器会在缓存中保存该资源记录的时长。
2、网络/协议类型,它的代表的标识是IN,IN就是internet,目前DNS系统主要支持的协议是IN。
3、type,就是资源记录类型,一般的网站都是都是A记录(IPv4的主机地址)。
4、rdata是资源记录数据,就是域名关联的信息数据。
版权声明:本文为博主「JMW1407」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: https://blog.csdn.net/JMW1407/article/details/108543110
样式编辑:网络工程师阿龙,转载本样式请保留此信息。