游泳健身了解一下:
github
和小伙伴一块儿搞的平常总结
html
http的缓存分为强缓存和协商缓存
强缓存:
cache-control : max-age: 22222 //缓存时间
from memory cache // 内存
from disk cache // 硬盘
协商缓存
Last-modified // 当前服务器时间
ETag // 当前服务器的哈希
判断过程:先判断当前强缓存时间是否过时,没有过去就去请求本地的内存和硬盘,过时就去协商缓存,
返回if-Modified-Since(Last-modified) 和 if-no-Match(ETag)来判断当前文件是否有更新,
若是没有更新返回304,更新则返回200和当前更新文件
复制代码
握手过程:
发送端 -> 接收端 你听获得吗?
接收端 -> 发送端 我听到的到,你听的到我吗?
发送端 -> 接收端 我听的到,咱们开始说话吧
具体过程
发送端发送当前seq(发送端序号)x 发送给当前接收端(发送SYN表识数据包)
接收端返回ack(确认序号)x+1,seq(接收端序号) y 给发送端(发送SYN表识数据包)
发送单发送ack(确认序号)y+1给接收端(发送ACK表识数据包)
分手过程
客户端 -> 服务器 请求关闭连接
服务器 -> 客户端 确认到关闭
服务器 -> 客户端 我要关闭了,你确认一下
客户端 -> 服务端 我关闭了,你也关闭吧,不用回复了
具体过程
客户端发送seq x+2(序号)ACK y+1 (确认序号)给服务端(FIN包)
服务器发送ACK(确认序号)x+1(ACK包)
服务器发送seq y+1 (序号)(FIN包)
客户端发送ACK(确认序号)y+2
复制代码
三次握手
想一想一下若是不确认一次,那么咱们发送若是网络很差那么服务端一直开着一个连接,客户端过了一会又发了一个信息,
那么服务器端认为是一个新端请求就会建立一个新的连接,形成了没必要要的性能的开销,三次握手就表示双方都收到,
就不会出现上面的问题了
四次挥手
因为咱们的tcp是双向的,咱们客户端发送给服务端说能够断开连接了,可是可能咱们的服务端端数据尚未发送完成,
因此须要进行一次确认,咱们服务端发送一个ACK确认包给客户端,(我收到了),而后服务端再发送一个FIN包
(我已经传输完毕了),能够断开连接了,而后客户端确认到关闭端请求,给服务端发送收到端消息,双方就关闭了
复制代码
301:当前永久重定向(不会保存以前的url 会使用新的url)
302:临时重定向(保存以前的url 会使用新的url)
304:强缓存,缓存有效(资源没有过时)
401:访问缺乏信息没有受权
403:拒绝访问
复制代码
当前时间(按秒来建立)可能会建立多个文件,因此时间可能会相同
hash值惟一不会相同
复制代码
映射服务器文件,反响代理服务器
复制代码
ajax new XMLHttpRequest GET text/plain 等简单请求
nginx 反向代理
服务器 配置 Access-Control-Allow-Origin: * || Access-Control-Allow-Methods: POST
jsonp 使用script 标签加载 经过callback方法来回调
postmessage // 跨页面操做
websocket //长连接
图片的src
复制代码
1.客户端发送请求给服务端
2.服务器端拿着数字证书的公钥进行非对称加密(生成私钥),返回数字证书
3.客户端收到服务端返回端数字证书,对数字证书进行校验(是否过时,是否正确)
4.客户端生成随机数,与数字证书里的公钥进行对称加密,返回给服务端
5.服务端用私钥对当前客户端的值进行解密,获取随机数
6.服务端把客户端须要的数据和随机数进行对称加密返回给客户端
7.客户端收到数据,(经过随机数)进行解密,获取数据
复制代码
XSS 注入脚本攻击
例子:
1.你使用了url上的某个字段直接innerhtml到页面里面,我把某个字段改成<script> 页面就会执行咱们的js,
就是注入脚本进行攻击
2.最多见的就是富文本编译器,咱们输入而后前端进行展现,好比里面输入<script>
3.sql注入攻击后台没有进行sql的拦截,能够删库
预防: 咱们对<script> 改成 &t script 这样标签转化
CSRF 跨站请求伪造
例子:
1.你打开了某个页面,登录了用户信息,你小伙伴给你发了一个连接你打开了,cookie 是一直发的致使其余页面
获取了你的cookie,伪造你进行对以前页面对请求,
预防:咱们添加token,后台有存当前session用户,进行匹配对当前用户进行校验,存着的token是不会对跨站进行保存
复制代码
请求行
请求方式 请求路由 协议/版本
post /xx http/1.1
请求头
accept */* //请求须要的格式
user-agent //当前请求的浏览器信息
host //ip || 域名
空行 //分割主体和请求头
请求体
// json,fromData等
复制代码
1.http2 是二进制传输
2.头部压缩,http1.1每次都要重复请求大量都头部信息,http2只须要发送改变都头部信息就能够
3.服务器推送:服务器能够在推送html的时候主动推送其余的一些资源
4.多路由复用:http1.1好比咱们请求2个文件,一个文件请求须要1秒,第二个文件须要等待第一个请求响应结束
,才能够进行三次握手传递文件,那么时间就会增长,而http2中按流等形式进行传输,帧是流等最小单位,
帧中带有下标,能够识别从哪一个流来的,服务器会将帧数据从新整合成流,也就是多路由复用
复制代码
1XX: 临时响应
2XX:成功
200:成功
206:范围请求,好比最大须要200k的数据
3XX: 重定向
301:永久重定向
302:临时重定向
304:强缓存还可使用
401: 客户端错误
400:请求错误(请求格式错误,请求头错误)
401:须要登录信息,须要验证身份
403:拒绝访问
404:没有当前资源
5XX:服务端错误
500:服务端发生流错误
502:服务器错误,过载或者任务不可用
复制代码
https须要ca证书
tcp连接http访问80端口,https访问443端口
http明文,https加密
https 要比 http 多了证书校验,增长了通讯的加密,比http安全
复制代码
accept
user-angent
cookie
content-length
last-modified
ETag
Host
if-no-match (ETag)
if-modified-Since (last-modified)
content-type
cache-control等
复制代码
有啥写错了,和问题能够留言给我,会当即更正的前端
多多点赞在github 上面对❤️是对我最好对鼓励,我会尽可能分享一些本身使用得心得以及正确对食用方式 求靠谱内推(北京地区)能够留言我 +。= 须要探讨的小伙伴能够加nginx