1、 I 基于自定义协议中间件的设计与实现 摘 要 随着 internet 的迅速发展, 网络的应用程度越来越大,越来越多的程序需要通过网络实现,因此网络通信逐渐成为 软件 重要的一部分。 CORBA、 SOAP 等协议 为我们进行网络编程简化了很大一部分 的工作,但是 这些协议给我们提供便利的同时也存在一些缺点。 CORBA 庞大复杂,并且技术和标准更新很慢, SOAP 的缺点是由于浏览器的超时时间配置是不宜设置过长而可能对某些耗时较多的操作容易出现“超时”的现象。而且由于 SOAP 是基于 HTTP 协议的,所以每个操作都是单独、 互不相 关的 ,对于某些需要若干子功能叠加在一起的大功能来说,
2、实现起来 不 大 方便。 并且现在软件产品要在不同平台、不同网络环境 以及不同公司的产品之间平滑地运行,所以使用中间件是最好的解决方案。 通过中间件程序员可以忽略不同平台、不同网络环境等产生的影响,而只关注于业务逻辑。 KESCP 协议的特点是可以自定义, 支持压缩、加密等功能。针对 SOAP 一些无法解决的问题在设计上进行了一定的考虑。采用 KESCP 可以执行由终端主动发起的操作,有较强的可扩展性。 该 协议 建立在传输层之上应用层之下, 充当 一个消息中间件。 通过该协议程序员可以方便地 编写程序,只关注于业务逻辑而不用直接跟 Socket 接触。 自定义通信协议中的数据包结构保留了一些
3、字段以便扩展,并且数据包中的数据长度可以是变长的。该自定义通信协议全部采用 ANSI C 标准来写,可以在 Windows、Linux、 Unix、 XPE、 Windows CE 等操作系统上运行。 同时本系统也为 C/C+与Java 间通信提供了一个解决方案,可以方便地在 C/C+与 Java 间通信 。 II 关键词 : 自定义 协议 中间件 网络通信 Abstract As the developing of the internet, most of the program application has to use the network communication. The T
4、CP/IP becomes to be a most useful standard. The CORBA and SOAP protocol can let us reduce much work of programming, but they also have some disadvantages. The CORBA is very complex and the update of its standard is very slow. The SOAP is not suitable to do the time-consuming operation and since its
5、based on HTTP, its not convenient to do the operation which is combined by many modules. We make a dynamic communication protocol to let programmers easy to develop the application. The dynamic communication protocol called KESCP which is support the function of compress, encrypt and some other func
6、tions. We can add our dynamic function into the KESCP. By the use of the KESCP, we have the standard interface to be invoked. We use the ANSI C to develop the KESCP and it can run on almost all the platform, including Windows NT, Linux, UNIX, Windows CE.net, Windows XPE. We also provide the solution
7、 on communication between C and Java. Keywords: Dynamic Protocol Middleware Network Communication III 目录 第一章 引言 . 1 1.1 网络协议介绍 . 1 1.1.1 OSI 参考模型 . 1 1.1.2 TCP/IP 模型 . 3 1.2 中间件简介 . 5 1.2.1 Client/Server 应用模式 . 5 1.2.2 分布式系统结构 . 6 1.2.3 中间件 . 7 1.3 项目背景 . 8 1.4 项目需求 . 9 1.5 专用术语说明 . 9 第二章 KESCP 协议的总
8、体设计 . 10 2.1 KESCP 协议设计原则 . 10 2.2 KESCP 协议结构 . 10 2.3 模块工作流程 .11 2.4 KESCP 子系统模块与功能 . 12 2.4.1 KESCP 子系统模块结构 . 12 2.4.2 KESCP 子系统接口 . 13 第三章 数据包格式设计 . 18 3.1 数据包定义 . 18 IV 3.2 结构体字节对齐问题 . 19 3.3 字节顺序问题 . 20 3.4 结构体中数据变长问题 . 21 第四章 网络编程 . 22 4.1 Socket 编程 . 22 4.2 Windows 网络编程 . 23 4.3 Linux 下 Socke
9、t 编程 . 25 4.4 Java Socket 编程 . 27 4.5 C 发送数据给 Java . 27 4.6 Java 发送数据给 C . 29 第五章 KESCP 协议接口 . 30 第六章 程序结果 . 32 第七章 结束语 . 34 致谢 . 35 参考文献 . 36 V Contents Chapter 1 Introduction . 1 1.1 Network Protocol. 1 1.1.1 OSI.1 1.1.2 TCP/IP.3 1.2 Middleware. 5 1.2.1 Client/Server pattern . 5 1.2.2 Distribute p
10、attern . 6 1.2.3 Middleware . 7 1.3 Project background. 8 1.4 Requirement . 9 1.5 Special term . 9 Chapter 2 Summary design of KESCP . 10 2.1 Design principle. 10 2.2 Structure . 10 2.3 Flow.11 2.4 Modules of KESCP . 12 2.4.1 Structure of modules . 12 2.4.2 Interface of modules . 13 Chapter 3 Data P
11、acket . 18 3.1 Data Packet . 18 VI 3.2 3.2 Structure of the C struct . 19 3.3 Byte order. 20 3.4 Dynamic data of the struct. 21 Chapter 4 Socket. 22 4.1 Socket . 22 4.2 Windows Socket. 23 4.3 Linux Socket . 25 4.4 Java Socket . 27 4.5 Data transfer from C to Java . 27 4.6 Data transfer from Java to
12、C . 29 Chapter 5 API of KESCP. 30 Chapter 6 Demonstration . 32 Chapter 7 The end . 34 Acknowledgement . 35 Reference . 36 VII 1 第一章 引言 1.1 网络协议介绍 计算机的网络通信在硬件底层实际上是二进制位 1和 0得点对点传送机制 1。为了方便程序员,定制了一套复杂的软件,为应用程序提供方便的高层接口。这种软件自动处理大部分底层通信的问题,使程序员们可以忽略大部分通信的问题。 通信涉及的所有部分必须采用同一套机制,通过相同的信息交换规则,通信才能成功完成。人们把这种
13、认同称为协议 ,也就出现了网络协议或通信协议的说法。 网络协议设计者把通信问 题划分称多个子问题 2,每个子问题用一个模块来解决,各个模块可以是 一个子协议。 这样把整个通信协议划分称多个子 协议,通过相互分离的多个子模块来解决通信协议的大部分问题。 这使得通信协议的设计、开发、处理以及扩展性等方便有了很大的增强。但是各个模块也不是完全独立的,模块之间是相互联系的。各个协议组合在一起称为协议系列或协议族。分层模型是其中最好的方法之一。分层模型描述了把通信问题划分成几个子问题的方法,一个协议系列可通过对应 的一层规定一个协议来设计。 1.1.1 OSI 参考模型 国际标准化组织定义了一个七层参考
14、模型 3,如图 1.1 所示 : 2 图 1.1 OSI 参考模型 OSI 参考模型的全称是开放系统互连参考模型( Open System Interconnection Reference Model, OSI/RM) ,在 OSI 七层模型中,每一层为其上一层提供服务,并为其上一层提供一个访问接口。不同主机之间的相同层次称为对等层。如主机 A中的表示层和主机 B 中的表示层互为对等层,主机 A中的网络层和主机 B中的网络层互为对等层。 主机用各个层组成的协议栈来接收和发送数据。 OSI 参考模型各个层的作用: 1. 物理层( Physical Layer) 物理层规定了激活、维持、关闭通信
15、端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供 了一个传输数据的物理媒介。 数据传输的单位是比特( bit)。属于物理层的典型规范代表有: RS-232、 RS-449、 V.35、RJ-45等。 2. 数据链路层( Data Link Layer) 数据链路层在不可靠的物理介质上提供可靠的传输,该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 数据的单位为帧( Frame)。属于该层的代表有: SDLC、 HDLC、 PPP、 STP、帧中继等。 3. 网络层( Network Layer) 网络层负责对子网间的数据包进行路由选择,网络层还可以
16、实现拥塞控制、网际互连 等功能。数据单位为数据包( Packet)。网络层协议的代表有: IP、 IPX、3 RIP、 OSPF 等。 4. 传输层( Transport Layer) 传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 数据的单位为数据段( Segment)。传输层协议的代表有:TCP、 UDP、 SPX 等。 5. 会话层( Session Layer) 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入 检验点来实现数据的同步
17、。会话层的协议包括:NetBIOS、 ZIP 等。 6. 表示层 ( Presentation Layer) 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。表示层协议的代表包括: ASCII、 ASN.1、 JPEG、 MPEG 等。 7. 应用层( Application Layer) 应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括: Telnet、 FTP、 HTTP、 SNMP 等。 1.1.2 TCP/IP 模型 ISO 制定的 OSI 参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的 TCP/IP 协议栈获得了更为广泛的应用。 在 TCP/IP 参考模型中,去掉了 OSI 参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将 OSI 参考模型中的数据链路层和物理层合并为主机到网络层。 TCP/IP模型 与 OSI 参考模型对比 4如图 1.2 所示: