圈里很多童鞋开始技术入门时的方向不同,对于术语理解也存在差异,诸如:开发,网络,应用,系统等,术语理解不统一会造成交流上困惑,本篇随笔记录TCP 连接和session两个术语,解释、对比和剖析。
很多技术工程师在TCP/IP卷:(一)已经看到厌烦;TCP connect常说的TCP连接,三次握手,四次挥手这个术语其实理解起来不难;
session是服务器端用于保存用户的状态标识;
目前很多厂家产品对于术语表示方式的不同而造成了很多误解:
- 类似防火墙的产品“session”,这里的session不等于服务器上保存用户状态的标识而是TCP连接;所以有时网络工程师(防火墙一般网络工程师作为管理员),在与开发或应用部门交流、排障的时说session,这个时候双方对于这个术语的理解存在差异,其实就会造成一些困难。
- 类似应用交付负载均衡会话保持功能,这里的会话保持,需要保持的会话等于保持服务器上的session,但是开发或应用部门的人员要理解,本身这类产品不会类似服务器端,是不存在session这个标识只是一种策略,用于给服务器保持session。
展开思考;
TCP connect、session、负载均衡会话保持、HTTP协议的cookie之间的关联;在应用交付的领域强调OSI参考模型,OSI的参考模型相比TCP/IP模型出现了表示和会话层;
基于业务量增加会选择增加服务器数量来解决业务过载的问题,就会引进负载均衡的技术(软件负载LVS,硬件负载均衡设备等等),负载均衡技术多数是基于TCP短连接(TCP长短连接会在之后的文章进行分析)进行标识,存活于模型的传输层,负载的过程中一个标准的连接传输数据完毕之后会关闭。
引入实际场景:
比如大家在登录网银、购物网站等,当点击转账,购买按钮时,由于HTTP协议是无状态的协议,它并不知道是哪个用户操作的,服务器端需要通过每个用户的session ID来保持和记录用户的状态,这就是上面说的session机制。配合负载均衡技术,基于TCP标准短连接的负载算法实现业务访问,在这种状态下并不会解码应用层的session ID,这个时候就会出现一种场景,当你在购物或者转账的时候,网页会出现不断的登出,引入会话保持的技术来保持用于的状态(常见的保持技术,主要是基于IP层面或者cookie应用层面实现),在
HTTP协议中Cookie是浏览器保存信息的一种方式,服务器可以通过浏览器set-cookie来设置cookie进行标识,同时在服务器端设置对应的session ID,这样就避免的不断登出的情况。负载均衡cookie会话保持机制其类似。
PS:
Session 是服务器保存用户状态的一种机制;HTTP协议中cookie是session保持用户状态具体的实现方式;
TCP connect是存活于OSI或者TCP/IP模型的一种连接表现形式。
附:
服务器端session不复制的机制,现在阶段的NGINX可以通过开启session粘连实现。