DNS协议
作用:提供 主机名和IP地址间的映射关系
名字到IP地址的解析是由若干个域名Server组成的, 域名Server程序在专设的结点上运行, 运行这些程序的机器成为域名服务器(Domain Server). 域名服务器的四种类型
-
根域名服务器: 最高层次的域名服务器。记录着所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。在因特网上共有13组根域名服务器;
-
顶级域名服务器: 负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
-
权限域名服务器: 是负责一个区域的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。
-
本地域名服务器: 当一个主机发出 DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。
DNS基于什么协议
DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?
DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。
DNS区域传输的时候使用TCP协议:
1.辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
2.TCP是一种可靠连接,保证了数据的准确性。
域名解析时使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
DNS解析过程
- 首先浏览器会检查浏览器自身的DNS缓存中,是否有域名对应的DNS缓存(chrome缓存1分钟,大概有1000条缓存),没有的话进入第二步,否则解析完成
- 浏览器调用客户端一个称为解析器的库函数,将目的主机的域名作为参数传给解析器;
- 解析器通过网络向本地域名服务器53号端口发送一个以UDP数据报封装的 DNS 请求报文,询问与该域名对应的IP地址;
- 请求会在运营商的**DNS服务器(本地服务器)**上进行请求,如果找到对应的条目,且没有过期,则解析成功,否则进入第五步
- 运营商的DNS服务器,根据解析请求,迭代查询,首先找到根域名服务器的IP地址(这个DNS服务器内置13台根域DNS的IP地址),然后找到根域的DNS地址,发送请求
- 根域服务器收到请求后,根据域名,返回对应的顶级域的服务器ip地址,并返回给运营商DNS服务器
- 运营商DNS服务器接收到根域名服务器传回来的顶级域名服务器IP地址后,向顶级域名服务器发送请求
- 顶级域名服务器接收到请求后,返回该域名对应的权威域名服务器的ip地址,并返回给运行商DNS服务器。
- 运营商DNS服务器获得权威域名服务器的响应信息后,返回给请求的主机,客户端解析器最终收到响应报文后,再将解析得到的IP地址返回给应用程序。DNS解析完成。
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项。当权限域名服务器回答一个查询请求时,在响应报文中都指明绑定有效存在的时间值。
UDP协议
原文链接:https://blog.csdn.net/qq_35429629/article/details/104826462