1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Http的请求过程及DNS域名解析

Http的请求过程及DNS域名解析

时间:2021-09-14 23:46:34

相关推荐

Http的请求过程及DNS域名解析

每天一个前端面试题之 Http的请求过程和详解DNS域名解析

所谓HTTP的请求过程,就是从输入url到浏览器显示页面的过程。主要包括以下几个部分:

1、对输入的URL进行DNS域名解析,拿到IP地址。

2、根据拿到的IP地址,向对应的WEB服务器建立TCP连接。

通过三次握手建立TCP连接/weixin_44023123/article/details/117356778

3、浏览器向服务器发起Http请求。

HTTP请求报文

4、服务器处理请求,并将处理结果返回给浏览器。

服务器响应报文

5、关闭TCP连接。

通过四次挥手关闭TCP连接。

6、浏览器渲染引擎工作,将获得的资源呈现为页面显示在我们面前。

浏览器渲染引擎的工作流程/weixin_44023123/article/details/116605290?spm=1001..3001.5501

这里详细讲一下第一步DNS域名解析的过程。(其他的详细内容请根据提示跳转到其他博客,相应链接已经给出)

一、什么是DNS

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。

二、为什么需要DNS域名解析

网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

三、DNS域名解析解析的过程

DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。具体过程如下:

用户主机上运行着DNS的应用客户端,就是我们的PC机或者手机客户端运行着DNS客户端浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如/, 并将这个主机名传送给DNS应用的客户端DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的WEB服务器发起TCP连接

在第三步的过程中,具体又可以分为以下过程。

1.在浏览器拿到输入的URL后,先检查浏览器自身缓存中有没有被解析过的这个域名对应的ip地址,如果有就到此结束了。

2.如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存,如果有就到此结束了。

3.如果还没有找到,就会查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。

4.如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS(域名分布系统)服务器 。

5.本地DNS服务器接收到请求后会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回域名解析结果,一般80%的域名解析在此之前(包含这一步)都能完成。如果缓存记录中没有,本地DNS服务器还要向DNS根服务器进行查询。

6.根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。

7.本地DNS服务器继续向域服务器发出请求,域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你所查找的域名的解析服务器的地址。

8.本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

在前3步没有获取到域名对应的ip地址后,进行递归查询,在4-5步没有获取到域名对应的ip地址后,第6步开始迭代查询。一个有趣的示意图如下:

四、DNS优化

DNS缓存和DNS负载均衡

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。