地址栏输入 URL 敲下回车后发生了什么?

URL解析

DNS查询

TCP连接

输入URL后

HTTP请求

响应请求

页面渲染


一、简单分析
简单的分析,从输入 URL到回车后发生的行为如下:
●URL解析
●DNS 查询
●TCP 连接
●HTTP 请求
●响应请求
●页面渲染
二、详细分析
URL解析
首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行对应操作
URL的解析第过程中的第一步,一个url的结构解析如下:

对请求的资源有更加纤细的描述

确定服务器

确定服务器中的具体应用确定本次要访问的资源的位置

HTTP://140.143.201.230:888/PUBLIC/COURSE/COURSE?ID-123&PWD-45678#HOME

端口,一般默认

协议,一般是

域名,对应的是

路径

锚点链接

查询字符串

是80,可以省略

HTTP或者是HTTPS

IP地址


DNS查询
在之前文章中讲过DNS的查询,这里就不再讲述了
整个查询过程如下图所示:

根域名服务器

顶级域名服务器

负责BAIDU.COM

.COM 域名由

迭代查询

的服务器应该知

XOX 管理.

道,你去问问它

你去问问它

BAIDU.COM 权限域名服务器

查询得知

WWW.BAIDU.COM 对应

的IP 地址为 XXXXXX

'7

本地域名服务器

1

递归查询

我要访问 WWW.BAIDU.COM.

请告诉我它的IP 地址

网络客户端(主机)


最终,获取到了域名对应的目标服务器IP地址
TCP连接
在之前文章中,了解到tcp是一种面向有连接的传输层协议
在确定目标服务器服务器的IP地址后,则经历三次握手建立TCP连接,流程如下:

三次握手

标有SYN的

数据包发给你了

00

明白!我收到你发给我的

数据包了!(并发送标有)

SYN/ACK的数据包)

发送端

接收端

明白!

(发送标有ACK

的数据包)


发送 http 请求
当建立tcp连接之后,就可以在这基础上进行通信,浏览器发送 http 请求到目标服务器
请求的内容包括:
●请求行
●请求头
●请求主体

请求方法

-HTTP协议及版本

请求URL

POST

CHAPTER17USER.HTML HTTP/1.1

TACCEPT:IMAGE/JPEG,APPLICATION/X-MS-APPLICATION,..........

报文头

HTTP://LOCALHOST:8088/CHAPTER17/USER/REGISTER.HTML?

REFERER:

CODE100&TIME123123

ACCEPT-LANGUAGE:Z

ZH-CN

LUSER-AGENT:MOZILLA/4.0 (COMPATIBLE;MSIE 8.0: WINDOWS NT 6.1;

CONTENT-TYPE:APPLICATION/X-WWW-FORM-URLENCODED

HOST:LOCALHOST:8088

CONTENT-LENGTH:112

CONNECTION:KEEP-ALIVE

报文体

CACHE-CONTROL:NO-CACHE

LCOOKIE:JSESSIONID-24DF2688E37EE4F66D9669D2542AC17B

NAME-TOM&PASSWORD-1234&REALNAME-TOMSON


响应请求
当服务器接收到浏览器的请求之后,就会进行逻辑操作,处理完成之后返回一个HTTP响应消息,包括:
●状态行
●响应头
●响应正文

HTTP/1.1 200 OK

状态行

DATE:SAT,31 DEC 2005 23:59 GNT

CONTENT-TYPE:TEXT/HTML;CHARSET-ISO-8859-1

CONTENT-LENGTH:122

消息报头

<HTM1>

空行

<HEAD>

TITLE>WROX HOMEPAGE</TITIE>

/HEAD>

下面的就是响应正文了

<BODY>

<!-BODY GOES HERE -->

</BODY>

</HTM1>


在服务器响应之后,由于现在http默认开始长连接keep-alive,当页面关闭之后,tcp链接则会经过四次挥手完成断开
页面渲染
当浏览器接收到服务器响应的资源后,首先会对资源进行解析:
●查看响应头的信息,根据不同的指示做对应处理,比如重定向,存储cookie,解压gzip,缓存资源等等
●查看响应头的 Content-Type的值,根据不同的资源类型采用不同的解析方式
关于页面的渲染过程如下:
●解析HTML,构建 DOM 树
●解析 CSS ,生成 CSS 规则树
●合并 DOM 树和 CSS 规则,生成 render 树
●布局 render 树( Layout / reflow ),负责各元素尺寸、位置的计算
●绘制 render 树( paint ),绘制页面像素信息
●浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上

SCRIPT

HTML

STYLE

1.阻塞后续

1.解码

2.会先加载后面的CSS

2.预解析

匹配规则

容错机制

3.符号化

4.构建树

CSS规则树

DOM树

1.计算2.级联

渲染树

回流(REFLOW)

重新渲染的过程

1.节点的几何属性

重绘(REPAINT)

1.将像素发给GPU

2.GPU合并浪染层,3D加速

显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值