session(会话)代表着基于BS架构的应用存在的,通常的BS架构中客户端和服务端的通信是通过HTTP或者HTTPS进行通信的,因为HTTP协议本身是不存在状态的,所以为了保证客户端能够持续与服务端进行通信,基于cookie的session机制应运而生了。
首先,cookie是http协议header中的一部分,服务端可以设置cookie,它会随着http协议其他参数和body部分一起发给服务端。
当客户端和服务端 首次通信的时候,服务端会启动响应的session,这个session会有一个sessionId和一个session文件标识着这个会话过程,服务端会将这个sessionId设置到客户端的cookie中。
客户端下次访问只需要将这个id携带在cookie中,服务端会检查服务器上有没有与这个id对应的session文件,有就表明这次会话是已知的客户端,并根据请求返回响应的数据即可。
在PHP中,是通过session_start() 启动session的。
在java中,类javax.servlet.http.HttpSession。每一个HttpSession代表用户的一个会话。
综上所诉,就是session的底层原理。