




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络软件设计,服务器的有状态与无状态 有状态协议设计,制作 主讲,段景山,2,状态 由服务器维护的,关于服务器与客户机正在进行的交互 的信息称为状态 “信息”不是指服务器和客户机交互的数据,而是关于交互过程本身 有状态服务器 保存状态信息的服务器程序 例:认证服务器需要记录与客户交互的状态正在认证(等待用户名、等待口令)、已认证等 无状态服务器 不保存状态信息的服务器程序 例:聊天应用,有状态与无状态服务器,3,有状态服务,为什么要求设计有状态服务器 任务需求 可以减少报文开销(利用报文间的相关性) 有状态服务器面临的问题 增加实现的复杂程度 需要复杂的协议控制 系统在多个状态下转换时,可能因错误事件而导致:进入非期望状态、死锁、崩溃 可以设计有限状态机来指导软件实现,4,无状态是一个协议问题,为什么要设计无状态服务 任务需求 服务实现简单,可靠性强 一个报文的意义不依赖先前的报文状态的依赖性 究竟网络应用软件是有状态的还是无状态的 从系统的角度,系统是“无状态”的 系统能不断为各次通信服务 从功能实现角度,复杂的通信应采用有状态方法设计,5,有限状态机,一种直观、全局、准确的协议描述方法,状态,转换,事件,动作,缺点时序性不强,6,有限状态机的基本结构,状态: 实体有有限个状态 每一时刻,实体只处于其中一个状态 事件: 事件引起实体产生动作,如收到PDU、定时器到时等 事件按发生的顺序排在事件队列中,等待处理 事件可能有附加条件 动作: 处理队列中的一个事件,转移到下一状态 不同状态下,对同一事件可能有不同的处理方法 最简动作:忽略事件,保持状态(图中可省略不画),FSM,事件,状态1,状态2,事件e1 / 动作a1,事件e2 / 动作a2,事件e3 / 动作a3,7,例,以停等协议为例,讲解利用有限状态机实现有状态设计 发送方发送完一个数据包后,需得到接收方的确认才能发送下一个数据包 若接收方超时没有确认,发送方将重传,8,停等协议的状态机(1),状态机 (Ns, Nr),发送,接收,递交,上层DU,协议实体,PDU、ACK To:对等实体,PDU、ACK From:对等实体,状态机的位置,9,停等协议(2),状态的确定,0,ACK,1,ACK,发送方,接收方,准备发送帧1,准备发送帧0,等待帧1,等待帧0,10,停等协议状态机,准备 发送帧0,准备 发送帧1,等待 接收帧0,等待 接收帧1,接收方,发送方,11,有限状态机小结,状态 状态是复合的 由多个要素形成 如:准备发送帧0状态 刚发送了帧1 上层有一个待发的SDU 收到了对前一帧的应答 等待刚发送的帧的应答还没有超时 系统的状态是稳定的 不触发就不变化 制定状态的结果可能不唯一,状态1,状态2,/,x,12,有限状态机小结,事件 转换的输入条件 若是别的状态的动作造成转换,则跃迁的状态是不稳定状态,不应出现 可以是对等实体的动作 状态机一次只处理一个事件 如果有必要处理多个事件,应定义为复合事件,状态1,状态2,事件1/动作1,事件2 (动作1)/动作2,,动作2,事件1,事件2 /动作3,事件1/动作1,事件2/动作2,状态3,状态1,事件3 /动作3,13,有限状态机小结,动作 动作一定由事件触发 不触发就自发产生动作是不稳定状态 某些转换不一定产生动作,动作不一定伴随状态转换 触发不一定有动作产生,不一定造成状态转换,状态1,/动作1,事件1/,x,状态1,事件2/动作2,事件3/,14,有限状态机的作用(1),指导协议实现 根据有限状态机形成状态转移表,状态转移表,15,状态转移表,停等协议的状态转移表,16,状态转移表,停等协议的状态转移表,等待帧0,等待帧1,发送ACK,收到帧0,发送ACK,收到帧1,17,fsm程序框架,根据状态转移表形成fsm程序可能的框架,fsm( 当前状态,事件 ) ,switch( 事件),case 事件1:,case 事件2:,default:ignore;,return next_state;,action 1;,next_state = xxx;,main() state = initial; while(1) waite for a event; state = fsm(state,event); ,fsm.c,if(当前状态=X),18,改进的fsm程序框架,main() state = initial; while(1) waite for a event; switch(state) case X: state = x_fsm(event); case Y: state = y_fsm(event); ,x_fsm(事件) ,switch( 事件),case 事件1:,case 事件2:,default:ignore;,return next_state;,action 1;,next_state = xxx;,19,有限状态机的设计,事件的产生 停等协议的事件 接收到数据:Information、ACK 定时器 利用select() 接收到数据 read事件进一步判决为Information、ACK等 定时 select timeout 超时计时 例:定时器为5秒,timeout可设为5秒,如果select返回值为0则认为超时 或者timeout设为1秒,连续五次select返回值为0,则认为超时。,20,有限状态机的设计,main() state = initial; while(1) waite for a event; switch(state) case X: state = x_fsm(event); case Y: state = y_fsm(event); ,main( ) timeout = 5; while(1) retval = select(,timeout); if(retval = 0) event = TIMEOUT; else if(FD_ISSET(s,read) check the data type; event = data type; switch(state) ,21,停等协议的有限状态机设计,事件定义 #define EVENT_RECV0 1 #define EVENT_RECV1 2 #define EVENT_ACK 3 #define EVENT_TIME 4 状态定义 #define STATE_SEND0 1 #define STATE_SEND1 2 #define STATE_RECV0 3 #define STATE_RECV1 4,22,停等协议的有限状态机设计,PDU设计 事件产生,retval = select(,timeout); if(retval = 0) event = TIMEOUT; else if(FD_ISSET(s,read) check the data type; event = data type; ,struct PDU char type; char sequence_num; char len; char data100; sendbuf,recvbuf;,recv(s, ,停等协议的有限状态机设计,停等协议缓冲区设计 发送方: 单个帧的发送缓冲 以备超时重传时使用 struct PDU sendbuf; 接收方: 单个帧的接收缓冲 struct PDU recvbuf;,23,事件处理(例:发送状态),24,switch(state) case STATE_SEND0: state = S0_fsm(event); break; case STATE_SEND1: state = S1_fsm(event); break; ,25,int S0_fsm(int event) int next_state; next_state = STATE_SEND0; switch(event) case EVENT_ACK: sendbuf.len = fread(sendbuf.data,sizeof(char), sizeof(sendbuf.data),Fid); sendbuf.sequence_num = 1; sendbuf.type = FRAME_DATA; send(sock,(char*) ,26,停等协议的有限状态机设计,事件处理(例,接收状态),switch(state) case STATE_RECV0: state = R0_fsm(event); break; case STATE_RECV1: state = R1_fsm(event); break; ,int R0_fsm(int event) int next_state; next_state = STATE_RECV0; switch(event) case EVENT_RECV0: /duplicate frame ProgramLog(“Dicard frame 0“,“Duplicate“); /send ack sendbuf.type = FRAME_ACK; sendbuf.len = 3; send(ns,(char*) ,停等协议的有限状态机设计,完善细节 起始状态 第一个帧的发送是“没有”条件触发的 结束状态 接收方需要知道还有没有新的数据,28,案例:某嵌入式终端主控程序设计,需求 界面控制,29,30,需求 功能控制,31,基于状态机的主控设计,主程序架构,32,事件驱动基本架构,33,状态设计,34,状态转移图,35,状态转移表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年火电电力职业鉴定试题预测试卷及参考答案详解(综合题)
- 重难点自考专业(行政管理)试题附完整答案【全优】
- 静脉采血知识培训
- 2026届浙江省湖州市南浔区实验学校九上化学期中检测模拟试题含解析
- 库卡机器人进阶培训
- 福建省泉州市第八中学2026届英语九上期末学业水平测试试题含解析
- 2026届江苏省常州市金坛区水北中学英语九上期末教学质量检测试题含解析
- 企业培训师上课
- 2026届山东省滨州市滨城区东城中学化学九年级第一学期期中统考试题含解析
- 2026届四川省成都市石室天府中学九年级化学第一学期期末复习检测试题含解析
- 《用户体验设计导论》
- 税务法律服务行业分析报告及未来三年行业发展报告
- 职业本科《高等数学》课程标准
- 血常规室内质控模板
- YY/T 1943-2024医疗器械唯一标识的包装实施和应用
- 盾构施工基本原理及操作常见问题与处理方法
- 统编版初中语文八年级下册第四单元:超级演说家
- T-CUWA 20059-2022 城镇供水管网模型构建与应用技术规程
- 雅典帕特农神庙古希腊建筑典范与历史见证
- GA/T 2019-2023公安视频监控视频存储技术要求
- 2024零碳建筑评价标准
评论
0/150
提交评论