浏览器输入url后发生了什么?

在浏览器输入url后会发生的过程:

1.DNS对域名进行解析;
2.建立TCP连接(三次握手);
3.发送HTTP请求;
4.服务器处理请求;
5.返回响应结果;
6.关闭TCP连接(四次挥手);
7.浏览器解析HTML;
8.浏览器布局渲染;

1.浏览器对输入的地址补全,然后DNS域名解析

 如果你搜索的是baidu.com的时候,实际访问的还是http://www.baidu.com,浏览器会将你没输入全的地址进行补充。

2、找到服务器地址,建立TCP连接(三次握手)

这里举个简单例子来了解什么是三次握手;

我(用户)去银行取钱,对银行的工作人员(服务器)说我要取一个亿(发送一个SYN),工作人员会说确定吗(这里接收到了请求,并且返回一个ACK+SYN),之后我(用户)就会说确定(接收到了返回的信息并且会返回一个ACK),然后就开始服务。这就是三次握手。

为何是三次握手不是两次四次?
在工作人员对你说"你确定吗?"的时候你没有回复,它们是不会继续进行操作的,这样你就会继续问,“我要取钱”,就又会来一个工作人员,这样一直持续下去,钱没取出来人站了一排,服务器就会宕机。所以一定要三次握手。

3.发送HTTP请求

浏览器会将请求包装成请求报文,如 GET / HTTP/1.0 (请求的方法 请求的URL 请求所使用的协议)
头部信息:User-Agent Host等成对出现的值
主体:请求头部和主体之间有一个回车换行。如果是get请求,则没有主体部分,post请求有主体部分。

4、服务器处理请求

服务器接收到请求后,就会返回数据,比如一个html页面。

5、返回响应结果

如果服务器返回的content-type是accept中的任何一个,浏览器都能解析,并直接展示在网页上。
浏览器能直接处理很多种格式,并直接呈现在网页中,并不限于accept中规定的字段。

6.关闭TCP连接(四次挥手)

还是上面的例子:
客户说我处理完我要做的事情了(发送一个FIN),工作人员说收到(发送ACK),我也处理完我要做的事情了,然后客户会说我没有想办理的业务了,再见吧;工作人员说好的。至此进入TIME_WAIT状态(保留现场业务信息),等到2MSL后,才把这个柜台信息清理了(连接最终关闭,并且把业务信息都清理了)。

7.浏览器解析HTML

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

8.浏览器布局渲染

html解析->外部样式、脚本加载->外部样式执行->外部脚本执行->html继续解析->dom树构建完成->加载图片->页面加载完成

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值