网络软件设计10——有状态设计

上传人:宝路 文档编号:48215193 上传时间:2018-07-11 格式:PPT 页数:38 大小:1.93MB
返回 下载 相关 举报
网络软件设计10——有状态设计_第1页
第1页 / 共38页
网络软件设计10——有状态设计_第2页
第2页 / 共38页
网络软件设计10——有状态设计_第3页
第3页 / 共38页
网络软件设计10——有状态设计_第4页
第4页 / 共38页
网络软件设计10——有状态设计_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《网络软件设计10——有状态设计》由会员分享,可在线阅读,更多相关《网络软件设计10——有状态设计(38页珍藏版)》请在金锄头文库上搜索。

1、网络软件设计服务器的有状态与无状态服务器的有状态与无状态有状态协议设计有状态协议设计制作 主讲段景山段景山2n n状态状态l l由服务器维护的,关于服务器与客户机正在进行由服务器维护的,关于服务器与客户机正在进行 的交互的交互 的信息称为状态的信息称为状态l l“ “信息信息” ”不是指服务器和客户机交互的数据,而是不是指服务器和客户机交互的数据,而是 关于交互过程本身关于交互过程本身n n有状态服务器有状态服务器l l保存状态信息的服务器程序保存状态信息的服务器程序uu例:认证服务器需要记录与客户交互的状态正在认例:认证服务器需要记录与客户交互的状态正在认 证(等待用户名、等待口令)、已认证

2、等证(等待用户名、等待口令)、已认证等n n无状态服务器无状态服务器l l不保存状态信息的服务器程序不保存状态信息的服务器程序l l例:聊天应用例:聊天应用有状态与无状态服务器段景山3有状态服务n n为什么要求设计有状态服务器为什么要求设计有状态服务器l l任务需求任务需求l l可以减少报文开销(利用报文间的相关性)可以减少报文开销(利用报文间的相关性)n n有状态服务器面临的问题有状态服务器面临的问题l l增加实现的复杂程度增加实现的复杂程度l l需要复杂的协议控制需要复杂的协议控制l l系统在多个状态下转换时,可能因错误事件而导系统在多个状态下转换时,可能因错误事件而导 致:进入非期望状态

3、、死锁、崩溃致:进入非期望状态、死锁、崩溃l l可以设计有限状态机来指导软件实现可以设计有限状态机来指导软件实现段景山4无状态是一个协议问题n n为什么要设计无状态服务为什么要设计无状态服务l l任务需求任务需求l l服务实现简单,可靠性强服务实现简单,可靠性强l l一个报文的意义不依赖先前的报文状态的依一个报文的意义不依赖先前的报文状态的依 赖性赖性n n究竟网络应用软件是有状态的还是无状态的究竟网络应用软件是有状态的还是无状态的l l从系统的角度,系统是从系统的角度,系统是“ “无状态无状态” ”的的uu系统能不断为各次通信服务系统能不断为各次通信服务l l从功能实现角度,复杂的通信应采用

4、有状态方法从功能实现角度,复杂的通信应采用有状态方法 设计设计段景山5有限状态机n n一种直观、全局、准确的协议描述方法一种直观、全局、准确的协议描述方法状态转换事件动作缺点 时序 性不 强段景山6有限状态机的基本结构n状态:l 实体有有限个状态l 每一时刻,实体只处于其中一个状态n事件:l 事件引起实体产生动作,如收到PDU、定时器到时等l 事件按发生的顺序排在事件队列中,等待处理l 事件可能有附加条件n动作:l 处理队列中的一个事件,转移到下一状态 l 不同状态下,对同一事件可能有不同的处理方法l 最简动作:忽略事件,保持状态(图中可省略不画)FSM事 件状态1状态2事件e1 / 动作a1

5、事件e2 / 动作a2事件e3 / 动作a3段景山7例n n以停等协议为例,讲解利用有限状态机实现以停等协议为例,讲解利用有限状态机实现 有状态设计有状态设计l l发送方发送完一个数据包后,需得到接收方的确发送方发送完一个数据包后,需得到接收方的确 认才能发送下一个数据包认才能发送下一个数据包l l若接收方超时没有确认,发送方将重传若接收方超时没有确认,发送方将重传段景山8停等协议的状态机(1)状态机 (Ns, Nr)发送接收递交上层DU协议实体PDU、ACK To:对等实体PDU、ACK From:对等实体状态机的位置段景山9停等协议(2)n n状态的确定状态的确定0ACK1ACK发送方发送

6、方接收方接收方准备发送帧1准备发送帧0等待帧1等待帧0段景山10停等协议状态机准备准备 发送帧发送帧0 0准备准备 发送帧发送帧1 1收到收到ACKACK并准备好并准备好 一个帧一个帧发送帧发送帧0 0收到收到ACKACK并准备好一并准备好一 帧数据帧数据发送帧发送帧1 1超时超时重发帧重发帧0 0超时超时重发帧重发帧1 1等待等待 接收帧接收帧0 0等待等待 接收帧接收帧1 1收到帧收到帧0 0发送发送ACKACK帧帧0 0上交上交收到帧收到帧1 1发送发送ACKACK帧帧1 1上交上交接收方发送方段景山11有限状态机小结n n状态状态l l状态是复合的状态是复合的uu由多个要素形成由多个要

7、素形成uu如:准备发送帧如:准备发送帧0 0状态状态 刚发送了帧刚发送了帧1 1 上层有一个待发的上层有一个待发的SDUSDU 收到了对前一帧的应答收到了对前一帧的应答 等待刚发送的帧的应答还没有超时等待刚发送的帧的应答还没有超时l l系统的状态是稳定的系统的状态是稳定的uu不触发就不变化不触发就不变化l l制定状态的结果可能不唯一制定状态的结果可能不唯一状态1状态2/ x段景山12有限状态机小结n n事件事件l l转换的输入条件转换的输入条件uu若是别的状态的动作造成转换,则跃迁的状态是不稳定若是别的状态的动作造成转换,则跃迁的状态是不稳定 状态,不应出现状态,不应出现uu可以是对等实体的动

8、作可以是对等实体的动作l l状态机一次只处理一个事件状态机一次只处理一个事件uu如果有必要处理多个事件,应定义为复合事件如果有必要处理多个事件,应定义为复合事件状态1状态2事件1/动作1 事件2 (动作1)/动作2,动作2事件1,事件2 /动作3事件1/动作1事件2/动作2状态3状态1事件3 /动作3段景山13有限状态机小结n n动作动作l l动作一定由事件触发动作一定由事件触发uu不触发就自发产生动作是不稳定状态不触发就自发产生动作是不稳定状态l l某些转换不一定产生动作,动作不一定伴随状态某些转换不一定产生动作,动作不一定伴随状态 转换转换uu触发不一定有动作产生,不一定造成状态转换触发不

9、一定有动作产生,不一定造成状态转换状态1/动作1事件1/x状态1事件2/动作2事件3/段景山14有限状态机的作用(1)n n指导协议实现指导协议实现l l根据有限状态机形成状态转移表根据有限状态机形成状态转移表状态状态事件事件动作动作命令:命令: OpenOpen事件事件2 2事件事件3 3事件事件n n关闭关闭处理处理发送:发送:ConnReqConnReq下一状态下一状态连接建立连接建立连接建立连接建立处理处理下一状态下一状态 状态状态n n处理处理下一状态下一状态状态转移表段景山15状态转移表n n停等协议的状态转移表停等协议的状态转移表准备 发送帧0准备 发送帧1发送帧发送帧0 0收到

10、收到ACKACK 发送帧发送帧1 1收到收到ACKACK重发帧重发帧0 0超时超时重发帧重发帧1 1超时超时状态状态事件事件动作动作事件事件1 1事件事件2 2事件事件n n状态状态1 1处理处理下一状态下一状态 状态状态2 2处理处理 下一状态下一状态 状态状态n n处理处理 下一状态下一状态收到收到ACKACK超时超时准备发帧准备发帧0 0处理处理发送帧发送帧0 0重发帧重发帧1 1下一状态下一状态准备发帧准备发帧1 1/ /准备发帧准备发帧1 1处理处理发送帧发送帧1 1重发帧重发帧0 0下一状态下一状态准备发帧准备发帧0 0/ /段景山16状态转移表n n停等协议的状态转移表停等协议的

11、状态转移表等待帧0等待帧1发送发送ACKACK收到帧收到帧0 0 发送发送ACKACK收到帧收到帧1 1状态状态事件事件动作动作事件事件1 1事件事件2 2事件事件n n状态状态1 1处理处理下一状态下一状态 状态状态2 2处理处理 下一状态下一状态 状态状态n n处理处理 下一状态下一状态收到帧收到帧0 0收到帧收到帧1 1等待帧等待帧0 0处理处理发送发送ACKACK/ /下一状态下一状态等待帧等待帧1 1/ /等待帧等待帧1 1处理处理发送发送ACKACK下一状态下一状态等待帧等待帧0 0段景山17fsm程序框架n n根据状态转移表形成根据状态转移表形成fsmfsm程序可能的框架程序可能

12、的框架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.cif(当前状态=X)段景山18改进的fsm程序框架main()state = initial;while(1)waite for a event;switch(state)case X:state = x_fsm(event)

13、;case Y:state = y_fsm(event); x_fsm(事件) switch( 事件)case 事件1:case 事件2:default:ignore; return next_state;action 1; next_state = xxx;段景山19有限状态机的设计n n事件的产生事件的产生l l停等协议的事件停等协议的事件uu接收到数据:接收到数据:InformationInformation、ACKACKuu定时器定时器l l利用利用selectselect()()uu接收到数据接收到数据 readread事件事件进一步判决为进一步判决为InformationInfor

14、mation、ACKACK等等uu定时定时 select timeout select timeout 超时计时超时计时 例:定时器为例:定时器为5 5秒,秒,timeouttimeout可设为可设为5 5秒,如果秒,如果selectselect 返回值为返回值为0 0则认为超时则认为超时 或者或者timeouttimeout设为设为1 1秒,连续五次秒,连续五次selectselect返回值为返回值为0 0, 则认为超时。则认为超时。段景山20有限状态机的设计main()state = initial;while(1)waite for a event;switch(state)case X

15、:state = x_fsm(event);case Y:state = y_fsm(event); main( )main( )timeout = 5; timeout = 5;while(1) while(1)retval = select(,timeout); retval = select(,timeout);if(retval = 0) if(retval = 0)event = TIMEOUT; event = TIMEOUT;else if(FD_ISSET(s,read) else if(FD_ISSET(s,read)check the data type; check the data type;event = data type; event = data type; switch(state) switch(state) 段景山21停等协议的有限状态机设计n n事件定义事件定义l l#define EVENT_RECV0 1#define EVENT_RECV0 1l l#define EVENT_RECV1 2#define EVENT_RECV1 2l l#define EVENT_ACK#define EVENT_ACK3 3l l#define EVENT_TIME#define EVENT_TIME4 4 n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号