谷歌浏览器服务器协议url,谷歌浏览器在地址栏输入URL到页面展示时中间发生了什么?...

本文浏览器以谷歌浏览器举例说明,开始之前,你需要知道目前谷歌浏览器是多进程浏览器,进程包括网路进程,渲染进程,浏览器进程等多个进程(以后有空会分享一个谷歌浏览器的发展史),那么到底这个过程都发生了什么呢?且听我一步一步分析~首先这个过程可以从宏观和微观两个方面着手。 宏观:大概只有两步:导航流程-->渲染流程;本文主要叙述导航阶段。 微观:大概有25步左右,但是当遇到特殊情况,比如出现重定向,缓存,浏览器请求下载资源的时候,会少于15步。

1,首先当用户在地址栏输入信息的时候,浏览器会首先辨认你搜索的是一个关键字的索引还是一个网址,如果是一个索引内容的时候,就会把你的关键字+默认的搜索引擎合成新的URL;比如我在地址栏输入shanyeqiaozhi就会出现这样的拼接URL:google.com/searchq=shanyiqiaozhi&oq=shanyiqiaozhi&aqs=谷歌..69i57.3032j0j1&sourceid=谷歌&ie=UTF-8。 但是当你在地址栏直接搜索baidu.com的时候,这样的搜索符合URL规则,浏览器会根据URL协议,在baidu.com的前面加上协议变成合法的URL。(https://www.baidu.com)。

2,当你输入完内容之后,点击搜索或者按下回车键,浏览器前进后退箭头的后面那个循环标志会动起来,告诉页面开始进入loading状态,但是页面不会马上呈现新的页面,因为新的页面的相应数据并没有获取到。

3,此时,浏览器开始发起请求,浏览器进程构建请求头信息,通过进程间(上述的多进程)的通信(IPC)将URL请求发送到浏览器的网络进程中。

4,网络进程得到URL,首先会去本地缓存中查找是否有以前的缓存文件,如果找到,网络进程会拦截请求,停止操作,直接返回缓存数据。否则的话,会继续发送请求。

5,发送请求的第一步,请求DNS返回域名对应的IP和端口号,如果DNS数据缓存服务器也对当前的域名信息进行过缓存(如127.0.0.1一般代表localhost本地域名)。否则发起请求根据域名分析出来的IP和端口,如果没有端口,一般http默认的端口是80,https默认的端口是443。如果是https请求,还会进行TLS链接保证数据传输安全。

6,接下来会进入TCP链接,但是谷歌有个机制,在同一个域名之下,同时最多能建立6个TCP连接,如果当前的请求数量少于6个,会直接进行TCP连接,否则的话,会等待连接。

7,这一步涉及到底层传输数据,简而言之,TCP进行三次握手建立连接,此刻,http请求会加上TCP头部---包括源端口号,目的程序端口号和用于检验数据完整性的序号,向下传输,到达网络层,网络层在数据包上加上IP头部---包括源IP地址和目的IP地址,继续向下传输到底层,底层通过物理网络传输给目的服务器主机,目的服务器主机的网络层接收到了数据包,解析处IP地址,识别出数据部分,将解开的数据包向上传输到传输层,目的服务器的传输层接受到数据后,解析出TCP头部,识别端口,将解开的数据包向上传输到应用层,应用层HTTP解析请求头和请求体,如果需要重定向(后端可以重定向响应地址)HTTP直接返回HTTP响应数据的状态的code值为300/301,同时在请求头的location字段中附加重定向地址,浏览器则根据code和location进行重定向操作;如果不是重定向,首先服务器会根据请求头的if-none-match的值来判断请求资源是否被更新。如果没有更新,就返回304状态码,为了告诉浏览器以前的缓存数据你可以使用,就不用返回给你数据了,否则返回新数据,并且设置code为200。如果浏览器想让浏览器进行缓存数据的话,就在响应的头部加上字段:Cache-Contorl:Max-age=2000。此刻,响应数据又顺着应用层---传输层---网络层---底层(IP寻址)---网络层---传输层---应用层的顺序返回到浏览器的网络进程中。

8,网络进程此刻根据响应头的Content-Type字段进行判断响应数据的类型,如果是字节流类型,就将该请求交给下载管理器,该导航流程就结束了,不再进行。如果是HTML类型,就通知浏览器进程获取到文档进行渲染。

9,浏览器进程获取到通知,根据当前页面是否在同一站点(同根域名同协议)来决定是否开启新的渲染进程。如果是则复用父站点的渲染进程,否则,开启新的。(此刻完成渲染准备阶段,开始数据交流)

10,浏览器会发出“提交文档”的信息给渲染进程,渲染进程收到信息后,会和网络进程建立数据传输的“管道”直接进行数据的传输,文档数据传输完成后,渲染进程会返回“确认提交”的信息给浏览器进程。

11,浏览器收到“提交文档”之后,会更新浏览器的页面状态,包括了安全状态,地址栏的URL,前进后退的历史状态,并更新web页面,但此时web页面是空白页面。

12,至此,导航流程就算结束,开始进行到渲染阶段......

至于渲染阶段,渲染进程如果解析html文档,如何识别css文件进行排列页面。今日天色已晚,我们下回分解!

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div独占一行 html_web前端基础-HTML及CSS选择器

HTML及CSS选择器一、html基本结构二、html标签1、标题标签2、a标签3、img标签4、div和span标签5、列表标签6、表格标签7、form表单8、select下拉框标签9、textarea标签三、CSS1、css样式引入方式2、标签嵌套3、css选择器一、html基本结构html是一种超文本标记语言,进…

监控系统服务器如何配置,监控系统服务器的配置

监控系统服务器的配置 内容精选换一换裸金属服务器安装Agent后,裸金属实例出现在云监控服务管理控制台的“主机监控 > 弹性云服务器”列表中。主机监控Agent根据169.254.169.254提供的服务来判断是弹性云服务器还是裸金属服务器。如果该地址的路由被修改&#xf…

解析markdown_markdown-it 原理浅析

前言最近使用 markdown-it 比较多,也开发了一些插件,在这个过程中对源码进行了研读,最终写了这篇文章。需要了解细节的读者可以自行阅读文档。此文分为两个部分:原理剖析和原理应用(编写插件)。markdown-it…

获取网站服务器数据库,利用XmlHttp获取服务器数据库数据以表格的方式返回客户的代码示例...

以下示例,不使用任何的无刷新组件,直接通过XmlHttp完成!一、JS文件代码// JScript 文件二、ASHX文件代码using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.IO;using Syst…

第一次失效_特斯拉螺栓腐蚀失效分析_搜狐汽车

本文车型速览除了文章作者的主观观点外,我们正尝试基于全网可查的客观数据,为您提供中立、客观的参考依据:本文部分车型速览:展开微信扫码,直接一次看完附近所有城市低价(附近城市均有经销商可售卖至本市) 提交成功&am…

c#计算长方形的周长和面积公式_Java面向对象练习题之计算圆的面积和周长

创建一个圆Circle类。为该类提供一个变量r表示半径,一个常量PI表示圆周率;同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;为该类提供一个无参的构造方法,用于初始化r的值为4。在main方…

简单计算机面试题库及答案_试讲可以看教案吗?必看的面试考前问题解答

“皮卡皮卡!”教资面试倒计时4天啦快使尽全力发出你的十万伏特胜利就在前方部分小伙伴们还对教资面试存在种种疑惑下面牛奶为大家一一作出解答教师资格面试题目是如何确定的?答:面试题目分为试讲题目、结构化题目和答辩题目。▲试讲题目是考生在备课前&…

python输出读取的空格数目_Python 3基础教程: 输入和输出具体代码实例

在前面文章中,我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。输出格式美化Python两种输出值的方式: 表达式语句和 print() 函数。(第三种方式是使用文件对象的 write() 方法; 标准输出文件可以用 sys.stdout 引用。)如果你…

点击button后改变文字_27. 教你零基础搭建小程序:小程序的常见组件—button

筒子们,这一章接着讲Button 标签。开放能力的属性button标签的开放能力是指open-type 属性。其中,这个属性的合法值包括如下:这一部分呢,需要分为两个方式来演示。一是可在模拟器中直接看效果; 二是要通过真机调试看效…

语言把数据写入csv文件_把JSON/CSV文件打造成MySQL数据库

生活中,你我一定都看到过这种「xx元爆改出租屋」,「爆改小汽车」之类的文章,做为IT人,折腾的劲头一点也不差。软件开发过程中,你是否有时候,会拿着业务提供的一个个CSV或者JSON的数据文件,写个解…

SLF4JLoggerContext cannot be cast to LoggerContext

org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.LoggerContexthive启动时,一直报错,原因是 hadoop与hive的jar包冲突,下载对应版本的hadoop和hive 安装包,检查log相关的jar包是否对应,并进行 log4j 或 sjf4j 包的 排除和添加。

pacs定位线_C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向)在矢状面(从左手到右手)上的影像投影面交线。举个例子:右边的是MR(核磁共振)的某一帧切片,这是从头开始扫描,扫描到眼睛这个…

图片饱和度_摄影后期完全调色指南(三):饱和度与自然饱和度有什么区别?...

泼辣年度大课 | 摄影后期完全调色指南(一)摄影后期完全调色指南(二):详解色温与色调在上一篇教程里面我们讲到了全局色彩调整中的色温和色调工具,今天来讲解剩下的两个工具:饱和度与自然饱和度工具,这两个工具使用的频率也非常的高…

2023年大模型回顾

大家好,这里是最佳拍档,我是大飞 一年前的今天,ChatGPT发布 仅仅花了5天时间 ChatGPT的注册用户数量达到100万 创了互联网历史记录 两个月后,2023年1月 ChatGPT的月活用户数量达到1亿 火箭般蹿升的用户数量 预示了今年生成…

windows 下的文件对比工具

deffinity,一款专用于文件对比的工具,安装简单,使用方便 下载链接如下: https://www.appinn.com/diffinity-for-win/

18c分布式事务 oracle_浅谈ORACLE的分布式事务

平台环境: suk: linux as4 oracle 9201 primary: windows xp oracle 10.2.0.3 首先在primary数据库上建立测试数据。 SQL create table test as select * from dba_objects; Table created. SQL insert into test select * from test; 9873 rows created. SQ平台环境…

shell 中去掉末尾换行符

# 多行为一行 echo "aaa\ bbb\ ccc" # 结果 #aaabbbccc#多行还是多行 echo "aaa bbb ccc" #结果 #aaa #bbb #ccc

python五子棋游戏15*15_在STM32上运行五子棋小游戏(15x15)

本程序算法资料来自下面网站.----https://www.cnblogs.com/buptzym/archive/2012/06/20/2556052.html----先定义一个数组 用于存储整个棋盘的数据.u16 ChessBoard[15][15];//棋盘数据.一.己方下棋 基础函数.1.在屏幕上显示出来一个15*15的棋盘.void DrawTable(void)//画出15x15…

点名册_骑士新书《万界点名册》十万收藏火爆气势不减当年修真聊天群

最近好多人都在讨论圣骑士的传说新书《万界点名册》,新书还没有发布,起点就给了闪屏推荐,引得的很多读者心痒痒的想要看看到底是怎样的神作。所以才发布两万多字的新书投资人就快一万人了,收藏也突破了十万。这速度好像是坐了火箭…