day5(http) | 青训营笔记

52 阅读2分钟

浏览器背后的故事

当咱们在浏览器输入一个域名后,背后究竟发生了什么?html

第一步:当咱们输入域名后,在 DNS 服务器进行域名查询。前端

第二步:获得对应的 ip 地址。linux

第三步:浏览器根据 ip 向 web 服务器进行通讯发送请求,而通讯的协议就是 HTTP。webpack

第四步:web 服务器回传页面内容。web

第五步:浏览器收到回传信息的报文数据,进行渲染出咱们看得懂的页面。算法

无状态

http协议是无状态协议,无状态是指协议对于处理没有记忆能力。如果后续再处理同样的内容,需要前面的信息必须重传,这样可能导致每次连接传送的数据量增大;另一方面,在服务器不需要先前信息它的应答速度就快

协议分析

1674135562476.png 1674135542163.png

1674135578949.png

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等手段