会话层的会话和传输层中的连接的区别
session(会话)和connection(连接)的定义:
connection:是一个物理的概念,它指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或共享服务器(Shared Server)的一个网络连接,既是一条物理路劲。
session:是一个逻辑的概念,它是存在于实例中,一个连接可以拥有多个会话也可以没有会话,同一个连接上的不同会话之间不会相互影响。
session和connection的区别与联系:
1. 一个用户对应一个session,但不一定对应一个connection ,因为几个session可以共享一个connection。
2. 在dedicated sever(专用服务器)连接模式下,session和connection一一对应,且个数上session = connection。
3. 在shared server(共享服务器)连接模式下, 个数上session >= connection。
4. 在shared server的multiplexing session模式下,session >= connection,且并不一一对应。
有一位专家的比喻更形象:
有A/B两个城市,需要从A运送白菜到B城
我们先建设一条公路
然后运送白菜过去,包括准备白菜和运送白菜以及返回等一系列的动作。
一条公路,可以运送0-n次的白菜
当然从A到B的公路也可能不只一条。
某一次运送白菜,可以在真正上路时才开通某一条道路
一次运送不会影响别的运送的状态
对应数据库
A代表客户端进程
B代表服务器端进程
公路代表连接,
运送一次白菜代表一个会话
一个连接可以进行多次的会话
一个会话可以不依赖于某个连接,甚至没有连接(当我准备好了,真正开始运送时再建立连接)
一个会话不会影响别的会话