简化单个操作系统中软件实体之间IP通信的方法和系统技术方案

技术编号:3488459 阅读:197 留言:0更新日期:2012-04-11 18:40
一种方法,包括:    确定网络连接是否是在驻留于同一操作系统中的软件实体之间;和    响应于确定所述网络连接是在驻留于同一操作系统中的软件实体之间,用进程间通信连接来代替所述网络连接。

【技术实现步骤摘要】

本专利技术 一般涉及联网的计算机编程,并且特别涉及在单个操作系统 中互相通信的网络应用的执行性能的改进。
技术介绍
现代通信依赖于网络。一个网络是一组互相连接的机器(网络单元), 它们允许数据通过这组机器从源中继传送到目的地。网络可以根据它们所在地理范围来分类。局域网(LAN)通常定义为物理上限定在相对小 范围的网络,诸如一座楼或楼群。广域网(WAN)是大范围网络的通用 术语。联网协议规定了网络单元之间通信的规则,它们通常被设计为按层 工作,每层完成数据传输中稍有不同的任务。TCP/IP (传输控制协议/ 互联网协议)是一个协议集合(被称为协议组),它形成因特网和许多其 他网络的基础。TCP/IP通常考虑采用4层协议^^莫型。应用程序员使用应用编程接口 (API)来编写支持联网的软件,该 接口允许程序员在编写网络通信程序时使用抽象的办法,无须确切地访 问各协议层中具体的地址。或许此种API接口的最广泛应用的是在基于 UNIX/POSIX的操作系统中提供的"套接字(sockets ) "API;在其他的操 作系统和编程环境例如JAVA编程环境中也提供类似的"套接字"和"套接 字"类API。用于网络通信的"套接字"方法,是将两个网络实体之间的连 接模拟为流或抽象文件,称为"套接字"。在以C编程语言进行编程中使 用的常见POSIX"套接字"库中,打开套接字产生一个"套接字描述符"数 字,它类似于文件描述符。其后来自/通往该"套接字"的输入/输出(I/O) 通过将此"套接字描述符"送到1/0例程来完成,正如同文件描述符的情 况一样。虽然网络编程最终目标是允许网络中各种计算机相互通信是有争议 的,但是经常出现两个通信的网络应用实际驻留在同 一计算机的同 一操 作系统实例中。例如, 一个应用服务器进程与同一操作系统实例上的数 据库服务器进程进行通信。在这样的情况下,现代操:作系统通常将避免 使用计算机的联网硬件来实现通信,而是仍将通过通常的协议层(例如 TCP/IP协议组的层)来处理通信。用这些协议层进行处理的有效性,对 于在同一系统中两个软件实体之间的通信是没有什么价值的。例如,在 同 一 系统上的两个进程间传输数据的加密就是不必要的。但是,在现有技术中,没有办法去旁路此附加的网络处理,除非在 每个应用中包括附加(非标准)的代码以便当可用时激活这种旁路。而 且,这种旁路不能用于分区系统,即被分成两个或更多个软件分区的系 统。软件分区是驻留在同一物理系统上并共享同一才喿作系统(核心)代 码的虛拟操作系统实例。 一个软件分区看不到整个环境的某些方面和其 他的软件分区(包含网络相关信息),除非它们可以从物理分离的系统上 可见。因此,当进行通信的应用驻留在一个总系统的不同软件分区中的 情况下,这些应用将不能确定它们是存在于同一系统中,所以不能应用 上述技术来旁路整个网络协议的处理。因此,所需要的是一种方法来针对驻留在同 一 系统上的两个进程之 间的通信旁路整个协议堆栈的处理,甚至当两个进程是处在不同软件分 区中的情况或者应用本身无法确定它们是否处在同 一 系统中的其他情 况。本专利技术对此和其他问题提出了解决方法,并且提供了超越原有解决 办法的其他优点。
技术实现思路
因此,本专利技术提供一种方法、计算机程序产品和数据处理系统,用 于应用通常的网络通信API使驻留在同 一操作系统中的软件实体完成有 效的通信。根据优选实施例,当软件实体(例如进程)试图通过联网的 API通信时,该梯:作系统确定通信的另一端是否指向同一个硬件节点。 如果是,该操作系统就用直接进程间通信结构来代替网络协议连接(套接字连接)。当用进程间通信结构完成所有实际的I/0时,操作系统提供附加的代码来模拟在API级别上的实际网络(套接字)连接的外部特性。以上是综合叙述,因此根据需要会对细节进行简化、概括和省略; 本领域普通技术人员将知道,综合叙述仅仅是说明性的并且不意味着以 任何方式来限定。本专利技术的其他方面、专利技术性特征以及优点完全按权利 要求书限定,这些内容在下面给出的非限定详述中将是显而易见的。附图说明参见附图本专利技术会获得更好理解,并且它的许多目标、特征和优点 对本领域普通技术人员是显而易见的,其中图1是根据本专利技术的优选实施例的在操作系统中打开网络连接的过 程的流程图表示;图2是根据本专利技术的优选实施例的套接字描述符/IPC结构描述符映 射表的示图3是根据本专利技术的优选实施例的读自、写到、询问或拆除网络连 接的过程的示图;和图4是其中可以实现本专利技术的优选实施例的数据处理系统的方框图。具体实施例方式下面打算提供一 个本专利技术实例的详细解释,它不应被用于限制本发 明。进而,任何变化都可落在本专利技术的范围内,本专利技术范围由下面叙述 所附的权利要求书所限定。图1是根据本专利技术一个优选实施例的在操作系统中打开网络连接的 过程的流程图表示。该过程以操作系统接收打开网络连接的请求开始(通 过调用在套接字API或其他适当的联网API中的适当例程一本领域普通 技术人员将会认识到图1提供的示例用的是套接字API,但其他类似的 API,诸如X/Open传输接口或"XTI"也可以不受限制地使用)(框100 )。 响应于此调用,才喿作系统首先不经判断地(naively)通过打开正常的网络连接(例如套接字连接)来满足此请求(框102)。然而接下来,确定连接的另一端上的地址("目的节点")是否实际 上是个本地地址(即连接到达驻留在同一个硬件节点上同一个操作系统中的一个软件实体)(框103)。此确定借助于操作系统的内部路由表作 出,该内部路由表指示哪个网络接口用来发送数据包到目的节点。如果 目的节点是本地地址,则物理的网络接口不被用于将数据包传送到目的 节点/从目的节点接收数据包;而是用一个虚设的或"虚拟的"接口 (叫做 "环回接口")来代替。环回接口是软件定义的结构,它简单地发送数据 包给自己,而不是通过某个硬件网络适配器发送数据包。在典型的 TCP/IP联网系统中,按照惯例为环回接口分配IP地址127.0.0.1。在本专利技术的优选实施例中,操作系统核心提供一个服务,用于确定 通过给定网络连接的数据包所采用的路由并将此路由返回到调用例程。 因此,通过首先询问此路由查找核心服务(Route lookup kernel service),然后确定返回的路由是否为经过此环回接口的路由,来确定给 定网络连接的目的节点是否是本地的。如果路由通过此环回接口,那么 此目的节点是一个本地地址。如果目的节点不是本地的(框103的"否"),则打开连接的过程简单 地结束。然而如果目的节点是本地的(框103的"是"),则操作系统产生 —个进程间通信(IPC)结构去代替通常的网络连接(套接字连接)(框 104)。应该注意,在本文中的术语"进程间通信,,和"IPC"以广泛的含义使 用,其包含在多任务操作系统中用于实现软件实体(例如进程和线程) 间通信的多种不同操作系统结构中的任意一种,而不管在某些操作系统 中(最值得注意的是UNIX系统V和相关操作系统)用术语IPC表示某 种特定类型的进程间通信结构的事实。在这里所用的术语"进程间通信" 和"IPC"涵盖了其他类型的操作系统结构,诸如管道、FIFO(先入先出) 等等。事实上本文档来自技高网
...

【技术保护点】
一种方法,包括:确定网络连接是否是在驻留于同一操作系统中的软件实体之间;和响应于确定所述网络连接是在驻留于同一操作系统中的软件实体之间,用进程间通信连接来代替所述网络连接。

【技术特征摘要】

【专利技术属性】
技术研发人员:E·弗里德V·杰恩L·W·拉塞尔
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1