Data Communication Computer Network 简明教程

Client Server Model

两个远程应用程序进程主要可以使用两种不同的方式进行通信:

  1. Peer-to-peer: 两个远程进程在同一层级执行,它们使用某些共享资源交换数据。

  2. Client-Server: 一个远程进程充当客户端,并从充当服务器的另一个应用程序进程请求某些资源。

在客户机-服务器模型中,任何进程都可以充当服务器或客户机。它并不是机器的类型、机器的大小或计算能力使其成为服务器;而是提供服务的这一能力使一台机器成为服务器。

client server

系统可以同时作为服务器和客户机。也就是说,一个进程充当服务器,另一个进程充当客户机。客户端和服务器进程都有可能驻留在同一台机器上。

Communication

客户机-服务器模型中的两个进程可以通过多种方式进行交互:

  1. Sockets

  2. Remote Procedure Calls (RPC)

Sockets

在这种模式中,充当服务器的进程使用一个众所周知的(或客户机已知的)端口打开一个套接字,并等待客户端请求到来。充当客户机的第二个进程也打开一个套接字,但它不是等待传入请求,而是“先请求”。

sockets

当服务器收到请求时,它会予以处理。它既可以是信息共享,也可以是资源请求。

Remote Procedure Call

这是一个进程通过执行过程调用与另一个进程进行交互的机制。一个进程(客户机)调用远程主机上的过程。远程主机上的进程被称为服务器。两个进程都被分配了存根。这种通信以以下方式发生:

  1. 客户进程调用客户端存根。它传递所有与其本地程序相关联的参数。

  2. 然后打包(编组)所有参数,并发出系统调用以将它们发送到网络的另一端。

  3. 内核通过网络发送数据,另一端接收数据。

  4. 远程主机将数据传递到服务器存根,服务器存根对数据进行解组。

  5. 将参数传递给过程,然后执行过程。

  6. 结果以相同的方式发送回客户机。