TCP协议通信系统设计.docx

上传人:b****2 文档编号:2049139 上传时间:2022-10-26 格式:DOCX 页数:12 大小:55.68KB
下载 相关 举报
TCP协议通信系统设计.docx_第1页
第1页 / 共12页
TCP协议通信系统设计.docx_第2页
第2页 / 共12页
TCP协议通信系统设计.docx_第3页
第3页 / 共12页
TCP协议通信系统设计.docx_第4页
第4页 / 共12页
TCP协议通信系统设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

TCP协议通信系统设计.docx

《TCP协议通信系统设计.docx》由会员分享,可在线阅读,更多相关《TCP协议通信系统设计.docx(12页珍藏版)》请在冰豆网上搜索。

TCP协议通信系统设计.docx

TCP协议通信系统设计

 

嵌入式系统课程论文

设计题目:

基于TCP协议通讯系统的设计与实现

 

姓名:

学号:

班级:

指导教师:

时间:

基于TCP协议通信系统的设计与实现

——————如何在linux系统下建立server

摘要

通信系统由于其具有实时性、跨平台性、效率高等特性。

在Linux系统下设计服务器端对通信系统具有较强的现实意义。

通信的底层通信是通过SOCKET套接字接口实现的。

当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。

使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。

本次设计并实现了基于linux系统下建立server,采用C/S模式,底层通信通过SOCKET套接字接口实现。

具体要求:

服务器能够侦听客户端的链接请求、需建立独立的数据通信链路、在通信两端建立对等的通信协议、完成数据包的收发与存储。

关键词:

通信系统;C/S模式;SOCKET套接字;TCP协议

Abstract

Communicationsystemsduetoitsreal-time,cross-platform,highefficiencycharacteristics.Linuxsystemdesignofserver-sidecommunicationsystemwithastrongsenseofreality.ThecommunicationoftheunderlyingcommunicationSOCKETsocketinterfaceimplementation.ThecurrentmainstreamUNIXsystemsandMicrosoftWINDOWSsystemprovidesupportonthetheSOCKETwordinterfaceinthekernel.Unifiedinterface,youcanwriteaportableTCP/IPcommunicationprogram.

ThedesignandrealizationofestablishedbasedlinuxsystemtheserverusingC/Smode,theunderlyingcommunicationSOCKETsocketinterfaceimplementation.Specificrequirements:

theserverisabletolistentoalinkrequestfortheclient,totheneedtoestablishaseparatedatacommunicationslink,toestablishapeer-to-peercommunicationprotocolinthecommunicationends,thecompletionofthetransceiverandthestorageofthedatapacket.

Keywords:

communicationsystems;C/Smode;SOCKETsocket;TCPprotocol

引言

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。

Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。

Linux系统的特点是具有良好的硬件平台可移植性、完全符合POSIX标准、具有良好的图形用户界面、丰富的应用程序和开发工具良好的安全性和稳定性

服务器是计算机网络中最重要的组成部分之一。

如果没有各种服务器提供的网络服务,则计算机网络的意义将大打折扣,网络的应用也就不会象今天这么丰富。

这里将主要介绍与Linux服务器架设有关的规划,如何在linux下建立服务器,其设计与实现。

关键技术

TCP协议:

为实现服务器端的TCP通信功能,服务器端需要能够接受多个客户端的通信请求,并建立多条TCP通信链路。

TCP的连接建立叫做三次握手。

①客户端发送一个带SYN标志的TCP报文到服务器。

这是三次握手过程中的报文1。

②服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。

因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。

③客户必须再次回应服务段一个ACK报文,这是报文段3,如图1。

数据传输是在连接建立后,双向的数据传送就可以开始。

客户和服务器都可以在两个方向传送数据和确认。

图1TCP协议建立连接三次握手过程

套接字:

套接字(Sockets)的概念

Windows下网络编程的规范——WindowsSockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。

Socket又称套接字,是进程之间通信的抽象连接点。

可以通过一个形象的例子来理解这个概念,现实生活中的电话是人们联系的常用工具,双方只要使用两部电话机就可以交谈。

在计算机世界中,两个程序就是使用Socket进行通信的,一个Socket就好比一部电话机,两个程序在网络上通过一个双向链路进行通信,这个双向链路的每一端就成为一个Socket。

进程之间要通信,首先要建立各自的Socket,就像要打电话一定要先有电话机一样,打电话时每部电话机都可以说和听。

与此类似,每个Socket也都可以进行读/写操作,读/写操作时分别要用到Socket中的输入流和输出流。

建立连接后,客户程序可以向Socket里写入请求,然后服务器会处理这个请求,并把处理结果通过Socket送回。

服务器应用程序一般监听一个特定端口以等待一个客户的连接请求,当一个连接请求到达时,客户和服务器建立一个通信连接。

在连接过程中,客户被分配一个本地端口号并且与一个Socket连接,客户通过写Socket来通知服务器,通过读Socket来获取信息。

类似地,服务器也获取一个本地端口号,它需要一个新的端口号来监听原始端口上的其它连接请求。

服务器也给它的本地端口连接一个Socket,读写来自客户的请求。

根据网络通信的特征,套接字可分为两类:

流套接字和数据报套接字。

流套接字

流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务,它适用于处理大量数据。

网络传输层可以将数据分散和集中到合适尺寸的数据包中。

流套接字是面向连接的,通信双方进行数据交换之前,必须建立一条路径,这样既确定了它们之间存在的路由,又保证了双方都是活动的、可彼此响应的,但通信双方之间建立一个通信信道需要很多开支。

除此以外,大部分面向连接的协议为保证发送无误,可能会需要执行额外的计算机来验证正确性,因此会进一步增加开支。

②数据报套接字

数据报套接字支持双向的数据流,但并不保证数据传输的可靠性、有序性的和无重复性。

也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复,或者和发出时的顺序不同的情况。

此外,数据报套接字的一个重要特点是它保留了记录边界。

对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。

数据报套接字是无连接的,它不保证接收端是否正在侦听,类似于邮政服务:

发信人把信装入邮箱即可,至于收件人是否能收到这封信或邮局是否能按时将信件投递到收件人处等,发件人都不得而知。

因此,数据报并不可靠,需有程序员负责管理数据报的排序和可靠性。

应用程序一般仅在同一类的套接口间通信。

不过只要底层的通信协议允许,不同类型的套接口也照样可以通信。

本设计采用面向连接的TCP协议,所以使用流套接字。

客户机/服务器模型(C/S模式)

TCP/IP协议应用的主要工作模式是客户机/服务器模式(Client/Server,简称C/S模式)。

在两个不同进程的通信过程中,一方发出服务请求,一方提供服务,通常称它们为“客户进程”和“服务进程”。

显然,两个进程之间的通信实际上是基于通信协议的进程的同步过程,服务进程作为自愿的提供者,为众多主机上的客户进程提供服务。

服务进程要先于客户进程开启,在某一确定的网络地址(IP地址+端口号)等待客户进程的请求,如有请求到达,服务进程采取某种方式(并发服务或者重复服务),直到客户进程关闭,然后服务进程继续等待下一个请求服务的进程。

服务器通常采用并发服务的方式。

所谓并发服务,就是服务进程在有客户请求到来时,激活新的进程来专门为此客户请求提供服务,并在客户终止请求后杀死该进程,与此同时,原先的进程可以继续在原来的端口等待下一个客户的连接。

Socket编程接口为新的请求创建一个专门的“数据套接字”,并发服务器根据该套接字创建专门的服务进程。

并发服务的最大优点是能及时相应请求,虽然创建新进程会增加系统开销。

与此相对应的是重复服务,它利用“数据套接字”,在监听的进程上直接进行服务。

需要说明的是,两种类型的Socket(SOCK_STREAM和SOCK_DGRAM)的工作流程是不同的,分别如图2和图3所示。

创建流失套接字S

关闭套接字S,停止服务

接受客户连接,创建数据套接字ns

利用ns和客户进程通信,提供服务(是否激活新进程依靠服务器类型而定)

关闭ns,若是并打服务,还需要退出该进程

将S和本地地址和端口绑定

创建流套接字cs

监听,等待连接请求

利用cs和远程服务器建立连接

利用cs和服务器进程通信,完成数据传输

关闭套接字cs,结束TCP会话

客户机

建立连接

请求/应答

服务器

图2流套接字服务的工作流程示意图

创建数据报套接字S

将S和本地地址和端口绑定

相应客户请求,完成数据传输

关闭套接字S,停止服务

创建流套接字cs

利用cs和远程服务器建立连接

利用cs和服务器进程通信,完成数据传输

关闭套接字cs,结束UDP会话

客户机

服务器

图3数据报套接字服务的工作流程示意图

 

设计方案

网络结构设计:

(1)网络拓扑结构采用星型连接。

(2)使用10/100Mbps的网卡。

(3)软件实现编程语言采用C语言,利用socket进行通信。

(4)开发平台linux。

由于linux能够提供强大的网络支持,以及安全特性,当前主流服务器端都采用linux平台构筑。

 

软件设计:

设计流程图:

图4软件流程图

(1)建立一个用于侦听的socket,始终在端口2000进行侦听。

(2)当有客户端发出链路请求,侦听链路接受,并且建立数据链路,在独立的线程进行数据通信。

(3)拆分通信数据包,数据包最大长度为1KB,在每个数据包包头的1个字节,用于描述数据包的序号,循环计数。

也就是说,包头的第一个数据依次为0,1,2…..255,超过255后,从0开始重新计数。

(4)接收的的数据,写入文件,每个文件最大长度上限为1MB。

参考程序清单

Linux下TCP实现客户端和服务器通信的代码:

TCPClient:

01.#include

02.#include

03.#include

04.#include

05.#include

06.#include

07.#include

08.#include

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1