浏览器章节详解(多文章搬运总结)

搬运:细说浏览器输入URL后发生了什么 - 掘金 (juejin.cn)

浏览器详解

1.浏览器输入URL时候发生了什么?

[1]地址解析:检验输入url的合法性(正则检验*),看输入的是url还是搜索内容,然后通过浏览器默认搜索引擎的服务器查找进行地址转换url查询。

[2]DNS域名解析,涉及到了计网的相关知识点。

在客户端输入 URL 后,会有一个递归查找的过程,从浏览器缓存中查找->本地的hosts文件查找->找本地DNS解析器缓存查找->本地DNS服务器查找,这个过程中任何一步找到了都会结束查找流程。
若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址

本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起
至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起

迭代查询会使得服务器的事件负载增加,所以在本地DNS服务器未命中后会采取迭代查找(自行配置DNS服务器)–多级缓存就不再多说了,计网总结笔记都有。

[3]等待 TCP 队列:Chrome 有个机制,同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态.(网络请求进程)


这一点比较重要,引入一些新知识(杂):

TCP连接会存在TCP队列,那加载大量图片或者其他资源的时候,该怎么解决卡顿呢?(待解决)

多次HTTP报文的发送,存在有多次报文断触的情况产生,那需要采用一些什么策略减少这些额外的消耗呢?

报文头设置connection:keep-alive,便可以保持端到端的tcp链接,避免了tcp链接建立和ssl的消耗。


[4]建立TCP连接:三次握手以及对应解决了哪些问题.https是由HTTP + SSL / TLS 两部分组成,待三次握手TCP完成以后,https会进行SSL握手。

SSL握手引入:隔离在TCP层与HTTP层的加密层,握手的流程为

img

需要经历双密匙交流的加密后–借加密信息对报文进行处理。接下来我们做抓包解析(使用Fiddler做抓包解析*)

[5]进行HTTP报文的发送,这其中涉及到了多种缓存验证机制。

[6]四次挥手,报文发送完毕,终止态是如何进入的(*)

TCP连接在一段时间内是不会断的,因为建立新连接太耗资源,等待时间久,多个HTTP请求会复用TCP通道,过了最大允许的时间就会自动断开,和页面渲染是分开的,没有等待关系。

这里我想引入一个之前一直思考的问题,服务器只开启一个端口,该如何为多用户提供服务。

1.端口与端口之间通过套接字建立通信,TCP的套接字唯一标识是四元组形式(源IP地址,源端口号,目的IP地址,目的端口号)。

2.服务器在端口收到请求后,用四种组合形成唯一标识,分配特定套接字。多个套接字可以拥有相同的目的端口80.

3.通过任务队列等机制吧,实现信息处理(*隐藏实现),然后通过套接字回返报文(*隐藏实现)

[7]重定向:(基于此的状态码301 和 302)根据服务器解析报文回返的location字段访问新定向的导航。

[8]浏览器进行渲染页面–>第二大点

2.浏览器如何渲染页面(*详)多优化笔记

浏览器章节详解(多文章搬运总结)_第1张图片

浏览器章节详解(多文章搬运总结)_第2张图片

细说浏览器输入URL后发生了什么 - 掘金 (juejin.cn)

【前端工程师面试宝典】学习说明_互联网校招面试真题面经汇总_牛客网 (nowcoder.com)

根据上图的流程做一个简单的介绍

浏览器解析器关注点一:

当解析器发现非阻塞资源,例如一张图片,浏览器会请求这些资源并且继续解析。当遇到一个 CSS 文件时,解析也可以继续进行,但是对于

你可能感兴趣的:(前端,网络,服务器,chrome)