很多初学网络或者前端的初学者大多会有这样一个疑问:从输入URL到页面加载完成到底发生了什么?
总的来说,这个过程分为下面几个步骤:
1.DNS解析
2.与服务器建立连接
3.服务器处理并返回http报文
4.浏览器解析渲染页面
过程
DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例如www.baidu.com,其实不是百度网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。所以DNS解析实际上充当了一个翻译的角色,实现了网址到IP地址的转换。
而DNS解析通常会经过以下这几个过程:
1.浏览器缓存 - 浏览器缓存DNS记录一段时间
2.系统缓存 - 从Hosts文件查找是否有该域名和对应IP
3.路由器缓存 - 一般路由器也会缓存域名信息
4.ISP DNS缓存 - 到电信的DNS查找缓存
5.都没有找到,则向根域名服务器查找域名对应IP,根域名服务器把请求转发到下一级查找IP
www.baidu.com查找顺序是:
根域名服务器(.)-> .com -> .baidu.com -> www.baidu.com
建立连接
知道了服务器的IP地址后,就可以与服务器建立连接。
建立连接需要三个过程(三次握手):
1.主机向服务器发送一个建立连接的请求
2.服务器接到请求后发送同意连接的信号
3.主机接到同意连接的信号后,再次向服务器发送了确认信号
服务器处理请求
1.浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等
2.服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件
3.服务器将得到的 HTML 文件发送给浏览器
浏览器解析渲染页面
在执行 HTML 中代码时,根据需要,浏览器会继续请求图片、CSS、JavsScript等文件,过程同请求 HTML 。
结语
以上就是我对输入URL到页面加载的过程的一个理解。如有不对或有更好的理解,可以留言评论,不胜感激。