会话和同步原理

简介:

 以下内容摘自笔者的《网络工程师必读——网络工程基础》一书(如感兴趣,请加入我的技术圈子:[url]http://group.51cto.com/lycb[/url]一起讨论学习):

 

        10.2.2 会话和同步原理

        “会话,是指用户之间的信息交换过程。用户之间为完成信息交换需要按一定规则在会话层实体之间建立起来的一种暂时的联系,即会话连接。在会话连接过程中,可能需要把用户之间的信息交换分成若干个逻辑工作段,这个逻辑分段就是所谓的活动。活动的内容具有相对的独立性和完整性。在每个活动中可以含有一个或多个会话单元,会话单元一般是一组意义上相对完整的数据块传输。

 

1. 几个基本概念

   在这里首先要明白几个基本概念:
l              令牌(Token
    令牌是会话连接的属性,表示会话连接用户使用会话服务的权力。其特点是:拥有令牌的用户才可使用与该属性相关的服务;令牌在一个时间点只分配给一个用户。保证用户调用某种服务时的独占性,防止可能出现的竞争和冲突。这就有点像令牌环网的工作原理一样。
 
l              同步与对话单元(synchronizationdialogue unit
    同步是对会话层实体的一种控制方法,保证会话交互的时序性。通过同步技术可对用户数据进行语义上的分段,便于接收方可对所接收的信息进行验证。并在发生了错误或不符合协议的事件的情况下,使会话实体返回到一个已知状态的过程。
 
l              活动(activity
    活动用于区别数据传送的不同逻辑工作段。每次活动可以看成一次独立的数据传送,或者可看成会话服务用户间传送数据中的一个特定阶段。对应用层来说,一个活动相当于一次应用协议数据单元APDU的交换。活动包含的信息可以是双向的,而一个对话单元只能是单向的。

 

2. 同步与重新同步

 
    会话层的另一个服务是同步。所谓同步就是使会话服务用户对会话的进展情况有一致的了解。在会话被中断后可以从中断处继续下去,而不必从头恢复会话。这种对会话进程的了解是通过设置同步点来获得的。会话层允许会话用户在传输的数据中自由设置同步点、并对每个同步点赋予同步序号,以识别和管理同步点。这些同步点是插在用户数据流中一起传输给对方的。当接收方通知发达方它收到一个同步点,发送方就可确信接收方已将此同步点之前发送的数据全部收妥。会话层中定义了两类同步点:
 
l              主同步点
    它用于在连续的数据流中划分出对话单元,一个主同步点是一个对话单元的结束和下一个对话单元的开始。只有持有主同步令牌的会话用户才能有权申请设置主同步点。
 
l              次同步点
    次同步点用于在一个对话单元内部实现数据结构化,只有持有次同步点令牌的会话用户才有权申请设置次同步点。
主同步点与次同步点有一些不同。在重新同步时,只可能回到最近的主同步点。每一个插入数据流中的主同步点都被明确地确认。次同步点不被确认。
 
        “活动同步点密切相关。当一个活动开始的时候,同步顺序号复位到1,并设置一个主同步点;在一个活动内有可能设置另外的主同步点或次同步点。

 

3. 会话原理示例

 
    现举一个文件传输会话连接示例进行说明。过程如图10-2所示。
 
10-2  会话控制流程示例
 
    在进行文件传输,首先需要建立会话连接,通知通信对方会话开始,会话连接建立后,通信双方才可进行文件传输。可以把每传输一个文件作为一个活动,发送方在开始传输该文件时,通知接收方活动开始。为使接收方接收同步,每发送一段数据后,设置一个次同步点,使得接收方可以检查数据接收的正确性;发送一组相对完整的数据后,设置一个主同步点,接收方收到主同步点信息后,给予确认,表示在这之前的数据已完全正确接收。在一个文件传输结束时,通知接收方本次活动结束,如要继续发送下一文件,则通知接收方新的活动开始,继续发送文件。直至本次连接需要传输的文件都传输完毕,通知接收方会话结束,拆除会话连接。
 
            活动开始主同步点同时也作为恢复点,如果传输过程中出现故障,传输中断,则等再次连接时,可以恢复最近一次活动,并从最后的主同步点开始重新同步,继续传输数据。引入活动同步技术的目的是使用户可以了解会话的进程,便于控制和管理,在出现传输故障时,可从指定的同步点处进行恢复,减少差错重传的数据量。
本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/6441如需转载请自行联系原作者

茶乡浪子
相关文章
|
4天前
|
弹性计算 关系型数据库 MySQL
检查MySQL主从同步状态
【4月更文挑战第30天】
5 0
|
5月前
|
存储 缓存 前端开发
如何实现设备组缓存的正确清除?——基于心跳请求和心跳响应的解决方案
如何实现设备组缓存的正确清除?——基于心跳请求和心跳响应的解决方案
35 0
|
6月前
|
SQL 关系型数据库 MySQL
如何判断mysql主从是否同步
如何判断mysql主从是否同步
|
7月前
|
存储
11JavaWeb基础 - 会话简介
11JavaWeb基础 - 会话简介
23 0
|
安全 程序员 数据库
进程间同步的方式有哪些
进程间同步的方式有哪些
682 0
|
SQL 存储 关系型数据库
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
快速学习PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换
739 0
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
|
负载均衡 网络协议 开发者
配置会话保持|学习笔记
快速学习配置会话保持
326 0
配置会话保持|学习笔记
|
机器学习/深度学习 Shell TensorFlow
会话的介绍|学习笔记
快速学习会话的介绍
|
Web App开发 缓存 JavaScript
如何使用事务码SMICM清除服务器端的缓存
如何使用事务码SMICM清除服务器端的缓存
110 0
如何使用事务码SMICM清除服务器端的缓存