网络通信系统的设计与实现论文.docx
- 文档编号:28860641
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:47
- 大小:258.74KB
网络通信系统的设计与实现论文.docx
《网络通信系统的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《网络通信系统的设计与实现论文.docx(47页珍藏版)》请在冰豆网上搜索。
网络通信系统的设计与实现论文
网络通信软件的设计与实现
摘要
本论文是关于一个通信软件的设计与实现.首先介绍了该课题的来源和意义,以及课题中作者使用的原理技术,包括客户/服务器模式(C/S)结构原理,TCP/IP协议的体系结构等。
然后详细分析了系统的整体设计,包括系统的功能介绍、实现思想,系统的需求分析,系统通信协议的设计,各个模块的体系结构,并采用UML技术,绘制整体程序结构图、流程图、类图、用例图等。
接下来是介绍了各个子模块的功能、实现思想及它们的流程图、类图、消息流框图等。
最后是系统的分析及优缺点及系统的总结和展望。
终端通过实际的通信链路和服务器建立TCP连接。
而服务器端是接受并验证客户端连接,动态管理在线用户名单。
关键字:
C/S结构;TCP/IP协议;UML技术;网络编程
abstract
Thepaperisaboutthedesignandrealizationofcorrespondencesoftware.IntheFirstthispaperintroducedtopicoriginandthetopicsignificance,Aswellastheprincipleandthetechnologythattheauthoradoptsinthepaper,Includingcustomer/Server(C/S)structureprinciple,TCP/IPprotocolsystemstructureandsoon.Thenauthoranalyzesthattheoveralldesign,Includingsystemfunctionintroduction,realizationway,demandanalysis,communicationagreementdesign,systemstructureofeachmodule.AndadoptingtheUMLtechnology,theauthordrawstheoverallprocedurestructuredrawing,theflowchart,classdrawing,andmessageflowchartandsoon.Finallythepaperintroducedthatthesystematicanalysis、theexcellenceandthedisadvantageofthesystem,thesummaryandtheforecastofthesystem.
TheterminalestablishestheTCPcommunicationsthroughtheactualcorrespondencelinkwiththeserver.Atthesametimetheserveracceptsandvalidatestheconnectionoftheclient,dynamicallymanagesthenamelistoftheon-lineusers.
Keywords:
theC/SStructure;theTCP/IPProtocol;theUMLTechnology;
NetworkProgramming
第一章绪论
1.1课题的来源及意义
目前,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、QQ为代表的即时通信软件。
据统计,迄今为止,全球约有一亿多人使用IM(即时通信)软件在网上交流。
中国网民惯用的即时聊天工具——腾讯QQ从诞生到现在,注册用户已超过1.6亿,在线用户最高时超过200万人,而每天独立上线人数更是达到1200多万,拥有活跃用户5500万,几乎覆盖所有中国网民。
腾讯公司的QQ是一个相当流行的即时通信(IM)软件。
QQ的基本功能就是QQ用户间的即时信息传输,因此,QQ以及一些类似的软件又称为“聊天软件”。
经过不断的发展,QQ的功能已经相当丰富,但QQ最基本和应用最多的功能仍是即时文本传输。
本课题来源与对现代社会高速发达的通讯技术的需求。
本课题软件采用客户机/服务器的网络通信的经典模型,整个课题分两大方面加以实现:
一方面是服务端软件设计;另一方面是用户端软件设计。
完成整个课题分三个阶段完成:
第一阶段:
完成整体系统的分析以及通信协议的设计,初步确定整个软件的结构。
第二阶段:
实现代码、调试,类结构设计,类图的构建完成客户端和服务器端软件开发工作。
第三阶段:
完成对系统的测试分析,组装成品。
当今,全球通信产业的两个突出特点体现在:
一是公众通信保持增长态势,一些国家和地区增势强劲,但存在发展不均衡的现象;二是宽带通信技术热点不断,研究和应用十分活跃。
本课题所设计的软件以简单的c/s经典网络通信结构为基础有较强的通信能力,特别是文本通信,以信息框的形式显示传输信息,易于用户读取与接收信息。
这里需要说明的是,服务器必须有管理用户信息(登陆用户名、密码等)的永久存储介质,例如磁盘文件或数据库,但本课题为简化设计,把这部分省去。
但课题所涉及的通信原理并没有省略,利用最基本的TCP通信协议实现客户端和服务器端的文本传输。
1.2项目开发的几个重要环节
本项目研发主要是两大部分[1],客户端软件设计部分和服务器端软件设计部分。
以下分别简单讲述两个部分的关键技术环节。
●服务器部分
服务器端主要完成通信线路的建立接收用户端传来的信息,服务器程序通常都与数据库相结合,用户端只有向服务器发送连接请求,得到服务器段允许才可以建立连接,从而实现数据传输,关键问题主要集中在以下几个方面:
编码压缩及传输技术、存储和I/O调度策略、流量控制与差错控制、接入控制、IP网的实现,服务器客户端模型如图1-1:
图1-1客户端/服务器模型
●客户端部分
客户端主要工作是向服务器提交信息,它的核心部分主要有:
应答区、对话区等。
不同协作类型的系统对这2个部分的侧重点可能不同,开发过程中涉及TCP/IP协议技术,MFC网络编程技术等。
系统采用客户端/服务器方式,管理和维护十分简单。
1.3作者的主要工作
整个项目的研发过程是按照软件工程开发流程进行的。
作者的主要工作是参与项目的需求分析,结构规划等详细设计,通信模块的设计,类结构及类图的制定,在此过程中主要利用了计算机通信协议原理,在WINDOS平台下开发通信软件,主要包括套接字编程,以及通信程序设计实现技术等
第二章Socket编程基础
2.1TCP/IP协议
2.1.1TCP/IP参考模型的层次结构
TCP/IP协议栈是美国国防部高级研究计划局计算机网(AdvancedResearchProjectsAgencyNetwork,ARPANET)和其后继因特网使用的参考模型。
ARPANET是由美国国防部(U.S.DepartmentofDefense,DoD)赞助的研究网络。
最初,它只连接了美国境内的四所大学。
随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。
最终ARPANET发展成为全球规模最大的互连网络-因特网。
最初的ARPANET于1990年永久性地关闭[2]。
TCP/IP参考模型分为四个层次:
应用层、传输层、网络互连层和主机到网络层。
如图2-1所示。
图2-1 TCP/IP参考模型的层次结构
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。
同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。
下面,分别介绍各层的主要功能。
1、主机到网络层
实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层——网络互连层一个访问接口,以便在其上传递IP分组。
由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
2、网络互连层
网络互连层是整个TCP/IP协议栈的核心。
它的功能是把分组发往目标网络或主机。
同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。
因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网络互连层定义了分组格式和协议,即IP协议(InternetProtocol)。
网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。
除此之外,网络互连层还需要完成拥塞控制的功能。
3、传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。
在传输层定义了两种服务质量不同的协议。
即:
传输控制协议TCP(transmissioncontrolprotocol)和用户数据报协议UDP(userdatagramprotocol)。
TCP协议是一个面向连接的、可靠的协议。
它将一台主机发出的字节流无差错地发往互联网上的其他主机。
在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。
在接收端,它负责把收到的报文进行重组后递交给上层。
TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。
应用层面向不同的网络应用引入了不同的应用层协议。
其中,有基于TCP协议的,如文件传输协议(FileTransferProtocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(HyperTextTransferProtocol,HTTP),也有基于UDP协议的。
Web浏览器和Web服务器都是应用HTTP协议,这是一种建立在TCP/IP只上的无连接协议。
HTTP也在OSI(OpenSystemInterconnectReferenceModel,由7层结构组成,没一层有特定的网络功能。
)模型的应用层上工作。
但是使用HTTP进行软件层之间的通信时,于命名管道或TCP/IP套接字相比,在层次之间提供的接口要窄的多。
开发通信系统时,关心的主要是网络层的IP协议和运输层的TCP和UDP协议
2.1.2TCP/IP协议的通信方式
TCP/IP协议是Internet上广泛使用的一种协议,可用于异种机之间的互联。
在网络编程中,程序员只需要利用协议的网络编程接口Socket9(也称套接字)即可。
在Windows中,网络编程接口是WindowsSocket,它包含标准的BerkleySocket的功能调用集合,以及为Windows所做的一些扩展。
TCP/IP协议的应用一般采用客户/服务器模式,面向连接的应用调用如图2-2所示。
这时,程序无法响应任何消息。
为了避免出现这种情况,可以引进辅助线程。
在执行含有可能阻塞的函数的任务时,动态创建新的线程,专门处理该任务。
主线程把任务交给辅助线程后,不再对辅助线程加以控制与调度。
多线程机制引进通信,有利于提高应用程序的实时性,充分利用系统资源[3]。
图2-2面向连接的套接字调用顺序
2.2Socket简介
Socket的英文意思是“孔”或“插座”,中文译为“套接字”,是一种进程的通信机制。
Socket是可以被命名和寻址的通信端点,它用一个Socket号标识一个与之联系的进程。
Socket向应用程序提供了统一的网络通信编程接口,屏蔽了下层的通信协议和物理介质的细节,降低了通信系统开发难度。
Socket存在于通信域中。
所谓的通信域,就是利用Socket通信的进程的相关特性、信息的集合。
TCP/IP协议使用的是网际通信域(AF_INET)。
2.2.1Socket历史
Socket最早出现在BSDUNIX操作系统中,是BSD4.X内核的一部分,一般称之为BerkeleySocket。
事实上,TCP/IP编程存在两套编程接口:
Socket和TLI(TransportLayerInterface)。
由于众多制造商,如SunMicrosystem,Tektronix等都支持Socket,使得Socket的到了广泛的应用,至今已成为网络程序设计的标准。
Socket最初并不支持DOS和MicrosoftWindows平台。
Socket在UNIX平台下的成功使人们产生了将它移植到DOS和Windows环境的设想。
1992年,制定出了WindowsSocket规范1.0版(WINSocket1.0),随后又推出了1.1版(WINSocket1.1)。
WindowsSocket不但实现了BerkeleySocket全部功能,而且在其基础上做了重要扩充。
这些扩充主要是提供了一些异步的Socket函数,并增加了对网络事件的异步选择机制,使之更符合Windows消息的驱动的特性。
随着32位Windows的出现和其不断发展,使原来的16位WindowsSocket规范不能满足需要。
从而1994年5月开始,SunMicrosystem等几家公司组成的WindowsSocket工作小组开始制定WindowsSocket2规范(简称WinSock2),并于1997年发布了WinSock2.2.1版。
WinSock2是WinSock1.1是发展和扩充,它保持了和原先WindowsSocket的兼容能力。
WinSock2的主要特点在于其协议无关性,应用程序可以根据需要安装多种不同的通信协议;另外,WinSock2在数据传输功能方面也有重大提高,使之更适合网络多媒体和实时应用场合。
当今广泛使用的是WinSock1.1。
2.2.2Socket的类型
TCP/IP协议使用的套接字分为三类,它们是:
流式套接字(SOCK_STREAM)、数据报套接字(SOCK_DGREAM)和原始套接字(SOCK_RAW)。
1.流式套接字(SOCK_STREAM)
流式套接字向应用提供面向连接的、可靠的通信流,数据发送无差错、无重复且保证接收到数据的顺序性。
流式套接字最典型的应用是BBS和HTTP服务。
以BBS应用为例,用户通过TELNET协议和服务器建立连接,在浏览论坛帖子的交互过程中,数据总是顺序地在源端和目的端之间传输的。
流式套接字的通信能力是由TCP协议保证的。
通过前面的介绍,可以知道TCP提供的是端到端的可靠的、面向连接的数据流服务,尽管它建立在无连接的IP协议(其可靠性和面向连接的协议相比较差)之上。
2.数据报套接字(SOCK_DGRAM)
数据报套接字向应用提供的是无连接的服务。
数据以报文的形式发送,且不能保证数据的无差错和顺序到达。
使用数据报套接字的例子包括DNS(DomainNameService,域名服务)和NFS(网络文件系统)等。
数据报套接字的一个显著优点在于它的开销小,适合于网络广播和组播等需要一对多发送数据的场合和频繁交互的应用(如DNS)。
数据报套接字依赖UDP协议提供服务,这是它具有上述属性的原因。
进程要正常工作,而数据报套接字不能保证传输的正确性,因此应用程序必须内建有差错消除机制,广泛采用的策略是发送端确定一个等待时间,如果在等待时间内没有接受接收端的确定报文,就接着发送欲发送的报文,直到接受接收端的确认为止。
3.原始套接字(SOCK_RAW)
应用程序中一般极少使用原始套接字。
它功能强大,但操作比较复杂。
它可以访问底层的协议(如IP,ICMP),一般用于协议的开发。
常用DOS程序ping可以用原始套接字实现。
2.2.3客户机/服务器模式
TCP/IP协议应用的主要体系结构模式是客户机/服务器模式(Client/Server,简称C/S模式)。
在两个不同进程的通信过程中,一方发出服务请求,一方提供服务,通常称它们为“客户进程”和“服务进程”。
显然,两个进程之间的通信实际上是基于通信协议的进程的同步过程,服务进程作为资源的提供者,为众多主机上的客户进程提供服务。
服务进程要先于客户进程开启在某一确定的网络地址(IP地址+端口号)等待客户进程的请求,如有请求到达,服务进程采取某种方式(并发服务或重复服务)为客户进程提供服务,直到客户进程关闭,然后服务进程继续等待下一个请求服务的进程。
服务器通常采用并发服务的方式。
所谓并发服务,就是服务进程在有客户请求到来时,激活新的进程来专门为此客户请求提供服务,并在客户终止请求后杀死该进程,与此同时,原先的进程可以继续在原来的端口等待下一个客户的连接。
Socket编程接口为新的请求创建一个专门的“数据套接字”,并发服务器根据该套接字启动专门的服务进程。
并发服务的最大优点是能即使响应请求,虽然创建新进程会增加系统开销。
与此相应的是重复服务,它利用“数据套接字”,在监听的进程上直接进行服务。
需要说明的是,两种类型的Socket(SOCK_DGREAM和SOCK_STREAM)的工作流程是不尽相同的。
分别如图2-3和图2-4所示。
2.2.4阻塞和非阻塞
Socket调用有两种基本模式:
阻塞模式和非阻塞模式。
所谓阻塞模式,就是说进程调用某一Socket函数后由于某种原因不能马上完成,这时调用进程就一直等待,直到函数返回为止。
与此相应的非阻塞模式在调用Socket函数后马上返回,等待调用完成时系统自动会以消息的方式通知调用进程。
绝大部分BerkeleySocket调用都是阻塞调用。
由于UNIX是抢先式多任务操作系统,在进程阻塞时,系统会将CPU的使用权交给等待的其他进程。
这样不会阻塞其他进程的执行。
而Windows操作系统是非抢先式的,进程不会主动放弃对CPU的控制权,因此一个等待阻塞调用返回的进程会阻塞整个系统。
WindowsSocket规范根据Windows平台的具体特点,在BSDSocket基础上扩充了非阻塞的Socket调用模式,使Socket编程更加符合Windows系统消息驱动的特性。
图2-3数据套接字服务的工作流程示意图
图2-4流式套接字服务的工作流程示意图
第三章需求分析
3.1软件开发方案
在开发本软件之前,先确定整个软件系统的综合要求以及系统的数据要求,对于本软件希望能做到的要求和软件特征如下:
1.本软件是一个简单的即时通信软件,完成后能进行简单的文本传输。
软件分为两部分,server和client,即服务器端和客户端。
客户端能相互进行文本传输。
2.服务器端能实现启动和终止服务,具有主动权。
3.服务器端能接受并验证客户端连接。
4.服务器端能动态管理在线用户名单,为新登录用户提供本服务器在线人员名单,将在线人员变动信息(用户上线、下线)及时传给当前再线用户。
●用户上线
用户上线功能分为两部分:
第一:
开启系统的时候,使用系统的用户就要收到这个人的信息,知道他已经上线。
第二:
系统在运行之中,它会不断地进行心跳告诉其他人。
这个功能是为了防止在系统启动的时候发出的用户信息没有被其他的使用本地系统的人收到。
使用心跳功能后,用户的信息会不断地通知在线的人,这样有利于系统的稳定。
这个功能要采用网络广播来实现。
●用户下线
当用户退出本系统时,系统会自动发出下线的信息。
凡是正在使用本系统的人都会得到通知,得到这个通知后,每个在线的人都会看到这个用户的信息从自己的列表中删除。
1.客户端可以自由登录(login)、登出(logout)指定的Chat服务器。
2.客户端可以根据服务器上的在线人员变动信息(用户上线、下线)修改本机保存的在线人员名单。
3.客户端可以和其他用户的即时通信(发送和接受文本信息)。
3.2软件的信息传递过程
客户端发送请求,服务器根据请求是否建立连接[4],用例图表示图3-1
图3-1信息传递过程
用活动图表示图3-2
图3-2信息传递过程
3.3系统初始化(活动图表示)
图3-3系统初始化
3.4用户上下线动态管理
服务器端能动态管理在线用户名单,为新登录用户提供本服务器在线人员名单,将在线人员变动信息(用户上线、下线)及时传给当前再线用户,用用例图表示图3-4
图3-4用户上下线
用户上线(活动图表示)图3-5
图3-5用户上线
第四章系统的概要设计
4.1系统的实现思想
4.1.1系统整体结构
Chat系统的结构如图4-1所示。
Chat的客户端通过实际的通信链路和Chat服务器建立TCP连接。
图4-1整体结构图
4.2通信协议和报文格式
通信协议指的是由应用程序定义的数据信息的解释机制,是通信进程交流和沟通的“语言”。
TCP/IP协议是“低级语言”,它定义的是接入Internet的主机、路由器之间的信息沟通的方法。
TCP/IP各层对数据是逐级封装,每一层都包括本层的数据和报文头两部分。
例如UDP数据报。
UDP、TCP数据报的数据部分是高层应用需要传输的数据,这些数据的内容需要应用程序之间定义的“语言”----即协议来解释并执行相应的操作。
Chat的通信协议比较简单,且数据报文都具有如图4-2所示的形式。
下面详细论述Chat中定义的各个命令及主要的通信时序。
图4-2Chat数据包格式
1.用户登录命令----100
它是客户端命令。
该命令是用户用于向服务器发送登录信息的命令。
它的数据包中的数据部分是一个包含用户登录信息的结构(详细后面的“结构、类型和宏”部分)。
这里定义的登录信息仅包括用户名和密码两部分。
2.用户登出命令----101
它是客户端命令。
该命令用于通知服务器用户登出,服务器在收到此命令后向该客户端发送一个包含此命令且没有数据的确认数据包。
客户端在收到此确认数据包后便可关闭连接了。
它的数据包中的数据部分是一个包含用户信息的结构(详见后面的“结构、类型和宏”部分)。
这里定义的用户信息包括用户名、用户的IP地址和端口号三个字段。
3.字符串消息----102
它是客户端命令。
该命令指示在CHAT数据包部分的数据是一个以“/0”结尾的字符串。
事实上,102号命令仅用于CHAT客户端之间的通信。
服务器和客户端相互发送字符串消息的功能CHAT中并没有定义。
这里规定,发送的字符串长度不能超过4KB。
4.用户信息列表命令----200
它是服务器端命令。
该命令指示数据包中的数据是一个用户信息的列表。
数据包在新用户登录并通过验证后,由服务器端发送到新用户的客户端。
该命令的数据包格式如下图4-3所示。
图4-3用户数据列表数据包格式
5.新用户加入命令----201
它是服务器端命令。
该命令指示数据包中的数据是新增加的用户信息。
用于在新的用户登录验证后,通知其他在线用户该用户已上线,客户端在收到该命令后应把数据包的新用户添加到自己的用户列表中。
其结构和用户登出命令结构相同。
6.用户退出命令----202
它是服务器端命令。
该命令指示数据包中的内容时离开本服务器的用户信息。
在用户向服务器发出登出请求时,服务器以此用户的信息通知其他在线用户从用户列表中删除此用户信息。
其结构和用户登出命令结构相同。
7.确认用户登出命令----203
它是服务器端命令。
该命令无数据部分,用于在收到用户的登出命令时发送给用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 通信 系统 设计 实现 论文