url输入到返回请求的过程
2021-05-06 15:37:40 0 举报
基础知识
作者其他创作
大纲/内容
1、DNS查询得到IP如果输入的域名,需要DNS解析成IP,流程如下:(1)浏览器有缓存,直接用浏览器缓存,没有就去本机缓存,没有就看是不是host。(2)如果还没有,就向DNS域名服务器查询(这个过程经过路由,路由也有缓存),查询到对应的IP。注意:1、域名查询的时候有可能经过CDN调度器(如果CDN有存储功能);2、DNS解析是很耗时的,因此如果解析域名过多,首屏加载会变慢,可以考虑使用dns-prefetch优化。
2、tcp/ip请求构建 http的本质就是tcp/ip请求构建。需要3次握手规则简历连接,以及断开连接时候的4次挥手。tcp将http长报文划分为短报文,通过3次握手与服务端建立连接,进行可靠的传输。get和post区别get和post本质都是tcp/ip,但是除了http外层外,在tcp/ip层面也有区别。get会产生1个tcp数据包,post产生2个tcp数据包。
4、网络请求时单独的线程每一次网络请求都是需要单独开辟单独的线程进行,比如URL解析到http协议,就会新建一个网络线程去处理资源下载。因此浏览器会根据解析出得协议,开辟一个网络线程,前往请求资源。
1、强缓存与弱缓存缓存可以简单划分为两种类型:强缓存(200 from cache)与协商缓存(304);对于协商缓存,可以使用ctrl + F5强制刷新,使得协商缓存无效。对于强制缓存,在未过期,必须更新资源路径才能发送新的请求。
2、缓存头部简述属于强制缓存的:(http1.1)Cache-Control/Max-Age(http1.0)Pragma/Expires属于协商缓存的:(http1.1)If-None-Match/E-tag(http1.0)If-Modified-Since/Last-Modified
2、后台处理1)一般有的后端有统一的验证,比如安全拦截,跨域验证;(2)如果不符合验证规则,就直接返回相应的http报文(拒绝请求等);(3)如果验证通过了,才会进入到实际的后台代码,此时程序接收到请求,然后执行查询数据库,大量计算等等;(4)等程序执行完毕后,会返回一个http响应包(一般这一步会经过多层封装);(5)然后将这个数据包从后端返回到前端,完成交互。
从服务器接收请求到对应后台接收到请求
2、浏览器渲染进程(内核进程)每一个tab页面是浏览器内核进程,然后这个每一个进程是多线程的,它有几大类子线程:(1)GUI线程;(2)JS引擎线程;(3)事件触发线程;(4)定时器线程;(5)异步的http网络请求线程
1、http报文结构2、 cookie以及优化3、gzip压缩4、长连接和短连接5、http2.06、https
后台和前台的http交互
发出一个完整的http请求
缓存问题:http缓存
3、五层网络协议栈客户端发出http请求到服务器接收,中间会经过一系列的流程。客户端发送请求具体:从应用层发动http请求,到传输层通过三次握手简历tcp/ip连接,再到网络层的ip寻址,再到数据链路层的封装成帧,最后在物理层通过物理介质传输。五层网络协议:1、应用层(DNS,HTTP):DNS解析成IP并发送http请求;2、传输层(TCP,UDP):建立TCP连接(3次握手);3、网络层(IP,ARP):IP寻址;4、数据链路层(PPP):封装成帧;5、物理层(利用物理介质传输比特流):物理传输(通过双绞线,电磁波等各种介质)。其实也有一个完整的OSI七层框架,与之相比,多了会话层、表示层。
3、解析URL输入url后,会进行解析(URL是统一资源定位符)。URL包括几个部分:(1)protocol,协议头,比如http,https,ftp等;(2)host,主机域名或者IP地址;(3)port,端口号;(4)path,目录路径;(5)query,查询的参数;(6)fragment,#后边的hash值,用来定位某一个位置。
浏览器接收到http数据包后的解析流程
css可视化格式模型
开启网络线程到发出一个完整的http请求
从浏览器接收到url到开启网络请求线程
1、负载均衡对于大型项目,并发访问很大,一台服务器吃不消,一般会有若干台服务器组成一个集群,然后配合反向代理实现均衡负载。均衡负载不止一种实现方式。概括的说:用户发送的请求指向调度服务器(反向代理服务器,比如nginx的均衡负载),然后调度服务器根据实际的调度算法,分配不同的请求给对应的集群中的服务器执行,然后调度服务器等待实际服务器的HTTP响应,并且反馈给用户。
3、缓存头部区别
浏览器接收url
开启网络请求线程
js引擎解析过程
服务器接收到请求到对应后台接收到请求
1、浏览器是多进程的a、浏览器进程:只有1个进程,(1)负责管理各个标签的创建和销毁;(2)负责浏览器页面显示;(3)负责资源的管理和下载;b、第三方插件进程:可以是多个进程,负责每一个第三方插件的使用,每一个第三方插件使用时候会创建一个对应的进程;c、GPU进程:最多1个进程,负责3D绘制和硬件加速;d、浏览器渲染进程:可以是多个进程,浏览器的内核,每个tab页一个进程,主要负责HTML,css,js等文件的解析,执行和渲染,以及事件处理等。
收藏
0 条评论
下一页