一个网页从咱们输入网址到打开经历了如下步骤。
DNS
解析DNS
(域名系统 Domain Name System)由解析器
和域名服务器
组成,域名服务器
保存着该网络中全部主机的域名
和对应的IP地址
,域名
有惟一对应的IP地址
,可是IP地址
不必定对应一个域名,咱们就是根据DNS
来上网的。
网址
并按下回车键时,浏览器获得一个域名
。而实际通信过程当中咱们须要一个IP地址
。所以咱们须要先把域名
转化成对应的IP地址
,这个过程就叫作DNS
解析。简述css
浏览器搜索缓存-->hosts文件和操做系统缓存-->域名解析服务器-->递归迭代
YSE-->返回给浏览器
NO-->向下找
详细描述web
DNS
记录。hosts
文件和操做系统缓存。IP
后,一步步向上返回,直到返回给浏览器。TCP
请求(三次握手)简述算法
客户端(发送链接请求)-->服务器端
服务器端(创建链接并发送确认报文)-->客户端
客户端(发送确认收到确认报文)-->服务器端
详细描述后端
创建起TCP
链接后,开始进行通讯。浏览器
TCP
链接后,浏览器向服务器发送HTTP
请求GET
。
当一台服务器没法支持大量用户访问时,将用户分摊到两个或多个服务器上的方法叫
负载均衡
。
简述缓存
浏览器(发送请求)-->Nginx(创建TCP链接,转发请求)-->web服务器(发送网页)-->Nginx(传递网页)-->filter链(处理)-->浏览器
详细描述服务器
负载均衡
的话,前一步DNS
解析得到的IP
地址应该是咱们Nginx
负载均衡服务器的IP地址。因此,咱们的浏览器将咱们的请求发送到了Nginx
负载均衡服务器上。Nginx
根据咱们设定的分配算法和规则,选择一台后端的真实Web服务器,与之创建TCP
链接、并转发咱们浏览器发出去的网页请求。Web
服务器收到请求,产生响应,并将网页发送给Nginx
负载均衡服务器。Nginx
负载均衡服务器将网页传递给filter链处理,以后发回给咱们的浏览器。TCP
链接(四次挥手)浏览器(发送释放链接报文)-->服务器
服务器(发送确认报文并发送完数据)-->浏览器
服务器(发送释放链接请求)-->浏览器
浏览器(发出确认)-->服务器
等待一段时间后,浏览器释放TCP链接
TCP
链接。浏览器接收到服务器服务器返回的HTML
页面代码,在解析和渲染这个页面时,里面的JS
、CSS
、图片
等静态资源,也是一个个HTTP
请求,都须要通过上面的步骤。
DOM Tree
。css
内容,生成CSS Rule Tree(规则树)
。JS执行引擎执
行JS
代码。DOM Tree
和 CSS Rule Tree
生成 Render Tree(呈现树)
。Render Tree
渲染网页。文章参考自https://www.jianshu.com/p/0c8c7cecf946
和https://www.jianshu.com/p/cc1d185a7842
网络