http协议在设计之初被设计成无状态特性,客户端的每次请求在服务端看来都是独立且无任何相关性,同一个客户端第一次请求不会与第二次请求有任何关联,即使相隔时间很短。无状态的特性让请求变得很快速且服务器也更加高效,但是随着人们对浏览器功能要求的不断提高,由于无状态导致的不足更加明显,因为有些场景下本次处理需要用到之前的请求的一些信息,如果单纯靠http协议而没有额外的机制是无法办到的。

为了提供一种让一定时间内的每次请求都拥有记忆的会话机制,需要依靠http协议的基础上提供一种解决方案,当然由于涉及到相关信息的存储,所以需要在http协议外另外提供存储介质,通信的主体无非就是客户端和服务端,于是人们可以想到的就是借客户端或服务端存储状态信息,后来基于这两端的存储的方式都被支持。在客户端,一种叫做cookie的小文本被生成并存放在客户端的指定目录,每次请求时浏览器会从cookie找出此次请求服务器希望得到的一些状态并附加到http协议头部传往服务端,服务端由此实现通信的状态性;在服务端,有时需要保存的信息量很大,存放在客户端会导致一个问题,即每次客户端请求都要携带大量的信息到服务端,传输效率低下,这时如果把客户端的信息都放在服务端就能避免大量附加信息的传输,仅仅只要携带一个识别编号到服务端即可,服务端根据此编号找到此客户端对应的保存信息,至此实现通信的状态性。

所以两种方式可以用下图表示,上面的为客户端模式,客户端每次请求都会将本地保存的状态一起传到服务端,服务端通过这些状态便可以辨别哪个客户端的某些状态。而下面的图则是服务端模式,这时客户端要传的仅仅是一个id编号,它其实是客户端的身份标识,而其他状态变量保存在服务端,通过客户端id可以找到对应客户端的状态变量,所有客户端的状态被统一存放在服务端进行管理。

对java感兴趣的朋友可以交个朋友:

客户端状态的存储空间——Session的更多相关文章

  1. [Asp.Net]状态管理(Session、Application、Cache)

    上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...

  2. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  3. 动手学习TCP:客户端状态变迁

    上一篇文章中介绍了TCP连接的建立和终止. 通过实际操作了解到,在TCP协议工作过程中,客户端和服务端都会接收或者发送特定标志的TCP数据包,然后进入不同的状态. 也就是说,TCP协议就是一个包含多种 ...

  4. ASP.NET状态服务及session丢失问题解决方案总结

    原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...

  5. redis查看redis 客户端状态

    查看redis客户端连接 redis-cli info clients # Clients connected_clients:6000 client_longest_output_list:0 cl ...

  6. ASP.NET 状态服务 及 session丢失问题解决方案总结

    ASP.NET2.0系统时,在程序中做删除或创建文件操作时,出现session丢失问题.采用了如下方法:1.asp.net Session的实现:asp.net的Session是基于HttpModul ...

  7. 如果客户端禁用cookie,session还能使用吗?

    记得在以前找工作的时候,可多次被问到如果客户端被禁用cookie,session还能使用吗? 今天终于找到了相关的答案:我们来看一下: session是在服务器段保持会话数据的一种方法,对应的cook ...

  8. [转]ASP.NET 状态服务 及 session丢失问题解决方案总结

    转自[http://blog.csdn.net/high_mount/archive/2007/05/09/1601854.aspx] 最近在开发一ASP.NET2.0系统时,在程序中做删除或创建文件 ...

  9. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

随机推荐

  1. 代理IP爬取,计算,发放自动化系统

    IoC Python端 MySQL端 PHP端 怎么使用 这学期有一门课叫<物联网与云计算>,于是我就做了一个大作业,实现的是对代理IP的爬取,计算推荐,发放给用户等任务的的自动化系统.由 ...

  2. 初识gd库

    必备基础 开启GD拓展 列表使用 获取图片信息代码 图片详细信息 特效函数 示例 运行结果 分析 获取图片基本信息 获取图片宽度 获取图片高度 获取图片后缀名 获取图片mime类型 操作图片 添加文字 ...

  3. ROS_Kinetic_28 turtlebot gazebo demo例子

    ROS_Kinetic_28 turtlebot gazebo demo例子 官方教程:http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Ma ...

  4. norflash芯片内执行(XIP)

    为什么程序不能直接在nandflash上执行?出于这个疑惑带来了这篇博文,是我在网上找了很多资料后总结的,假如有误,希望马上指出来,免得我误人子弟.谢谢! nandflash和norflash NOR ...

  5. SRAM/DRAM,PROM/EPROM/EEPROM,NOR/NAND FLASH区别

                          SRAM/DRAM,PROM/EPROM/EEPROM,NOR/NAND FLASH区别 RAM / ROM 存储器 ROM和RAM指的都是半导体存储器,R ...

  6. Linux 高性能服务器编程——I/O复用的高级应用

    高级应用一:非阻塞connect connect系统调用的man手册中有如下的一段内容: EINPROGRESS The socket is non-blocking and the connecti ...

  7. html5全解析

    htm是软件开发中非常基础的知识,也是很重要的知识,在web中是很重要的知识点,在此梳理一下主要内容: 1.HTML是什么? 全称为HyperText Markup Language,超文本标记语言, ...

  8. 协议系列之IP协议

    1.协议 协议(protocol)的定义:为计算机网络中进行数据交换而建立的规则.标准或约定的集合.两个终端相互通信时双方达成的一种约定,规定了一套通信规则,双方通信必须遵守这些规则.这些规则规定了分 ...

  9. java项目管理工具maven使用初级

    一.前言        早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基础 ...

  10. JAR、WAR、EAR的使用和区别

    最近接触这几个词较多,停下来总结总结它们的区别和联系,更好的深刻理解 Jar.war.EAR.在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压缩格式.但是它们的使用目的有所区别: ...