进程间通信(IPC)与伯克利套接字

2018-09-10  本文已影响0人  zlrs

进程间通信(IPC)

进程间通信IPCInter-Process Communication),指至少两个进程线程间传送数据或信号的一些技术或方法。

主要的IPC方法

方法 提供方(操作系统或其他环境)
文件 多数操作系统
信号 多数操作系统
Berkeley套接字 多数操作系统
消息队列 多数操作系统
管道 所有的 POSIX 系统, Windows.
命名管道 所有的 POSIX 系统, Windows.
信号量 所有的 POSIX 系统, Windows.
共享内存 所有的 POSIX 系统, Windows.
Message passing (不共享) 用于MPI规范,Java RMICORBAMSMQMailSlot以及其他.
Memory-mapped file 所有的 POSIX 系统, Windows.

伯克利套接字

伯克利套接字(英语:Internet Berkeley sockets) ,又称为BSD 套接字(BSD sockets)是一种应用程序接口(API),用于网络套接字( socket)与Unix域套接字,包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯,在计算机网络通讯方面被广泛使用。

Unix域套接字(Unix domain socket) 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流,又可以使用数据队列,而管道通信则只能使用字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。

Berkeley套接字应用程序接口形成了事实上的网络套接字的标准精髓。 大多数其他的编程语言使用与这套用C语言写成的应用程序接口[1] 类似的接口。 这套应用程序接口也被用于Unix域套接字(Unix domain sockets),后者可以在单机上为进程间通讯(IPC)的接口。

这种基于流的传输层接口(TLI)为套接字应用程序接口提供了一种选择。 不过,最近提供TLI应用程序接口的的系统同时也提供Berkeley套接字应用程序接口。

在计算机科学中,网络套接字(英语:Network socket),又译网络套接字、网络接口、网络插槽,是计算机网络中进程间数据流的端点。使用以网际协议(Internet Protocol)为通信基础的网络套接字,称为网际套接字(Internet socket)。因为网际协议的流行,现代绝大多数的网络套接字,都是属于网际套接字。
socket是一种操作系统提供的进程间通信机制。
在操作系统中,通常会为应用程序提供一组应用程序接口(API),称为套接字接口(英语:socket API)。应用程序可以通过套接字接口,来使用网络套接字,以进行数据交换。最早的套接字接口来自于4.2 BSD,因此现代常见的套接字接口大多源自Berkeley套接字(Berkeley sockets)标准。在套接字接口中,以IP地址及通信端口组成套接字地址(socket address)。远程的套接字地址,以及本地的套接字地址完成连线后,再加上使用的协议(protocol),这个五元组(five-element tuple),作为套接字对(socket pairs),之后就可以彼此交换数据。例如,在同一台计算机上,TCP协议与UDP协议可以同时使用相同的port而互不干扰。 操作系统根据套接字地址,可以决定应该将数据送达特定的进程或线程。这就像是电话系统中,以电话号码加上分机号码,来决定通话对象一般。

套接字API(Issued socket APIs)

这个列表是一个Berkeley套接字API库提供的函数或者方法的概要:

套接字是位于应用层和传输层之间的结构

The socket APIs are located in the communications model between the application layer and the transport layer. The socket APIs are not a layer in the communication model. Socket APIs allow applications to interact with the transport or networking layers of the typical communications model. The arrows in the following figure show the position of a socket, and the communication layer that the socket provides.

Position of a socket in the communication layer

参考

进程间通信 - 维基百科,自由的百科全书
Berkeley套接字 - 维基百科,自由的百科全书
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzab6/howdosockets.htm
https://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E6%8F%92%E5%BA%A7

上一篇 下一篇

猜你喜欢

热点阅读