从浏览器输入URL到网页加载完成,发生了什么?
来源:互联网 发布:说明书排版用什么软件 编辑:程序博客网 时间:2024/06/15 18:26
这个我打算分为两部门来说。第一部分是从键盘输入到屏幕显示URL;第二部分是按下回车后,到页面加载的过程。
第一部分在(),本文将着重讨论第二部分。
一、DNS解析
DNS解析的过程是一个先在本地机器上找,然后去网络上找的过程。首先,会先去浏览器缓存中查找,没有就去本机的hosts文件找。如果都没找到相应域名的ip,那么就去网络上找。网络中查找的第一步就是先去本地的路由器找,本地路由器会有DNS缓存,如果路由器缓存中没有,那么就去ISP提供商的DNS服务器上找,一般在这里都能找得到。如果还没有,就去根域名服务器找,这个过程是基于UDP协议实现的递归查找。以www.baidu.com域名的解析为例。
ISP的DSN服务器先向根域名服务器询问, 你知道www.baidu.com的IP么?根域名服务器不负责管理具体的域名和Ip的关系,但是它知道管理.com这个域名的服务器的地址,于是就将.com域名服务器的地址发给ISP的DNS服务器,DNS服务器拿到.com域名服务器的Ip后,就去这个IP询问www.baidu.com这个域名的ip。这个.com域名服务器并不知道www.baidu.com的地址,但是它知道baidu.com域名服务器的地址。于是它将这个地址返回给ISP的DNS服务器,然后ISP的DNS服务器再去根据这个地址访问baidu.com的服务器,查询www.baidu.com的ip。
二、Socket发送http数据
有了IP之后,http协议的默认端口是80。有了端口和IP,那么就可以通过TCP协议的三次握手建立连接,然后通过socket发送HTTP数据。
三、服务器接受数据
服务器的有线程一直在监听相应的端口,有socket请求到达时候,就将请求做分发。这个时候有负载均衡的策略,Ngix根据相应 的负载均衡策略,将请求发送到不同的机器上。
四、服务器处理数据
SpringMVC中的DispatcherServlet拦截到请求,然后DispatcherServlet将HandlerMapping发送请求,HandlerMapping返回封装了执行链的handler给DispatcherServlet。然后DispatcherServlet再将Handler将给Handler Adapter,Handler Adapter执行handler,然后返回ModelAndView给DispatcherServlet。接下来DispatcherServlet将ModelAndView交给视图解析器,视图解析器返回相应的视图。然后视图交给Velocity渲染。
五、服务器返回数据
服务器通过socket发送response数据给浏览器。
六、浏览器收到数据
解析html构建dom树->构建render树->布局render树->绘制render树
- 从浏览器输入URL到网页加载完成,发生了什么?
- 从输入url到加载界面完成,发生了什么?
- 浏览器从输入URL到页面加载完成发生了什么
- 从输入URL到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情( by vczero)
- 从输入URL到页面加载完成的过程中都发生了什么
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 《从输入URL到页面加载完成发生了什么》学习过程
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 一个页面从输入URL 到页面加载显示完成,这个过程中都发生了什么?
- atexit函数总结
- python的GUI
- 一 netlink机制
- Python的file()和open()方法的区别
- 论文笔记:Deep Learning [nature review by Lecun, Bengio, & Hinton]
- 从浏览器输入URL到网页加载完成,发生了什么?
- 捡框架的小男孩--Spring(二)
- 项目知识点
- Services
- 一步一步学springboot (七)集成mybatis及druid数据源
- 使用全注解配置Spring MVC
- 剑指offer-数组中只出现一次的数字
- swustoj哈特13的235(1121)
- 关于JQ的AJAX