reliable_udp概要设计.doc

上传人:pu****.1 文档编号:554883874 上传时间:2023-10-20 格式:DOC 页数:13 大小:335.31KB
返回 下载 相关 举报
reliable_udp概要设计.doc_第1页
第1页 / 共13页
reliable_udp概要设计.doc_第2页
第2页 / 共13页
reliable_udp概要设计.doc_第3页
第3页 / 共13页
reliable_udp概要设计.doc_第4页
第4页 / 共13页
reliable_udp概要设计.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《reliable_udp概要设计.doc》由会员分享,可在线阅读,更多相关《reliable_udp概要设计.doc(13页珍藏版)》请在金锄头文库上搜索。

1、 概要设计说明书reliable_udp概要设计说明书目录1. 前言31.1目的31.2使用范围41.3读者对象41.4术语与缩略语41.5参考/引用文档42 系统简介43系统架构53.1 逻辑视图53.2 物理视图54.技术架构64.1技术介绍64.2 设计规范75系统设计75.1对外接口设计75.2 通信包设计86对象模型及描述106.1系统类图106.2公共对象117动态模型117.1消息调度117.2 消息确认127.3 建立连接序列128接口交互设计128.1技术架构129质量属性设计129.1性能129.2可靠性129.2.1传输可靠性121. 前言1.1目的说明编写这份概要设计说

2、明书的目的,此文档为系统分析员工作的阶段性总结并提供项目经理、设计人员、测试人员和开发人员参考。描述reliable_udp的概要设计,为后继的详细设计提供基础。使项目相关人员,如产品经理、项目经理、设计人员、开发人员、测试人员等清楚地了解系统的设计,并形成统一的思想。1.2使用范围本文是reliable_udp的概要设计1.3读者对象产品经理、项目经理、设计人员、测试人员和开发人员,以及其他项目干系人。1.4术语与缩略语文档中涉及的相关术语、缩略词Udp mtu ip1.5参考/引用文档项目文档、公司规程、行业规范等相关参考材料 2 系统简介包括系统整体功能介绍及系统实际所处环境介绍Reli

3、able_tup是建立在udp协议上的可靠数据传输。通信双方传输的报文没有大小限制,系统在收到报文后按照数据流方式提交给上层系统。Reliable_udp具有快速、灵活的特点,能够提供在某些只能使用udp而又需要可靠传输的场合。3系统架构3.1 逻辑视图系统逻辑系统架构设计3.2 物理视图系统物理系统架构设计系统整体架构如下图所示:4.技术架构系统采用的技术介绍及设计规范和标准4.1技术介绍n Peer-peer模式Reliable_udp是点到点的连接协议。n 通讯基于udpReliable_udp建立在udp协议之上,使用udp来收发数据。UDP协议的全称是用户数据包协议,在网络中它与TC

4、P协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。n 采用滑动窗口机制防止拥堵Reliable_udp借鉴tcp协议中的滑动窗口机制来防止网络拥堵,发送方一次只能最多发送对方窗口中的数据,根据通信的进行,窗口不断向后移动。n 采用ack方式保证消息可靠Reliable_udp

5、双方连接时相互交换各自起始报文序号,协商mtu值,交换滑动窗口大小。报文到达确认(ACK),是对接收到的数据的最高序列号的确认,并向发送端返回一个下次接收时期望的数据包的序列号(Ack Number)。例如,主机A发送的当前数据报文序号是400,则接收端收到后会返回一个确认号是401的确认号给主机A。 Reliable_udp提供的确认机制,可以在通信过程中可以不对每一个数据包发出单独的确认包(Delayed ACK机制),而是一定间隔,或者对方请求确认(例如发现对方重发了某一报文)时发送。Reliable_udp也可提供单包确认机制,这样可以减小网络延时。但会带来网络带宽的使用量增大。大容量

6、传输时效率降低。n 采用mtu分片减少重发几率Mtu是ip层的一个概念,由于物理链路限制存在一个mtu值,即最大报文长度,一般以太网为1500。如果udp传输的报文大于mtu值,到达ip层时,ip层就会分包然后分包发送,最终在对方主机完成封装成udp报文。如果其中一个分组丢失,则整个报文丢失。为了减少重发的数据量,reliable_udp在发送udp报文时,总是小于设定的mtu值。n 采用心跳和超时机制保证链接Reliable_udp内部存在许多定时器来维护双方连接。如下:1. 发送超时时定时器:自发送最后一个报文时t时间段内没有确认回复触发2. 空闲状态定时器,在空闲t时间段内没有数据发送,

7、触发,并发送带确认信息的数据给对方。3. 连接超时定时器,连接时超时触发。4.2 设计规范包括系统分层规范,技术使用标准规范,系统体系、包、类命名设计标准规范,各种设计规定契约5系统设计系统总体结构和模块设计Reliable_udp职在提供一个基于udp传输层协议的可靠数据传输。提供类似tcp协议。5.1对外接口设计Reliable_udp提供对外接口,供其他库或者程序使用,接口设计如下:#ifndef _API_H_#define _API_H_namespace reliable_udptypedef int RUDPSOCKET;const RUDPSOCKET INVALID_SOCK

8、 = -1;typedef void (* CompleteHandle)(RUDPSOCKET sock, char* buff, int length, int errorCode);typedef void (* LogHandle)(RUDPSOCKET sock, char* log, int length, int errorCode);typedef void (* ConnectHandle)(RUDPSOCKET sock, int errorCode);RUDPSOCKET socket();int bind(RUDPSOCKET sock, char* ip, short

9、 port);int listen(RUDPSOCKET sock, short max);RUDPSOCKET accept(RUDPSOCKET sock);int close(RUDPSOCKET sock);int asyncConnect(RUDPSOCKET sock, char* remoteIp, short remotePort, ConnectHandle connectHandle);int asyncSendto(RUDPSOCKET sock, char* buff, int length);int setAsyncSentHande(RUDPSOCKET sock,

10、 CompleteHandle sentHandle);int setAsyncRecvHandel(RUDPSOCKET sock, CompleteHandle recvHandle);int setLog(RUDPSOCKET sock, LogHandle logHandle);#endif /end _API_H_5.2 通信包设计Reliable_udp通信双方在交换数据的同时,需要交换相关资源情况,需要发送相应控制命令。故通信包需要按照指定格式进行。通用包设计。包头包体4字节1bit 标志位31bit 消息序号数据长度其中1bit的标志为0时表示是应用消息,为1时表示是relia

11、ble_udp内部消息。Reliable_udp内部通信包:1. 请求连接包头包体4字节1bit 标志位31bit 消息序号数据typemutSeq给对方分配的序号Window size2. 回复连接包头包体4字节1bit 标志位31bit 消息序号数据typemutSeq给对方的消息序号Window size3. 消息确认包头包体4字节1bit 标志位31bit 消息序号数据typeSeq期望对方的下一消息序号Window size4. 序号重设包头包体4字节1bit 标志位31bit 消息序号数据typeseqWindow size发送消息序号重设前,应该发送心跳诊断,让对方完全对自己报文

12、接收完整后再发送。5. 心跳诊断包头包体4字节1bit 标志位31bit 消息序号数据typeSeq期望对方的下一个消息序号Window size 6.断开连接包头包体4字节1bit 标志位31bit 消息序号数据typeSeq期望对方的下一个消息序号Window size断开连接后,RUDP任会向对方传输缓冲区里的数据,但对方发送过来的数据不会提交给上层。如果7. 回复断开包头包体4字节1bit 标志位31bit 消息序号数据typeSeqWindow size6对象模型及描述提供整个系统的对象模型,如果模型过大,按照可行的标准把它划分成小块,这些对象都是从理解需求后得到的。所有对象之间的关

13、联必须被确定并且必须指明其联系聚合和继承等关系。每个图必须附有对象描述,它的属性、它的方法。6.1系统类图上图为UDPPeer RUDPSocket Application之间的关系,RUDPSOCKET与RUDPSocket对象是一一对应的关系。Application为库的入口和资源管理类。包含事件管理器,聚合所有RUDPSocket和UDPPeer资源。UDPPeer是对udp的封装。由本地ip和端口唯一标示,是RUDPSocket的底层通信对象。它后面可以挂接多个已经连接的RUDPSocket和一个用于监听的RUDPSocket对象。此对象上收到的数据将派发到挂接其上的RUDPSocke

14、t上。RUDPSocket对象是可靠udp对象的封装。6.2公共对象RUDP封装了执行可靠算法的相应操作。Packet是消息包的封装。RecvLossList接收到的消息丢失的序号链表,方便查找。SendLossList发送给对方,对方为确认的链表7动态模型这部分的作用是描述系统如何响应各种事件。一般使用顺序图和状态图。确定不同的场景(Scenario)是第一步,不需要确定所有可能的场景,但是必须至少要覆盖典型的系统用例。不要自己去想当然地创造场景,通常的策略是描述那些客户可以感受得到的场景。7.1消息调度 Udp收到报文到投递给上层应用序列图:7.2 消息确认7.3 建立连接序列8接口交互设计8.1技术架构9质量属性设计包括出性能、安全等方面考虑而进行的设计9.1性能9.2可靠性9.2.1传输可靠性变更记录版本号修改原因内容修改人审核批准人修改时间V0.1创建朱贤章2012-8-10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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