大多数网络应用程序使用客户端-服务器体系结构(CS),它指的是两个相互通信以交换某些信息的进程或两个应用程序。这两个进程中的一个充当客户机进程,另一个充当服务器进程。
客户端进程
这就是通常发出信息请求的进程。在获得响应后,该进程可能会终止或执行其他一些处理。
例如,Internet浏览器作为客户端应用程序工作,它向Web服务器发送请求以获取一个HTML网页。
服务器进程
这是接收来自客户端的请求的进程。收到客户端的请求后,该进程将执行所需的处理,收集请求的信息,并将其发送给请求者客户端。一旦完成,它就可以为另一个客户端服务了。服务器进程总是保持警惕,随时准备为传入的请求提供服务。
例如,Web服务器一直在等待来自Internet浏览器的请求,一旦它收到来自浏览器的任何请求,它就会选择请求的HTML页面并将其发送回该浏览器。
注意,客户端需要知道服务器的地址,但是在连接建立之前,服务器不需要知道客户端的地址,甚至不需要知道客户端是否存在。一旦连接建立,双方就可以发送和接收信息。
两层和三层架构
有两种类型的客户端-服务器架构:
两层架构−客户端直接与服务器交互。这种类型的体系结构可能存在一些安全漏洞和性能问题。Internet Explorer和Web服务器在两层架构上工作。这里的安全问题是使用安全套接字层(SSL)来解决的。
三层架构—在这种架构中,客户端和服务器之间多一个软件。这个中间软件被称为“中间件”。中间件用于在高负载情况下执行所有的安全检查和负载平衡。中间件接受来自客户端的所有请求,在执行所需的身份验证之后,它将该请求传递给服务器。然后服务器执行所需的处理并将响应发送回中间件,最后中间件将此响应传递回客户端。如果您想实现一个三层架构,那么您可以在您的Web服务器和Web浏览器之间保留任何中间件,如 Web Logic或WebSphere软件。
服务器类型
有两种类型的服务器:
迭代式服务器—这是最简单的服务器形式,服务器进程为一个客户端服务,完成第一个请求后,它从另一个客户端接受请求。与此同时,另一位客户仍在等待。
并发服务器—这种类型的服务器运行多个并发进程,同时处理多个请求,因为一个进程可能会花费较长时间,而另一个客户端不能等待太长时间。在Unix下编写并发服务器的最简单方法是派生一个子进程来分别处理每个客户端请求。
如何制作客户端
客户端和服务器建立连接的系统调用有些不同,但都涉及套接字的基本构造。两个进程都建立了它们自己的套接字。
在客户端建立套接字所涉及的步骤如下:
使用socket()系统调用创建一个套接字。