计算机网络应用层--cookie和web缓存

计算机网络应用层–cookie和web缓存

cookie:用户与服务器的交互

由于http服务器是无状态的,然而一个Web站点通常希望能够识别用户,可以用于将内容与用户身份联系起来,因为,HTTP使用了cookie,允许站点对用户进行跟踪。

cookie的组件:

  • 在HTTP响应报文中的一个cookie首部行
  • 在HTTP请求报文中的一个cookie首部行
  • 在用户端系统中保留一个cookie文件,由用户浏览器管理
  • 在Web站的一个后端数据库,用于存储映射关系

cookie的工作原理:
在这里插入图片描述
(图片来源:(计算机网络:自顶向下方法)

  • 当第一次访问该Web站点时,发送的是普通的http报文,该报文到达服务器时,Web站点会产生一个唯一标识码,然后将其与用户一些信息的对应关系存储在数据库中。之后Web服务器发送响应报文,响应报文中包含cookie首部:Set-cookie 字段以及 标识码
  • 当浏览器收到该带有Set-cookie字段的HTTP响应报文时,会在浏览器的管理cookie的文件中添加一行,包含服务器的主机名和Set-cookie中的识别码
  • 之后又一次访问该Web站点时,每请求一个Web页面,浏览器都会从自己的cookie文件中获取该主机的对应识别码,并放到HTTP请求报文中包含识别码的cookie首部行中
  • Web服务器收到该HTTP请求报文时,发现cookie首部行中的识别码,会在自己的数据库中查找其对应的数据,基于此,浏览器可以知道该用户的一些信息(包括什么时间访问了哪些页面之类的)
  • cookie通常具有保质期,即如果较长时间没有使用,浏览器和服务器都可能会消除该cookie的信息,之后就需要重新建立新的cookie

cookie的作用与担忧:

cookie在无状态的HTTP上建立了一个用户会话层,用于Web站点标识一个用户,可以提供更好的用户体验。但由于cookie对用户信息的收集,在一定程度上也是对用户隐私的侵害。攻击者利用cookie捕获或发送恶意cookie等攻击手段造成用户的信息泄漏等。

Web缓存:代理服务器

一个优秀的Web缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

Web缓存器,是代表初始的Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。

在这里插入图片描述

Web缓存原理:

  • 当浏览器请求Web对象时,浏览器首先会与Web缓存器建立TCP连接,并向Web缓存器中的对象发送对应的HTPP请求
  • Web缓存器收到请求后进行检查,查询本地是否存储了该对象的副本,如果有对应的对象副本,则直接向浏览器发送包含该对象的HTTP响应报文
  • 如果Web缓存器中没有该对象,则其将于初始服务器建立TCP连接,Web缓存器向初始服务器发送该对象的HTTP请求,收到该请求后初始服务器向Web缓存器发送具有该对象的HTTP响应报文
  • Web缓存器收到该响应后,在本地存储一份副本,然后向客户的浏览器用HTTP响应报文发送该副本

因为用户是大量的,因此如果有多个用户请求同一Web对象时,只在第一次需要向初始服务器申请,之后的直接由Web缓存器响应,将大大提升速度。

Web缓存器既是服务器又是客户,接受浏览器请求并发回响应,此时是服务器;当向初始服务器发送请求并接受响应时,此时是客户。

Web缓存的优点:

  • Web缓存器可以大大减少用户对客户请求的响应时间,网页打开速度将增快,用户体验有所提升
  • Web缓存器可以大大减少一个机构的接入链路到因特网的通信量
  • Web缓存器从整体上大大减低了因特网上的Web流量,因此改善了所有应用的性能

条件GET方法:

尽管Web缓存非常优秀,但引入了一个问题:保存在Web服务器中的对象可能是陈旧的,也就是说保存在服务器中的对象可能已经被修改了。

HTTP协议的条件GET方法允许缓存器证实它的对象是最新的。

条件GET方法原理:

  • 请求报文中包含"if-Modified-Since:"首部行,即该请求报文就是一个条件GET请求报文
  • 缓存器将对象存储到本地时将保留最后修改时间
  • 当用户请求该对象时,缓存器向服务器发送条件GET请求报文,如果没有修改则返回一个“304 Not Modified”响应报文(注意只返回响应,不包含对象)
  • 如果修改的话则返回对应的状态码并附带最新的对象

猜你喜欢

转载自blog.csdn.net/dingdingdodo/article/details/106518915
今日推荐