前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >产品经理学技术:在浏览器输入URL回车后发生了什么

产品经理学技术:在浏览器输入URL回车后发生了什么

作者头像
产品的技术小课
发布2021-11-02 14:45:46
7630
发布2021-11-02 14:45:46
举报

这是HTTP网络系列的第一篇文章。

计算机与网络设备要相互通信,必须要遵循一定的规则,我们把这种规则称为协议。协议会规定好谁先发起请求,怎么寻找服务器地址,怎么获取请求内容,怎么响应请求等等。

与互联网相关的协议集合统称为TCP/IP。而HTTP协议只是TCP/IP协议的一部分。下面只会讲到与HTTP相关的内容。

大致流程

1、URL解析

2、DNS解析

3、HTTP连接

4、服务器处理请求

5、浏览器接受响应

6、浏览器渲染页面

01

URL解析

●假设我们在浏览器输入URL:http://www.a.com/index.html?b=1

首先浏览器会判断你输入的地址是合法的URL还是待搜索的关键词,如果是合法的URL,则会解析出域名:www.a.com,然后进入下一步。

02

DNS解析

● 在浏览器输入的只是服务器域名,ip地址才是目标服务器的真实地址,所以为了寻址,要先经过DNS解析,把域名转化成IP地址。

03

HTTP连接

● 解析好ip地址后,浏览器会发起一条HTTP请求,和目标服务器建立一条连接来通信。

● 服务器会对连接请求做出响应,表示同意建立连接。

04

服务器处理请求

● 服务器根据http协议规定,从请求报文里面拿到请求的子路径:

/index.html?b=1。如果请求的文件是真实存在的,比如html、css、js、图片等,则直接把文件返回。否则就要走到后台代码的匹配路由上面。

● 如果走的是后台代码的匹配路由,则会执行后台相应的逻辑,如果逻辑里面有查询数据库的请求,则会向数据库服务器发起一条查询数据的请求,等待数据库的数据返回后,最后才把数据返回给前端。

● 数据准备好后,服务器开始构建响应,创建一条http响应报文,把资源信息放到响应体里面开始返回。

05

浏览器接受响应

● http请求响应,都有一个状态码返回,用来标记这次返回的状态。一般有以下几种状态码:

200:表示成功

302:表示重定向

404:表示找不到资源

405:表示浏览器请求类型错误(比如把get请求当作post请求来用)

500:表示服务器内部错误

502:网关错误

504:timeout,表示服务器在规定时间内没有返回资源

浏览器会根据状态码,做出相应的动作,遇到200会接受正常返回信息,开始渲染页面。遇到302,则会根据http响应头的location字段,再次发起一次地址是location的网络请求,遇到4开头和5开头的错误,则不会正常渲染,会提示相应的错误。

06

浏览器渲染页面

不同的浏览器,渲染过程也不完全相同,但是大概流程是一样的。

一个web前端网页大概由三部分构成,html组成了这个网页的结构,比如按钮,下拉框,表格。css展示了网页的样式,比如背景,字体颜色大小。javascript负责执行前端的一些事件,比如点击事件、悬浮事件,还有跟后台的交互。

1、HTML解析

浏览器拿到html网页后,会利用html解析规则,一行一行地往下解析,然后构建成一棵DOM节点的树。HTML解析完成后,浏览器会通知DOM解析完成。但是如果在解析html的过程中,遇到了js代码,会暂停解析,等执行完了js代码才继续往下解析。

2、CSS解析

解析完html后,开始解析css代码,也会构建出一棵css的规则树,然后把html和css结合起来,开始渲染页面,我们就可以看到眼前的网页啦。

3、javascript解析执行

如果有js代码,则会根据js的语法进行语法解析,按顺序执行js代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 产品的技术小课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库专家服务
数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档