什么是客户端-服务器系统?
客户端-服务器之间的通信可以使用共享内存和消息传递进行通信。
这些技术可用于客户端-服务器系统中的通信。
通信策略
我们可以探索客户端-服务器系统中其他三种通信策略,如下所示:
套接字
套接字定义为通信的端点。一对通过网络员工通信的进程或一对套接字,每个进程一个。
套接字由连接到端口号的 IP 地址标识。通常,套接字使用客户端服务器架构。服务器通过侦听指定端口来等待传入的客户端请求。
收到请求后,服务器接受来自客户端-服务器的连接以完成通信。
示例
当客户端进程启动连接请求时,其主机计算机会为其分配一个端口。此端口具有大于 1024 的某个任意数字。
如果主机 S 上 IP 地址为 126.48.5.30 的客户端想要与地址为 142.30.45.8 的 Web 服务器建立连接,则主机 S 可能会被分配端口 1465。
连接将包括一对套接字:主机 S 上的 126.48.5.30:1465 和 Web 服务器上的 142.30.45.8:80。
远程过程调用 (RPC)
它是 RPC 范式中最常见的远程服务形式之一。RPC 被设计为一种抽象过程调用机制,用于在具有网络连接的系统之间使用。
它在许多方面类似于 IPC 机制,并且通常构建在这样的系统之上。但是,我们正在处理一个进程在单独的系统上执行的环境。我们必须使用基于消息的通信模式来提供远程服务。
管道
管道充当连接,允许两个进程进行通信。管道是早期 UNIX 系统中最早的 IPC 机制之一。它们通常为进程提供了一种更简单的方式相互通信,尽管它们也有一些限制。
UNIX 和 Windows 系统上使用两种类型的管道:
普通管道
命名管道
普通管道
普通管道允许两个进程以标准的过程消费者方式进行通信。
生产者写入一个管道,消费者从另一个端读取。因此,普通管道是单向的,允许单向通信。普通管道无法从创建它的进程外部访问。
通常,父进程创建管道并使用它与通过 fork() 创建的子进程进行通信。
命名管道
普通管道提供了一种简单的机制,允许一对进程进行通信。但是,普通管道仅在进程相互通信时才存在。
在 UNIX 和 Windows 系统上,一旦进程完成通信并终止,普通管道将不复存在。
命名管道提供了一个强大的通信工具。通信可以是双向的,不需要父子关系。建立命名管道后,多个进程可以使用它进行通信。