计算机网络相关知识整理(四)

本文详细介绍了DNS(域名系统)的解析过程,包括浏览器缓存、系统缓存、路由器缓存、ISP及根域名服务器的查询流程。阐述了递归查询与迭代查询的区别,以及DNS请求中UDP和TCP的选择依据。

应用层

DNS协议

总结:先查浏览器缓存,再查系统缓存,路由器缓存,ISP,根域名服务器。递归查询就是交给别人办,迭代查询就是自己办,TCP和UDP都使用,报文长度大于512B使用TCP。

  为什么需要 DNS 解析域名为 IP 地址?
网络通讯大部分是基于 TCP/IP 的,而 TCP/IP 是基于 IP 地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的 IP 地址,而不能认识域名。我们无法记住 10 个以上 IP 地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名, 就能看到所需要的页面,这是因为有一个叫“DNS 服务器”的计算机自动把我们的域名“翻 译”成了相应的 IP 地址,然后调出 IP 地址所对应的网页。  
 
具体什么是 DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于 TCP/IP 网络,它所提供的服务是用来将主机名和域名转换为 IP 地址的工作。DNS 就是这样的一位翻译官”,它的基本工作原理可用下图来表示。
 
DNS 的过程
首先是查找浏览器缓存,浏览器会保存一段时间你之前访问过的一些网址的 DNS 信息,不同浏览器保存的时常不等。如果没有找到对应的记录,这个时候浏览器会尝试调用系统缓存来继续查找这个网址 的对应 DNS 信息。
 
如果还是没找到对应的 IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有 DNS 信息如果还是没有,这个请求就会被发送到 ISP(注:Internet Service Provider,互联网服务提供商,就是那些拉网线到你家里的运营商,中国电信中国移动什么的),ISP 也会有相应的 ISP DNS 服务器,一听中国电信就知道这个 DNS 服务器的规模肯定不会小,所以基本上都能在这里找得到。
 
如果还是没有的话, 你的 ISP 的 DNS 服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级 DNS 服务器,共有 13 台逻辑上的服务器,A 到 M 命名,真正的实体服务器则有几百台,分布于全球各大洲。所以这些服务器有真正完整的 DNS 数据库。如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者卖域名的把它回收掉了(通常是因为欠费)。 这也就是为什么打开一个新页面会有点慢,因为本地没什么缓存,要这样递归地查询下去。     

递归查询和迭代查询

(1)递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
(2)迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

通俗地说,递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。
迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。
 

DNS请求中UDP和TCP的选择

         DNS可以使用UDP/53,也可以使用TCP/53,当响应报文的长度小于512B时就使用UDP(因为UDP的最大报文长度为512B),若响应报文的长度超过512B,则选用TCP。DNS协议关于UDP和TCP的选择通常为以下两种情况:

        (1)若DNS客户程序事先知道响应报文的长度512B,则应当使用TCP连接;

          NOTICE:主域名服务器与辅助域名服务器在进行区域传送时,通常数据量都比较大,所有DNS规定,区域传送使用TCP协议。

        (2)若解析程序不知道响应报文的长度,它一般使用UDP协议发送DNS查询报文,若DNS响应报文的长度大于512B,服务器就截断响应报文,并把TC(truncated)位置1,在这种情况下,DNS客户程序通常使用TCP重发原来的查询请求,从而它将来能够从DNS服务器中收到完整的响应。

          综上所述,我们可以得出结论:DNS客户程序在不知情(不知道DNS响应报文的长度是否超过512B)的情况下通常采用UDP与DNS服务器程序连接,在知情的情况下则采用TCP进行连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值