页面的请求过程
在面试过程中,我们经常会被问到一个问题:在浏览器输入URL,按下回车键,会发生什么?这个问题涉及浏览器中的运行机制和页面加载过程
总体来说,当我们打开某个网站的页面,浏览器就会发起网络请求获取该页面的资源,包括页面、图片、CSS文件、XHR请求等。
实际上,放我们在浏览器输入URL,按下回车,浏览器的处理过程如下:
1.DNS域名解析,找到网页的存放服务器
2.浏览器和服务器建立TCP连接
3.浏览器发起HTTP请求
4.服务器响应HTTP请求,返回该网页的HTML内容
5.浏览器解析HTML代码,并请求HTML代码中的资源(比如JavaScript、CSS、图片等)
6.浏览器对页面进行渲染呈现给用户
DNS域名解析
DNS域名解析:是负责把域名地址翻译成IP地址,客户端与服务器建立TCP连接是通过IP进行通信的
DNS解析过程会进行递归查询,分别依次尝试从以下途径,按顺序获取该域名对应的IP地址:
1.浏览器缓存
2.系统缓存(用户操作系统hosts文件DNS缓存)
3.路由器缓存
4.互联网服务提供商DNS缓存(联通、移动、电信等提供商的DNS缓存服务器)
5.根域名服务器(com\net\org\cn 等等域名后缀)
6.顶级域名服务器(以根域名后缀为一级的域名,例如baidu.com中的baidu就是顶级域名)
7.主域名服务器(可以理解为网站的访问域名)
TCP连接的建立
1.TCP和UDP的区别:TCP协议提供可靠传输服务;UOD协议则可以更快地进行通信
2.三次握手:指的是TCP连接的建立过程,该过程中客户端和服务器端总共需要发送三个包,从而确认连接存在
3.四次挥手:指的是TCP连接的断开过程,该过程中需要客户端和服务器端总共发生四个包,从而确认连接关闭
HTTP请求和TCP协议
目前大多数HTTP请求都是基于TCP协议。TCP协议的目的是提供可靠的数据传输,它用来确保可靠传输的途径主要包括两个:乱序重建(通过对数据包编号来对齐排序,从而使得另一端接收数据时,可以重新根据编号还原顺序);丢包重试(可通过发送方是否得到响应来检测出丢失的数据并重传这些数据)。通过以上方法,TCP在传输过程中不会丢失或者破坏任何数据,这也是即使出现网络故障也不会破坏文件下载的原因