TCPIP应用程序的通信连接模式

上传人:豆浆 文档编号:37538899 上传时间:2018-04-18 格式:DOC 页数:16 大小:277.50KB
返回 下载 相关 举报
TCPIP应用程序的通信连接模式_第1页
第1页 / 共16页
TCPIP应用程序的通信连接模式_第2页
第2页 / 共16页
TCPIP应用程序的通信连接模式_第3页
第3页 / 共16页
TCPIP应用程序的通信连接模式_第4页
第4页 / 共16页
TCPIP应用程序的通信连接模式_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《TCPIP应用程序的通信连接模式》由会员分享,可在线阅读,更多相关《TCPIP应用程序的通信连接模式(16页珍藏版)》请在金锄头文库上搜索。

1、TCP/IP 应用程序的通信连接模式应用程序的通信连接模式2008 年 7 月 10 日 本文的作者通过分析 TCP/IP 程序在不同级别上采用的不同方式来向您讲述了如何设计好 TCP/IP 应用程序的通信模式以及需要注意的相关问题。 TCP/IP 应用层与应用程序 TCP/IP 起源于二十世纪 60 年代末美国政府资助的一个分组交换网络研究项目,它是一个 真正的开放协议,很多不同厂家生产各种型号的计算机,它们运行完全不同的操作系统, 但 TCP/IP 协议组件允许它们互相进行通信。现在 TCP/IP 已经从一个只供一些科学家使 用的小实验网成长为一个由成千上万的计算机和用户构成的全球化网络,

2、TCP/IP 也已成为 全球因特网(Internet)的基础,越来越多的 TCP/IP 互联网应用和企业商业应用正在改变 着世界。 TCP/IP 通讯协议采用了四层的层级模型结构(注:这与 OSI 七层模型不相同) ,每一层 都调用它的下一层所提供的网络任务来完成自己的需求。TCP/IP 的每一层都是由一系列协 议来定义的。这 4 层分别为: 应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用 以及应用协议,也有许多的企业商业应用和互联网应用。 传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而

3、TCP 提供传输保证。 网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。 链路层 (Link):又称为物理数据网络接口层,负责报文传输。 图显示了 TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer) 、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用 层的应用程序通信互联。 应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。应用层其下三层 则处理真正的通信细节。在 Internet 整个发展过程中的所有

4、思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。针对每一种特定的 TCP/IP 应用,有相应 的 RFC 文档。一些典型的 TCP/IP 应用有 FTP、Telnet、SMTP、SNTP、REXEC、TFTP、LPD、SNMP、NFS、INETD 等。RFC 使 一些基本相同的 TCP/IP 应用程序实现了标准化,从而使得不同厂家开发的应用程序可以 互相通信。图 TCP/IP 层级模型结构 然而除了这些已经实现标准化的系统级 TCP/IP 应用程序外,在企业商业应用和互联网应 用开发中,存在着大量的商业应用程序通信互联问题。如图 显示,其中的应用层所

5、包 含应用程序主要可以分成两类,即系统级应用和商业应用,互联网商业应用是商业应用中 的主要形式之一。 不同开发商和用户在开发各自商业应用通信程序时也存在有许多不同的设计方式。关于 TCP/IP 应用层以下的技术文献与书籍早已是汗牛充栋,但是关于 TCP/IP 应用本身,尤其 是关于商业应用的通信设计模式技术讨论方面的文章还是比较少的。TCP/IP 应用通信设计 模式实际上是在 TCP/IP 基础编程之上的一种应用编程设计方式,也属于一种应用层协议 范畴,其可以包含有 TCP/IP 地址族模式设计、I/O 模式设计、通信连接模式设计以及通 信数据格式设计等。鉴于目前讨论 TCP/IP 商业应用程

6、序设计模式问题这方面的文章还很 少见,本文尝试给出一些通信连接模式设计中共同的概念与一些典型的设计模式,在以后 的文章中将继续讨论地址族模式设计、I/O 模式设计、以及通信数据格式设计等方面的模 式设计实现话题。 通信连接模式设计主要考虑内容有: 通信两端程序建立通信方式 通信连接方式 通信报文发送与接收方式 以下内容将介绍建立通信的 Client/Server 模型,然后逐一介绍通信连接模式设计所需要考 虑的这些内容。传输层接口 APIs 与 TCP/IP 应用程序 C/S 模型 传输层接口 APIs TCP/IP 应用层位于传输层之上,TCP/IP 应用程序需要调用传输层的接口才能实现应用

7、程 序之间通信。目前使用最广泛的传输层的应用编程接口是套接字接口(Socket) 。Socket APIs 是于 1983 年在 Berkeley Socket Distribution (BSD) Unix 中引进的。 1986 年 AT&T 公司引进了另一种不同的网络层编程接口 TLI(Transport Layer Interface) ,1988 年 AT&T 发布了一种修改版的 TLI,叫做 XTI(X/open Transport interface) 。XTI/TLI 和 Socket 是 用来处理相同任务的不同方法。关于 TCP/IP APIs 使用文章与书籍已相当多,本文则是

8、侧 重于如何组合使用这些 APIs 来进行 TCP/IP 应用程序连接模式设计,并归纳出几种基本 应用连接模式。 如图 显示,应用层是通过调用传输层接口 APIs(Socket 或 XTI/TLI)来与传输层和 网络层进行通信的。图 传输层接口 不管是使用何种编程接口,要在两个机器或两个程序之间建立通信,通信双方必须建立互 相一致的通信模式。如果双方的通信设计模式不一致就无法建立有效的通信连接。 以下是经常使用的 socket APIs,是建立 TCP/IP 应用程序的标准接口,也是影响 TCP/IP 应用程序通信方式的几个主要 APIs,不同 APIs 组合再结合系统调用可以实现不同方式的

9、应用。Sockets 支持多种传输层和网络层协议,支持面向连接和无连接的数据传输,允许 应用分布式工作。 socket():是用来创建一个 socket,socket 表示通信中的一个节点,其可以在一个网络中被 命名,用 socket 描述符表示,socket 描述符类似于 Unix 中的文件描述符。 bind():是用来把本地 IP 层地址和 TCP 层端口赋予 socket。 listen() :把未连接的 socket 转化成一个等待可连接的 socket,允许该 socket 可以被请求回页首连接,并指定该 socket 允许的最大连接数。 accept():是等待一个连接的进入,连接

10、成功后,产生一个新的 socket 描述符,这个新的 描述符用来建立与客户端的连接。 connect():用来建立一个与服务端的连接。 send():发送一个数据缓冲区,类似 Unix 的文件函数 write()。另外 sendto() 是用在无连 接的 UDP 程序中,用来发送自带寻址信息的数据包。 recv():接收一个数据缓冲区,类似 Unix 的文件函数 readI()。另外 recvfrom() 是用在无 连接的 UDP 程序中,用来接收自带寻址信息的数据包。 close():关闭一个连接 Client/Server 模型 Sockets 是以 Client 和 Server 交互通

11、信方式来使用的。典型的系统配置是把 Server 放在 一台机器中,而把 Client 放在另一台机器中,Client 连接到 Server 交换信息。一个 socket 有一系列典型的事件流。例如,在面向连接的 Client/Server 模型中,Server 端的 socket 总是等待一个 Client 端的请求。要实现这个请求,Server 端首先需要建立能够被 Client 使用的地址,当地址建立后,Server 等待 Client 请求服务。当一个 Client 通过 socket 连接到 Server 后,Client 与 Server 之间就可以进行信息交换。Client/Se

12、rver 是通 信程序设计的基本模式。从软件开发的角度讲,TCP/IP 应用程序都是基于 Client/Server 方式的。注意本篇文章以下 Client/Server 概念是针对程序内部调用 Socket API 所讲的概 念,与针对整个程序甚至针对机器而讲的客户端 / 服务器概念有所不同。用 Server APIs 建立的程序可以被当作客户端使用,用 Client APIs 建立的程序也可以被用作服务器端使 用。建立 Server 需要的 APIs 有 socket(), bind(), listen(), accept(),建立 Client 需要的 APIs 有 Socket(),

13、Connect()。在实际应用开发中,同一个程序里往往同时可以有 Client 和 Server 的代码,或者多种形式的组合。在实际应用编程中,针对 Socket APIs 不同有效组 合,结合系统调用可以有多种复杂的设计变化。 面向连接的应用编程存在三类基本的不同级别的设计方式范畴,根据 Socket APIs 从上到 下顺序依次是: Client/Server 通信建立方式 Client/Server 通信连接方式 Client/Server 通信发送与接收方式 下面内容以面向连接的 Socket 应用编程为例来说明这几种不同通信范畴的设计实现。Client/Server 建立方式设计概述

14、 一个 Client 连接一个 Server 如果只有两台机器之间连接,那么一个是 Client,另一个是 Server,如下面图 3 所示。 这是最简单的 TCP/IP 的应用,也是 TCP/IP 应用早期的 Peer to Peer (P2P) 概念。其流程 基本如图 所示。 图 TCP/IP 应用单点 Client/Server回页首图 4 显示了 TCP/IP 应用编程最基本的 Client/Server 模式,显示了基本的 Client/Server 通信所需要调用的 Socket APIs 以及顺序。图 TCP/IP 应用编程基本 Client/Server 模式 多个 Clien

15、t 连接一个 Server 多个 Client 同时连接一个 Server 是 TCP/IP 应用的主流形式,如图 所示,其中 Client 连接数可以从几个到成千上万。图 TCP/IP 应用多 Client 端的 Client/Server由于 socket APIs 缺省方式下都是阻塞方式的,实现多个 Client 同时连接一个 Server 就 需要特别的设计。其实现方式可以有多种不同的设计,这其中也涉及 I/O 模式设计。下面 将展开介绍其中几种设计形式。 利用一个 Client 连接一个 Server 形式实现多 Client 连接 从程序设计角度讲,只要 Client 和 Serv

16、er 端口是一对一形式,那么就属于一个 Client 连 接一个 Server 形式。在处理多个 Client 端连接时,Server 端轮流使用多个端口建立多个 Client-Server 连接,连接关闭后,被释放端口可以被循环使用。在这种多连接形式中需要 谨慎处理 Client 端如何获取使用 Server 端的可用端口。比如图 显示 Server 有一个 服务于所有进程的进程可以先把 Server 端的可用端口发送给 Client 端,Client 端再使用 该端口建立连接来处理业务。Server 针对每一个 Client 连接用一个专门的进程来处理。 由于可用端口数有限,Server 用一个有限循环来处理每一个可用的端口连接。由于新端口 需要用 bind() 来绑定,所以需要从 bind() 开始到 close() 结束都需要包含在循环体内。图 利用一对一 Client-Server 模式实现多 Client 连接 使用多个 accept()

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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