`
GavinHsueh
  • 浏览: 70868 次
文章分类
社区版块
存档分类
最新评论

“天龙八步”细说浏览器输入URL后发生了什么

阅读更多

 

本文摘要:
1.DNS域名解析;
2.建立TCP连接;
3.发送HTTP请求;
4.服务器处理请求;
5.返回响应结果;
6.关闭TCP连接;
7.浏览器解析HTML;
8.浏览器布局渲染;
总结

 

 


输入网址

当我们在浏览器输入网址并回车后,一切从这里开始。

一、DNS域名解析

我们在浏览器输入网址,其实就是要向服务器请求我们想要的页面内容,所有浏览器首先要确认的是域名所对应的服务器在哪里。将域名解析成对应的服务器IP地址这项工作,是由DNS服务器来完成的。

客户端收到你输入的域名地址后,它首先去找本地的hosts文件,检查在该文件中是否有相应的域名、IP对应关系,如果有,则向其IP地址发送请求,如果没有,再去找DNS服务器。一般用户很少去编辑修改hosts文件。

 

DNS服务器层次结构

 


 

浏览器客户端向本地DNS服务器发送一个含有域名www.cnblogs.com的DNS查询报文。本地DNS服务器把查询报文转发到根DNS服务器,根DNS服务器注意到其com后缀,于是向本地DNS服务器返回comDNS服务器的IP地址。本地DNS服务器再次向comDNS服务器发送查询请求,comDNS服务器注意到其www.cnblogs.com后缀并用负责该域名的权威DNS服务器的IP地址作为回应。最后,本地DNS服务器将含有www.cnblogs.com的IP地址的响应报文发送给客户端。

 

从客户端到本地服务器属于递归查询,而DNS服务器之间的交互属于迭代查询

正常情况下,本地DNS服务器的缓存中已有comDNS服务器的地址,因此请求根域名服务器这一步不是必需的。

二、建立TCP链接

费了一顿周折终于拿到服务器IP了,下一步自然就是链接到该服务器。对于客户端与服务器的TCP链接,必然要说的就是『三次握手』。


三次握手

客户端发送一个带有SYN标志的数据包给服务端,服务端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束,连接成功。

上图也可以这么理解:

客户端:“你好,在家不,有你快递。”

服务端:“在的,送来就行。”

客户端:“好嘞。”

三、发送HTTP请求

与服务器建立了连接后,就可以向服务器发起请求了。这里我们先看下请求报文的结构(如下图):


请求报文

在浏览器中查看报文首部(以google浏览器为例):


 

请求行包括请求方法、URI、HTTP版本。首部字段传递重要信息,包括请求首部字段、通用首部字段和实体首部字段。我们可以从报文中看到发出的请求的具体信息。具体每个首部字段的作用,这里不做过多阐述。

四、服务器处理请求

服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求,诸如Apache、Ngnix、IIS等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端。


服务器处理请求

五、返回响应结果

在HTTP里,有请求就会有响应,哪怕是错误信息。这里我们同样看下响应报文的组成结构:


响应报文

在响应结果中都会有个一个HTTP状态码,比如我们熟知的200、301、404、500等。通过这个状态码我们可以知道服务器端的处理是否正常,并能了解具体的错误。

状态码由3位数字和原因短语组成。根据首位数字,状态码可以分为五类:


状态码类别

六、关闭TCP连接

为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次握手。


4次握手

上图可以这么理解:

客户端:“兄弟,我这边没数据要传了,咱关闭连接吧。”

服务端:“收到,我看看我这边有木有数据了。”

服务端:“兄弟,我这边也没数据要传你了,咱可以关闭连接了。”

客户端:“好嘞。”

七、浏览器解析HTML

准确地说,浏览器需要加载解析的不仅仅是HTML,还包括CSS、JS。以及还要加载图片、视频等其他媒体资源。

 

浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

要注意的是,浏览器的解析过程并非是串连进行的,比如在解析CSS的同时,可以继续加载解析HTML,但在解析执行JS脚本时,会停止解析后续HTML,这就会出现阻塞问题,关于JS阻塞相关问题,这里不过多阐述,后面会单独开篇讲解。

八、浏览器布局渲染

根据渲染树布局,计算CSS样式,即每个节点在页面中的大小和位置等几何信息。HTML默认是流式布局的,CSS和js会打破这种布局,改变DOM的外观样式以及大小和位置。这时就要提到两个重要概念:replaint和reflow。

 

replaint:屏幕的一部分重画,不影响整体布局,比如某个CSS的背景色变了,但元素的几何尺寸和位置不变。

reflow: 意味着元件的几何尺寸变了,我们需要重新验证并计算渲染树。是渲染树的一部分或全部发生了变化。这就是Reflow,或是Layout。

所以我们应该尽量减少reflow和replaint,我想这也是为什么现在很少有用table布局的原因之一。

最后浏览器绘制各个节点,将页面展示给用户。

总结

本文系统地讲述从浏览器从输入域名到最终页面展示的整体流程。篇幅所限,本文的每一步讲述其实并不全面,所以后面我会单独就域名解析、HTTP请求/响应、浏览器的解析、渲染等内容单独开篇讲解,感兴趣的朋友也可以关注我的个人博客

 

 

参考:

http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/

http://taligarsiel.com/Projects/howbrowserswork1.htm

https://www.zhihu.com/question/34873227

图片制作工具:Axure、PS、 Ulead GIF Animator、 ProcessOn

0
0
分享到:
评论

相关推荐

    天龙浏览器 v1.4

    卓越无比的多页面浏览器,无限制多开窗口,高效的内存释放功能,节省50%系统资源,开多个窗口后玩网游不卡。界面亲切友好,保留IE用户操作习惯的同时,全部兼容IE收藏夹、历史、链接等内容。不兼容其它插件,有效...

    天龙八部宝宝成长查询,输入资质参数查询未知成长

    在《天龙八部》这款经典的大型多人在线角色扮演游戏(MMORPG)中,"宝宝"指的是玩家可以捕捉和培养的各种宠物,它们陪伴玩家在游戏中征战四方,提供各种战斗和非战斗技能的支持。"宝宝成长查询"是游戏中的一个重要...

    媒介策划之天龙八步.ppt

    在“媒介策划之天龙八步”中,这一概念被形象地比喻为武侠小说中的招式,揭示了媒介策划的系统性和步骤性。 首先,媒介策划不是简单的科学,而是一种融合了艺术与科学的实践活动。它要求策划人员不仅要有丰富的理论...

    PHP+bootstrap快速生成MySql数据字典-天龙八步

    PHP+bootstrap快速生成MySql数据字典-天龙八步

    STM32F103C8步进电机定时器异步驱动之天龙八步.zip

    项目中的"STM32F103C8步进电机定时器异步驱动之天龙八步"可能包含了详细的代码示例、原理图以及相关教程,帮助开发者理解如何将这些理论应用到实际项目中。通过学习和实践,开发者可以掌握如何利用STM32F103C8微控制...

    天龙八部,CentOS服务端600个天龙常规函数

    600个天龙常规函数

    天龙八部GM工具(易语言)源码

    天龙八部GM工具(易语言)源码 易语言源码

    DENON天龙PMA-60操作说明书.pdf

    兼容各种数字输入设备,该设备安装有两个光学数字输入接口和一个同轴数字输入接口,能够连接各种电视和其他数字输入设备。 无线连接该设备支持蓝牙连接,能够将启用蓝牙的设备(例如智能手机和平板电脑)连接到本机...

    天龙 AVR-1912 高清 说明书

    【天龙 AVR-1912 高清说明书】提供了关于如何正确安装、连接和设置7.1声道家庭影院系统的详细指南。这款天龙功放是D&M Holdings公司的产品,致力于环保,提倡无纸化操作。用户可以通过配套的CD-ROM获取更详尽的操作...

    DENON天龙AH-C820W快速说明书.pdf

    - 更多操作:如需了解其他功能和详细操作步骤,可以在网络浏览器中输入指定URL访问Web手册,地址是:manuals.denon.com/AHC820W/ALL/EN/Web Manual。 DENON天龙AH-C820W通过蓝牙连接,提供了便捷的无线音乐体验,...

    TLBB.rar_Axp天龙_Axp文件_tlbb_天龙_天龙八部axp

    天龙八部axp文件更新功能实现代码。包括axpview和axpUpdater

    天龙1610说明书

    根据提供的文件内容,以下是关于天龙AV功放AVR-1610的详细知识点: 1. 设备型号及定位:天龙AV功放AVR-1610是天龙品牌中次世代低端型号,与AV590型号类似,定位于入门级市场,满足基本家庭影院需求。 2. 安全警告...

    天龙dsd500用户指导

    ### 天龙dsd500用户指导 #### 一、产品概述 天龙dsd500(根据上下文推测可能是指Denon Cocoon系列中的一个型号)是一款集成了现代音频技术的高品质音响系统。它支持多种音频设备连接方式,并具备直观的操作界面,...

    DENON天龙AVR-X1600H操作说明书.pdf

    《DENON天龙AVR-X1600H操作说明书》是DENON天龙公司针对其集成网络AV接收器AVR-X1600H提供的一份详细使用指南。这份说明书旨在帮助用户了解如何正确安装、连接和操作该设备,以实现最佳的音响体验。 在内容部分,...

    天龙AVR3312说明书

    ### 天龙AVR3312:7.1声道家庭影院功放的全面解析 #### 一、产品概述 天龙AVR3312是一款高性能的7.1声道家庭影院功放,专为追求极致音效体验的影音爱好者设计。作为家庭娱乐系统的中心,它能够提供沉浸式环绕声...

    雀巢危机公关:“天龙八步”将机会步步逼走.docx

    面对这场危机,雀巢公司采取了一系列公关策略,但最终被评价为“天龙八步”般的失败案例。 1. **第一步:自视清高,装聋作哑** 雀巢公司在得知产品存在问题后,选择了沉默应对,错过了危机初期的黄金处理时间。...

    天龙1807说明书

    ### 天龙1807音响功放的关键知识点 #### 一、安全使用与注意事项 - **电击警告**:用户不可自行打开机器外壳进行维修,所有内部组件均由专业技术人员负责处理。 - **非绝缘“危险电压”警告**:产品内部存在非绝缘...

    天龙八部2系统刷重楼代码

    在深入探讨“天龙八部2系统刷重楼代码”的知识点之前,我们首先需要理解几个核心概念:《天龙八部》是一款深受玩家喜爱的大型多人在线角色扮演游戏(MMORPG),其游戏背景基于金庸先生的经典武侠小说《天龙八部》,...

    天龙FLASH窗口登录器

    【天龙FLASH窗口登录器】是一款专为网络游戏《天龙八部》设计的客户端登录工具,采用E语言编写,提供了一种便捷的方式让玩家通过FLASH界面进入游戏世界。这款登录器以其独特的技术特点和功能,优化了玩家的游戏体验...

    DENON天龙AVR-X580BT操作说明书.pdf

    后面板则提供各种输入和输出端口,如HDMI(支持ARC/eARC)、光纤、同轴、模拟音频输入、USB端口以及扬声器接线柱等。 在连接方法方面,说明书详细指导了如何连接扬声器,强调了标准连接方式,以及如何根据电视机的...

Global site tag (gtag.js) - Google Analytics