会话 (计算机科学)
维库,知识与思想的自由文库
|
在计算机科学领域来说,在特殊的网络领域,会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间建立关联,从而起到交换数据包的作用机制,session在网络协议(例如telnet或FTP)中是非常重要的部分。 在不包含會話層(例如UDP)或者是无法长时间驻留會話層(例如HTTP)的传输协议中,會話的维持需要依靠在传输数据中的高级别程序。例如,在浏览器和远程主机之间的HTTP传输中,HTTP cookie就会被用来包含一些相关的信息,例如session ID,参数和权限信息等。 当客户端在多个服务器调取数据时,保持會話状态的一致性是需要注意的,客户端需用同时保持和某一个主机的连接,或者多个服务器端需要共享一个储存會話信息的文件系统或者数据库。否者,当用户在一个新的而不是一开始保存會話信息的主机上提交访问请求的时候,主机会因为无法获知原来主机的會話的访问状态而产生问题。 [编辑] 服务器端的session服务器端的會話是快速而高效的,但是在负载均衡系统和高速应用系统中的使用会比较麻烦,而在没有储存能力的系统上更是无法使用。在负载均衡系统中可以通过共享储存或者设立独立的存储服务器来解决,这需要根据系统的效率和载入分布的需求情况。 使用缓存存储會話数据是一种不需要储存介质的解决方案。这种方式适合于处理少量数据的客户端操作(例如路由或网络桥接器对多个客户端产生的请求)。 [编辑] 客户端的會話客户端會話使用了Cookie和加密技术来完成上面提到的数据储存需求。 [编辑] 服务器端會話和客户端的协作在动态页面完成解析的时候,储存在會話中的变量会被压缩后传输给客户端的Cookie。此时完全依靠客户端的文件系统来保存这些数据(或者内存)。 在每一个成功的请求中,Cookie中都保存有服务器端用户所具有的身份证明(PHP中的session id)或者更为完整的数据。 虽然这样的机制可以保存数据的前后关联,但是必须要保障数据的完整性和安全性。 |


