计算机网络 - 客户端服务器(CS)模型

  • 简述

    两个远程应用程序进程可以主要以两种不同的方式进行通信:
    • Peer-to-peer: 两个远程进程都在同一级别执行,并且它们使用一些共享资源交换数据。
    • Client-Server: 一个远程进程充当客户端,并从充当服务器的另一个应用程序进程请求一些资源。
    在客户端-服务器模型中,任何进程都可以充当服务器或客户端。使它成为服务器的不是机器的类型、机器的大小或它的计算能力;服务请求的能力使机器成为服务器。
    一个系统可以同时充当服务器和客户端。也就是说,一个进程充当服务器,另一个进程充当客户端。这也可能发生在客户端和服务器进程都驻留在同一台机器上。
  • 沟通

    客户端-服务器模型中的两个进程可以以多种方式交互:
    • 插座
    • 远程过程调用 (RPC)

    插座

    在这个范例中,充当服务器的进程使用众所周知的(或客户端已知的)端口打开一个套接字,并等待某个客户端请求到来。充当客户端的第二个进程也打开一个套接字,但客户端不是等待传入的请求,而是“首先处理请求”。
    当请求到达服务器时,它被服务。它可以是信息共享或资源请求。

    远程过程调用

    这是一种机制,其中一个进程通过过程调用与另一个进程交互。一个进程(客户端)调用位于远程主机上的过程。远程主机上的进程称为服务器。两个进程都被分配了存根。这种通信以下列方式发生:
    • 客户端进程调用客户端存根。它将与本地程序有关的所有参数传递给它。
    • 然后将所有参数打包(编组)并进行系统调用以将它们发送到网络的另一端。
    • 内核通过网络发送数据,另一端接收数据。
    • 远程主机将数据传递到解组的服务器存根。
    • 将参数传递给过程,然后执行过程。
    • 结果以相同的方式发送回客户端。