【经典面试题】浏览器地址栏输入URL以后……

这个问题恐怕好多人在面试过程中都被问到过,但回答的都不算很好,所以我想写一篇笔记对这个问题进行一个系统的总结;就像这样输入一个网址,然后的然后
在这里插入图片描述

一、先进行DNS域名解析

我们都知道通过IP可以找到一台主机,我们输入网址的目的是获得我们想要的资源,那就需要知道去哪儿获取,所以就要知道对方的IP,那么第一步必然是要对这个网址进行解析得到IP地址。为什么要是用域名,不直接输入IP呢,因为方便我们记忆和使用;
下来聊解析的过程
a浏览器缓存:先从浏览器缓存中查找是否有该域名,浏览器一般都会有浏览历史,当你输入一个网址时,它第一步先去浏览器缓存里面找,找到了就进行解析,找不到在进行下面的操作,但每个浏览器给你保存的时间并不一样长,而且也没有固定多长;
在这里插入图片描述
b、系统缓存:浏览器缓存中没有则从系统缓存中查找
接上面,浏览器里没有就去系统缓存中查找,这个系统指的是操作系统。浏览器会做一个系统调用(windows操作系统里gethostbyname)
c、路由器缓存:系统缓存中没有则从路由缓存中查找
d、ISP DNS缓存:路由缓存如果在没有,则从本地DNS服务
e、递归查找:本地DNS服务器中没有则从其他DNS服务器中查找,其他服务器中查找的规则是递归查找,查找的顺序是(根域名服务器,一级域名服务器,二级域名服务器,三级域名服务器,是递归查询)

二、找到IP,建立TCP连接进行数据发送

关于TCP协议,也是网络的一大考点,我的这篇文章有详细解读,请点击查看
TCP协议的相关知识

三、发送HTTP请求并响应

按照HTTP协议的格式发送请求;
HTTP相关知识在这儿,感兴趣的可以看一看
1、在应用层,浏览器会给web服务器发送一个HTTP请求;

2、在传输层:HTTP数据包会嵌入在TCP报文段中;TCP报文段需要设置端口。

3、在网络层中:TCP报文段再嵌入IP数据包中;

4、数据链路层:IP数据包嵌入到数据帧(以太网数据包)中在网络上传送;
(数据帧中包含源MAC地址和目的MAC地址(通过ARP地址解析协议得到的)。这样数据帧由头部(MAC地址)+IP数据包组成。)

现在服务器收到了,他要做的工作就是把上面的过程逆一遍
服务接收到发送过来的以太网数据包开始解析请求信息,从以太网数据包中提取IP数据包—>TCP报文段—>HTTP数据包,并组装为有效数据交与对应线程池中分配的线程进行处理,在这个过程中,生成相应request、response对象。请求处理完成之后,服务器发回一个HTTP响应;

四、浏览器解析HTMI代码,

浏览器会去解析index.html文件,你的index文件中会有一些静态资源,当它解析到这里时就会去下载,这些工作都完成之后,然后断开TCP连接,(在上面TCP那篇博客里有详细介绍)

五、对页面进行渲染并呈现给用户

构建DOM树,(包括重新发起请求 + 执行JS逻辑)。然后根据DOM树。按照Windows的标准进行绘制

猜你喜欢

转载自blog.csdn.net/chris__x/article/details/107288357
今日推荐