收藏 分销(赏)

reliable_udp概要设计.doc

上传人:pc****0 文档编号:7827003 上传时间:2025-01-19 格式:DOC 页数:13 大小:335.30KB 下载积分:10 金币
下载 相关 举报
reliable_udp概要设计.doc_第1页
第1页 / 共13页
reliable_udp概要设计.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
概要设计说明书 [reliable_udp]概要设计说明书 目录 1. 前言 3 1.1目的 3 1.2使用范围 4 1.3读者对象 4 1.4术语与缩略语 4 1.5参考/引用文档 4 2 系统简介 4 3系统架构 5 3.1 逻辑视图 5 3.2 物理视图 5 4.技术架构 6 4.1技术介绍 6 4.2 设计规范 7 5系统设计 7 5.1对外接口设计 7 5.2 通信包设计 8 6对象模型及描述 10 6.1系统类图 10 6.2公共对象 11 7动态模型 11 7.1消息调度 11 7.2 消息确认 12 7.3 建立连接序列 12 8接口交互设计 12 8.1技术架构 12 9质量属性设计 12 9.1性能 12 9.2可靠性 12 9.2.1传输可靠性 12 1. 前言 1.1目的 [说明编写这份概要设计说明书的目的,此文档为系统分析员工作的阶段性总结 并提供项目经理、设计人员、测试人员和开发人员参考。] 描述reliable_udp的概要设计,为后继的详细设计提供基础。使项目相关人员,如产品经理、项目经理、设计人员、开发人员、测试人员等清楚地了解系统的设计,并形成统一的思想。 1.2使用范围 本文是reliable_udp的概要设计 1.3读者对象 产品经理、项目经理、设计人员、测试人员和开发人员,以及其他项目干系人。 1.4术语与缩略语 [文档中涉及的相关术语、缩略词] Udp mtu ip 1.5参考/引用文档 [项目文档、公司规程、行业规范等相关参考材料] 2 系统简介 [包括系统整体功能介绍及系统实际所处环境介绍] Reliable_tup是建立在udp协议上的可靠数据传输。通信双方传输的报文没有大小限制,系统在收到报文后按照数据流方式提交给上层系统。Reliable_udp具有快速、灵活的特点,能够提供在某些只能使用udp而又需要可靠传输的场合。 3系统架构 3.1 逻辑视图 [系统逻辑系统架构设计] 3.2 物理视图 [系统物理系统架构设计] 系统整体架构如下图所示: 4.技术架构 [系统采用的技术介绍及设计规范和标准] 4.1技术介绍 n Peer-peer模式 Reliable_udp是点到点的连接协议。 n 通讯基于udp Reliable_udp建立在udp协议之上,使用udp来收发数据。 UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。 n 采用滑动窗口机制防止拥堵 Reliable_udp借鉴tcp协议中的滑动窗口机制来防止网络拥堵,发送方一次只能最多发送对方窗口中的数据,根据通信的进行,窗口不断向后移动。 n 采用ack方式保证消息可靠 Reliable_udp双方连接时相互交换各自起始报文序号,协商mtu值,交换滑动窗口大小。报文到达确认(ACK),是对接收到的数据的最高序列号的确认,并向发送端返回一个下次接收时期望的数据包的序列号(Ack Number)。例如,主机A发送的当前数据报文序号是400,则接收端收到后会返回一个确认号是401的确认号给主机A。 Reliable_udp提供的确认机制,可以在通信过程中可以不对每一个数据包发出单独的确认包(Delayed ACK机制),而是一定间隔,或者对方请求确认(例如发现对方重发了某一报文)时发送。 Reliable_udp也可提供单包确认机制,这样可以减小网络延时。但会带来网络带宽的使用量增大。大容量传输时效率降低。 n 采用mtu分片减少重发几率 Mtu是ip层的一个概念,由于物理链路限制存在一个mtu值,即最大报文长度,一般以太网为1500。如果udp传输的报文大于mtu值,到达ip层时,ip层就会分包然后分包发送,最终在对方主机完成封装成udp报文。如果其中一个分组丢失,则整个报文丢失。为了减少重发的数据量,reliable_udp在发送udp报文时,总是小于设定的mtu值。 n 采用心跳和超时机制保证链接 Reliable_udp内部存在许多定时器来维护双方连接。如下: 1. 发送超时时定时器:自发送最后一个报文时t时间段内没有确认回复触发 2. 空闲状态定时器,在空闲t时间段内没有数据发送,触发,并发送带确认信息的数据给对方。 3. 连接超时定时器,连接时超时触发。 4.2 设计规范 [包括系统分层规范,技术使用标准规范,系统体系、包、类命名设计标准规范,各种设计规定契约] 5系统设计 [系统总体结构和模块设计] Reliable_udp职在提供一个基于udp传输层协议的可靠数据传输。提供类似tcp协议。 5.1对外接口设计 Reliable_udp提供对外接口,供其他库或者程序使用,接口设计如下: #ifndef _API_H_ #define _API_H_ namespace reliable_udp { typedef int RUDPSOCKET; const RUDPSOCKET INVALID_SOCK = -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 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, 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时表示是reliable_udp内部消息。 Reliable_udp内部通信包: 1. 请求连接 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type mut Seq 给对方分配的序号 Window size 2. 回复连接 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type mut Seq 给对方的消息序号 Window size 3. 消息确认 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type Seq 期望对方的下一消息序号 Window size 4. 序号重设 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type seq Window size 发送消息序号重设前,应该发送心跳诊断,让对方完全对自己报文接收完整后再发送。 5. 心跳诊断 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type Seq 期望对方的下一个消息序号 Window size 6.断开连接 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type Seq 期望对方的下一个消息序号 Window size 断开连接后,RUDP任会向对方传输缓冲区里的数据,但对方发送过来的数据不会提交给上层。如果 7. 回复断开 包头 包体 4字节 1bit 标志位 31bit 消息序号 数据 type Seq Window size 6对象模型及描述 [提供整个系统的对象模型,如果模型过大,按照可行的标准把它划分成小块,这些对象都是从理解需求后得到的。所有对象之间的关联必须被确定并且必须指明其联系聚合和继承等关系。每个图必须附有对象描述,它的属性、它的方法。] 6.1系统类图 上图为UDPPeer RUDPSocket Application之间的关系, RUDPSOCKET与RUDPSocket对象是一一对应的关系。 Application为库的入口和资源管理类。包含事件管理器,聚合所有RUDPSocket和UDPPeer资源。 UDPPeer是对udp的封装。由本地ip和端口唯一标示,是RUDPSocket的底层通信对象。它后面可以挂接多个已经连接的RUDPSocket和一个用于监听的RUDPSocket对象。此对象上收到的数据将派发到挂接其上的RUDPSocket上。 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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服