当你访问谷歌网址的时候,整个过程发生了什么?
当你在 Chrome 浏览器输入谷歌的网址,https://google.com,并按下回车之后,浏览器发生了什么,它经历了什么才把一个网页放到你面前?
网址是如何组成的?
首先,你输入浏览器的是一个叫 URL 的东西,全称是:Uniform Resoures Location,统一资源定位符,可以理解成互联网世界里的门牌号。其中第一部分是访问协议,常见的有HTTP,HTTPS,FTP,FILE等,https://google.com的意思就是:你和即将要访问的地址之间,将按照 HTTPS 协议中的要求进行信息的交换,无论是你给它提交的请求,还是它返回给你的数据。
第二部分是google.com,也就是谷歌的网址,网址是通俗易懂的网络上的地址,比如说深圳市10000号,或者说腾讯大厦,而不是东经xx.xx度,北纬xx.xx度。有了这个地址之后,浏览器需要找到这个地址代表的 IP 地址,对于每个连接到互联网的设备都有自己独一无二的 IP 地址,存放谷歌首页的机器也不例外,因为浏览器并不认识google.com这一串字符,它需要找到这串字符对应的一个独一无二的 IP 地址。
寻找的过程
如何去寻找到这个IP地址呢?
首先,如果你曾经访问过这个网址,已经进行过一次通信请求了,浏览器会将该地址(google.com)的 IP 缓存,留作日后再次访问使用;如果你没有从浏览器访问过它,将从你的设备中的 Host 文件中查找 IP 地址;如果 Host 文件也没有,它将按照 DNS 协议向你的DNS 服务器进行请求,它可能是你的路由器,或者你的路由器的的上一个节点,有可能一直找到电信运营商,或者根服务器,然后一步一步找到对应的 IP 地址。
在找到 IP 之后,你需要告诉它:我想给你发点东西和要点东西,它说:好啊,我也想给你发点东西,然后你说好的。这样你们就建立了连接,可以开始传输数据了,这就是 TCP 的“三次握手”的过程。
建立 TCP 连接过程建立连接之后,你的请求相当于告诉这台机器,“我需要返回谷歌首页的资源”,之后就是机器上的程序,检查你是否有取得谷歌首页的权限,如果有权限,它会依照 MVC 模型,将数据(来自存放数据的数据库)和网页模板(html文件,js文件和css文件)合在一起,然后给你发送回去。
MVC 模型渲染
浏览器拿到了谷歌的机器返回的文件之后,首先会把 HTML 代码经过解析,构建成 DOM 树,然后根据 CSS 文件计算 DOM 树上的属性并把 DOM 上的元素的属性值进行渲染,包括位置,大小,字体,粗细,内边距,外边距,等等,最后将元素进行合成渲染,排版,绘制到浏览器页面上,就构成了我们看到的谷歌首页。
Google参考阅读
1.用户用浏览器访问一个网站的时候背后的过程与步骤是怎样的?-知乎用户邱永臣的回答
2.极客时间《重学前端》专栏
3.Wikiwand
网友评论