这是一个前端经典问题,就像女朋友会问的“我和你妈同时掉水里,你救谁?”一样离谱的高频。本质上这问题对前端开发,并没有技术提高。但是知道了这个,你就能知道页面究竟是怎么来的了。有一种拨开云雾见天明的感觉。
小故事
所有抽象的知识,只有具体了才能让人更加理解。所以,我将讲一个故事的形式向大家阐述。
当你在浏览器中输入了url时,就相当于你要去一定地方旅游。url的域名就是你要去的景点名。但是只知道景点名字,浏览器并不知道你要去的地方,具体在哪里。所以你要先搞清楚景点所在的具体地点。这过程相当于你去车站买票。售票员会依据你说的景点帮你找到最近的票。例如:你说去水立方,要买距离哪里最近的车站的票。售货员会给建议说北京南站。你知道了要买北京南车票。这个过程相当于DNS解析,也就是把域名解析成为IP的过程。有了具体地点。我们就能和售票员进行买票交流了。首先,你要告诉售票员,你要买去北京的票。其次,售票员听到后告诉你,现在还有余票,你可以买。最后,你掏出身份证说帮我买下吧。这就是TCP三次握手。这时你与售票员之间,标志着要进行具体买票内容的交流了。你付钱过程相当于客户端发起请求,给你出票相当于服务端相应请求。经过了这一系例操作,你拿着票坐上了车到了水立方。也就是浏览器拿到了服务器给的css、js、html渲染出了水立方的过程。
专业术语阐述
- DNS域名解析:将域名解析成为IP地址的过程
- 建立TCP连接:三次握手,确保数据安全
- 发起HTTP请求:用户提交信息
- 服务器处理请求、返回HTTP报文: 根据用户输入信息,服务端返回所需要展示的信息给客户
- 关闭TCP连接:断开连接,四次分手。相当于两次两次分手
- 浏览器解析html:解析服务端返回的HTML内容
- 浏览器布局渲染:根据html构建dom、cssom数组成渲染树进行渲染
结束语
浏览器是一个全垒技术打法的工具,当你知道它相关工作流程和原理的时候。相信你的技术已经进行到了下一个层次。知其然,知其所以然。愿大家知道它更多的原理,因为将有助于你日后的成长。
一切有生之物,都少不了睡眠的调剂。 ---莎士比亚