浏览器背后的故事
当咱们在浏览器输入一个域名后,背后究竟发生了什么?html
第一步:当咱们输入域名后,在 DNS 服务器进行域名查询。前端
第二步:获得对应的 ip 地址。linux
第三步:浏览器根据 ip 向 web 服务器进行通讯发送请求,而通讯的协议就是 HTTP。webpack
第四步:web 服务器回传页面内容。web
第五步:浏览器收到回传信息的报文数据,进行渲染出咱们看得懂的页面。算法
无状态
http协议是无状态协议,无状态是指协议对于处理没有记忆能力。如果后续再处理同样的内容,需要前面的信息必须重传,这样可能导致每次连接传送的数据量增大;另一方面,在服务器不需要先前信息它的应答速度就快
协议分析
cdn
cdn服务器本质上就是一层缓存,并不是数据源。加快了访问的平均速度
比如访问cdn获取图片时,cdn里并没有这张图片的数据,则需要回溯到数据源取出图片数据再放到cdn上。在下次访问cdn时,只要缓存不过期,就能命中缓存直接返回。
具体访问流程:
-
请求本地缓存(浏览器、操作系统缓存)
-
请求最近的DNS服务器缓存(比如家里的路由器)
-
请求DNS系统(返回数据源地址)
-
请求数据源地址(根域名、一级域、二三级域服务器,返回离用户最近的(CNAME:CDN分配的域名别名)IP)(通过CDN专用的DNS调度系统)
- 得到CDN节点IP
-
请求访问节点获得资源
http验证客户端身份(鉴权)
- cookie和session
- token(jwt)
- 单点登录(sso)(不同域下的系统 【一次登录,全线通用】,通常用独立的sso系统 )
-
用户进入 A 系统,没有登录凭证(ticket),A 系统给他跳到 SSO
-
SSO 没登录过,也就没有 sso 系统下没有凭证(注意这个和前面 A ticket 是两回事),输入账号密码登录
-
SSO 账号密码验证成功,通过接口返回做两件事:一是种下 sso 系统下凭证(记录用户在 SSO 登录状态);二是下发一个 ticket
-
客户端拿到 ticket,保存起来,带着请求系统 A 接口
-
系统 A 校验 ticket,成功后正常处理业务请求
-
此时用户第一次进入系统 B,没有登录凭证(ticket),B 系统给他跳到 SSO
-
SSO 登录过,系统下有凭证,不用再次登录,只需要下发 ticket
-
客户端拿到 ticket,保存起来,带着请求系统 B 接口
-
总结
今天的课学到了网络优化、http协议、cdn、sso等手段