http、计算机网络

http、计算机网络

http和https

http: 超文本传输协议,信息是明文传输,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少

https 是以安全为目标的http通道,是由http 和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高,需要ca证书,费用较高

http1.0 http1.1 http2

http1.1

  • 长连接
  • 节约带宽
  • HOST域
  • 缓存处理
  • 错误通知的管理

http2.0

  • 多路复用
  • 头部数据压缩
  • 服务器推送

http状态码

  • 2开头的表示成功
    • 一般见到的就是200
  • 3开头的表示重定向
    • 301永久重定向
    • 302临时重定向
    • 304表示可以在缓存中取数据(协商缓存)
  • 4开头表示客户端错误
    • 403跨域
    • 404请求资源不存在
  • 5开头表示服务端错误
    • 500

三次握手 四次挥手

三次握手 客户端和服务端需要知道双方都能够收发

①首先 Client 端发送连接请求报文

②Server 段接受连接后回复 ACK 报文,并为这次连接分配资源。

③Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ii2ftPhZ-1636986335939)(http%E3%80%81%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.assets/image-20211115170432167.png)]

四次挥手

建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源

可以是客户端发起也可以是服务端发起

①客户端申请断开连接即FIN,发送Seq+Ack

②服务端接收信息返回,表示我已经接收到

③服务端发送信息表示可以断开连接

④客户端接受信息,返回数据表示已接受信息

既然握手的时候,服务端发送的两个请求可以合并,那么释放连接的时候,是否也能合并,只需三次握手呢

我们的回答是不能够,因为当服务器收到客户端关闭连接的请求的时候,服务端可能还在继续发送数据,但是他又必须先给客户端一个回应,说我收到了请求。等服务端的数据发送完毕之后,再发一个数据包说我已经可以关闭请求了。客户端收到之后再作出回应。

OSI七层模型

  • 七层模型
    • 应用层
    • 表示层
    • 会话层
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  • TCP属于传输层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zy8qUFeG-1636986335951)(http%E3%80%81%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.assets/image-20211115171104856.png)]

localStorage、sessionStorage、cookie、session

localStorage和sessionStorage

生命周期

localStorage 的生命周期是永久的,关闭页面或者浏览器之后,localStorage 里面的数据也不会消失。localStorage 除非主动删除数据,否则永远不会消失。

sessionStorage 的声明周期仅在当前会话下有效,sessionStorage 是在同源的窗口中始终存在的数据,只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源的另一个页面,数据依然存在。但是 sessionStorage 在关闭了浏览器窗口后就会被销毁。

存储位置

保存在客户端,不与服务器进行交互通信

存储内容类型

只能存储字符串,对于复杂类型,可使用JSON

cookie和session

cookie数据存放在客户的浏览器上,session数据放在服务器上

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session

session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最毒保存20个cookie

Get和Post

get 是从指定的资源请求数据,post 是向指定的资源提交要处理的数据

  • 传参

    • get传参,参数是在url中的
    • post传参,参数是在请求体中
  • 安全性

    • get较不安全
    • post较为安全
    • 准确的说两者都不安全,都是明文传输的,在路过公网的时候都会被访问到,不管是url还是header还是body,都会被访问到,要想做到安全,就需要使用https
  • 参数长度

    • get参数长度有限,是较小的
      • 准确来说,get在url传参的时候是很小的
    • post传参长度不受限制
  • 字符编码

    • get在url上传输的时候只允许ASCII编码

Http缓存

强缓存和协商缓存

根据响应的header内容来决定,两者的主要区别是使用本地缓存的时候,是否需要向服务器验证本地缓存是否依旧有效。顾名思义,协商缓存,就是需要和服务器进行协商,最终确定是否使用本地缓存。

强制缓存只有首次请求才会跟服务器通信,读取缓存资源时不会发出任何请求,资源的 Status 状态码为 200,强制缓存的过期时间通过第一次访问服务器时返回的响应头获取

协商缓存与强制缓存的不同之处在于,协商缓存每次读取数据时都需要跟服务器通信,并且会增加缓存标识。第一次是拿数据和标识的过程,第二次开始,就是浏览器询问服务器资源是否有更新的过程。服务器拿到标识后判断标识是否匹配,如果不匹配,表示资源有更新,服务器会将新数据和新的缓存标识一起返回到浏览器;如果缓存标识匹配,表示资源没有更新,并且返回 304 状态码,浏览器就读取本地缓存服务器中的数据

tcp和udp区别

  • 连接方面

tcp面向连接,udp不需要连接
tcp需要三次握手四次挥手请求连接

  • 可靠性

tcp是可靠传输;一旦传输过程中丢包的话会进行重传
udp是不可靠传输,但会最大努力交付

  • 工作效率

UDP实时性高,比TCP工作效率高
因为不需要建立连接,更不需要复杂的握手挥手以及复杂的算法,也没有重传机制

  • 是否支持多对多

TCP是点对点的
UDP支持一对一,一对多,多对多

浏览器输入url经历了什么

  • 先进行DNS域名解析,优先查看本地hosts文件有没有当前域名对应的ip地址,若有直接发起请求,没有的话会在本地DNS服务器去查找,如果本地域名服务器没查找到,会从DNS根服务器查找,根域名会告诉你从哪个与服务器查找,最后查找到对应的ip地址后把对应规则保存到本地的hosts文件中。
  • 建立TCP连接三次握手
  • 浏览器向服务器发起http请求
  • 服务器响应http请求至浏览器
  • 浏览器解析资源 对页面进行渲染
  • tcp四次挥手 断开连接

xss和csrf

XSS:跨站脚本攻击,是说攻击者通过注入恶意的脚本,在用户浏览网页的时候进行攻击,比如获取cookie,或者其他用户身份信息

CSRF:跨站请求伪造,可以理解为攻击者盗用了用户的身份,一用户的名义发送了恶意请求,防御方式:使用验证码,检查https头部的refer,使用token

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值