图解HTTP总结02:无状态与Cookie,持续连接与管线化的介绍

无状态协议HTTP

HTTP是无状态协议,即不保存请求和响应之间的通信状态。这是为了更快处理大量事物,确保协议的可伸缩性,也能减少服务器的 CPU 及内存资源的消耗。而这也导致无法用上一个请求状态来处理下一次的请求。

但是无状态会导致一个用户在一个页面登录后,跳转到其他页面就没有登录信息需要再次登录。所以引入了cookie,再使用HTTP通信,就可以管理登录状态。

Cookie技术通过在请求和响应的报文中写入Cookie信息来控制客户端的登录状态。

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie 值后发送出去。

服务端发现客户端发送的请求中带有cookie,就会检查是哪个客户端的cookie,从而检查其状态。

图文介绍
在这里插入图片描述
在这里插入图片描述

Cookie、Set-Cookie的字段含义

由前面的图可知,响应的Set-Cookie字段中包含有path,Domain等属性,下面来介绍一下。
在这里插入图片描述

  • NAME=VALUE:赋予cookie的名称和值,必填项
  • expires=DATE:cookie的有效期,不指定则默认是浏览器关闭后(一旦服务中存储了cookie值,就无法实际地删除cookie,但可以覆盖已经过期的cookie)
  • path=PATH:将服务器上的文件目录作为cookie的适用对象,不指定则默认是文档所在的文件目录
  • domain:域名,cookie适用对象的域名,不指定则是服务器的域名(通过domain指定的域名可做到与服务器尾部保持匹配。比如domain指定baidu.com, 那么www.baidu.com 和www2.baidu.com都可以发送cookie),不指定会显得比较安全
  • secure:仅在https安全通信时才会发送cookie,当省略secure时,http和https都会回收cookie
  • HttpOnly:加限制,使cookie不能被js脚本访问

Cookie: status=enable
Set-Cookie: name=value; domain=aaa.com; HttpOnly; secure

HTTP的一些方法

在这里插入图片描述

HTTP的长连接

http1.1(不含1.1)以前默认是短连接,每次通信都要建立连接然后断开。涉及三次握手四次挥手。
在这里插入图片描述
如果通信时传输的内容比较少,所以没什么影响,但如果传输的数据长度较长,比如存在多张图片,多个音视频等,在请求html页面时,也会请求html上的资源,就会有很多tcp连接然后断开,增加了通信量的消耗。

就类似于下面这种情况:

  1. 请求html:三次握手建立tcp连接,http的请求与响应,四次挥手断开TCP连接
  2. 获取html的第一张图片:三次握手建立tcp连接,http的请求与响应,四次挥手断开TCP连接
  3. 获取html的第二张图片:三次握手建立tcp连接,http的请求与响应,四次挥手断开TCP连接
  4. ……

后面引入了长连接,即keep-alive, 只要一方没有提出断开连接,则会保持TCP连接状态

所以请求一个html页面就变成下面的情况:

  1. 请求html:建立tcp连接,http的请求与响应
  2. 获取html的第一张图片: http的请求与响应
  3. 获取html的第二张图片: http的请求与响应
  4. ……
  5. 四次挥手断开连接

持久连接的好处在于减少了TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。

管线化

持续连接使请求以管线化的方式发送成为可能

以前的请求要等到响应之后才能发送下一个请求,管线化使得可以一次性发送多个请求,不用等待前面的响应结束。

管线化使得页面的响应更加快速。

管线化类似于下面的情况:

  1. 三次握手建立TCP连接
  2. 请求1
  3. 请求2
  4. 响应1
  5. 响应2
  6. 四次挥手断开TCP连接
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值