一个完整的网络访问过程的分析(宏观角度分析)
2016-12-01 16:37
211 查看
我们以访问百度为例,来一步步分析一个完整的网络访问过程是怎样的
当我们输入http://www.baidu.com,然后按回车,发生的一系列事情如下:
在这里我们通过使用ie的F12开发人员工具进行分析:
1、首先,会进行一次DNS域名解析(就是找到对应的IP地址),DNS解析有将近10步,分别是
1a、检查浏览器缓存中是否有对应映射,有就结束;1b、检查操作系统缓存(hosts文件)中是否有对应映射;1c、访问我们电脑配置中的DNS(即LDNS)中看是否有对应映射
大约80%的域名解析在这就完成了;1d、直接到root server请求解析; 1e、根域名服务器返回给LDNS一个所查域的主域名服务器(gTLD);1f、LDNS向主域名服务器发出解析请求;1g、gTLD查找并返回对应的name server(就是你注册的域名服务器)域名服务器地址;1h、name server查找到对应映射将结果返回给LDNS;1i、LDNS缓存这个映射,并把结果返回给用户
2、查找到对应的ip之后,浏览器就会向对应的ip发送一个http请求,具体的请求如下图:
对于每个字段的含义,在此处就不一一解释了
3、请求到达服务器之前可能还会经过CDN、反向代理服务器等,如下图
4、到达真正的服务器端之后,服务器那边经过复杂的业务逻辑(有的也许很简单),返回给浏览器一个响应,如下图:
5、浏览器接收到响应结果后会进行渲染,大体的渲染过程是这样的:
5a、浏览器解析html源码,然后创建一个 DOM树。
在DOM树中,每一个HTML标签都有一个对应的节点,并且每一个文本也都会有一个对应的文本节点。
DOM树的根节点就是 documentElement,对应的是html标签。
5b、浏览器解析CSS代码,计算出最终的样式数据。
对CSS代码中非法的语法她会直接忽略掉。
解析CSS的时候会按照如下顺序来定义优先级:浏览器默认设置,用户设置,外链样式,内联样式,html中的style。
5c、构建出DOM树,并且计算出样式数据后,下一步就是构建一个 渲染树(rendering tree)。
渲染树和DOM树有点像,但是是有区别的。DOM树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等。
而且一大段文本中的每一个行在渲染树中都是独立的一个节点。
渲染树中的每一个节点都存储有对应的css属性。
5d、一旦渲染树创建好了,浏览器就可以根据渲染树直接把页面绘制到屏幕上。
当然,如果渲染的过程中发现还有一些静态资源(如图片、js等)的时候又会发出http请求
6、至此,一个完整的网站访问流程就结束了。当然,其中还有很多的细节,这里只是大体的分析了一下流程。关于更具体的网络的内容(包括包的流动等)可以查看计算机网络一书(详细的讲解了从应用层到传输层到网络层再到网络接口层是怎样一步步执行的,当然还有路由的选择等等)。当然,服务器那边是如何进行数据的接收、处理的,也是值得我们深究的内容。
当我们输入http://www.baidu.com,然后按回车,发生的一系列事情如下:
在这里我们通过使用ie的F12开发人员工具进行分析:
1、首先,会进行一次DNS域名解析(就是找到对应的IP地址),DNS解析有将近10步,分别是
1a、检查浏览器缓存中是否有对应映射,有就结束;1b、检查操作系统缓存(hosts文件)中是否有对应映射;1c、访问我们电脑配置中的DNS(即LDNS)中看是否有对应映射
大约80%的域名解析在这就完成了;1d、直接到root server请求解析; 1e、根域名服务器返回给LDNS一个所查域的主域名服务器(gTLD);1f、LDNS向主域名服务器发出解析请求;1g、gTLD查找并返回对应的name server(就是你注册的域名服务器)域名服务器地址;1h、name server查找到对应映射将结果返回给LDNS;1i、LDNS缓存这个映射,并把结果返回给用户
2、查找到对应的ip之后,浏览器就会向对应的ip发送一个http请求,具体的请求如下图:
对于每个字段的含义,在此处就不一一解释了
3、请求到达服务器之前可能还会经过CDN、反向代理服务器等,如下图
4、到达真正的服务器端之后,服务器那边经过复杂的业务逻辑(有的也许很简单),返回给浏览器一个响应,如下图:
5、浏览器接收到响应结果后会进行渲染,大体的渲染过程是这样的:
5a、浏览器解析html源码,然后创建一个 DOM树。
在DOM树中,每一个HTML标签都有一个对应的节点,并且每一个文本也都会有一个对应的文本节点。
DOM树的根节点就是 documentElement,对应的是html标签。
5b、浏览器解析CSS代码,计算出最终的样式数据。
对CSS代码中非法的语法她会直接忽略掉。
解析CSS的时候会按照如下顺序来定义优先级:浏览器默认设置,用户设置,外链样式,内联样式,html中的style。
5c、构建出DOM树,并且计算出样式数据后,下一步就是构建一个 渲染树(rendering tree)。
渲染树和DOM树有点像,但是是有区别的。DOM树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等。
而且一大段文本中的每一个行在渲染树中都是独立的一个节点。
渲染树中的每一个节点都存储有对应的css属性。
5d、一旦渲染树创建好了,浏览器就可以根据渲染树直接把页面绘制到屏幕上。
当然,如果渲染的过程中发现还有一些静态资源(如图片、js等)的时候又会发出http请求
6、至此,一个完整的网站访问流程就结束了。当然,其中还有很多的细节,这里只是大体的分析了一下流程。关于更具体的网络的内容(包括包的流动等)可以查看计算机网络一书(详细的讲解了从应用层到传输层到网络层再到网络接口层是怎样一步步执行的,当然还有路由的选择等等)。当然,服务器那边是如何进行数据的接收、处理的,也是值得我们深究的内容。
相关文章推荐
- 一个完整的网络访问过程的分析(从计算机网络的角度)
- 结合源代码分析一个完整的中断过程【转】
- 在一个浏览器中访问网页的完整流程逻辑过程
- 结合源代码分析一个完整的中断过程
- 代码清单7-4是一个比较完整的数据访问组件,下面分析这些代码的具体实现。
- 输入网址访问一个网站的全过程分析
- 从前端和后端两个角度分析jsonp跨域访问(完整实例)
- 【计算机网络】访问一个网页经历了哪些过程
- 从前端和后端两个角度分析jsonp跨域访问(完整实例)
- 访问www.baidu.com后会发生什么(一次完整的网络通讯过程)
- OSI七层与TCP/IP五层网络架构,个人理解,通过一个http请求的全过程,分析在协议栈中的流转过程
- 结合源代码分析一个完整的中断过程
- 图的深度优先查找(DFS: Depth -First Search) (1)问题分析 DFS可从任意一个顶点开始访问,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个顶点只能访问
- 用网络分析发现ARP扫描和ARP病毒木马的全过程
- 一个从信息和政治角度分析云计算的好文章
- win xp是host, vm里再装win 2003和和一个xp, host要能与 vm间互相访问的目的(要达到电脑没有接入任何网络)
- 软考网络规划设计师学习笔记连载之十二(2.2网络分析与设计过程)
- 使用Power Designer进行一个完整的系统分析和设计
- 一个完整的.net作的ObjectDataSource的数据类访问组件
- 太tmd恐怖了,一个搞破解的过程分析。