1.8 客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。
可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:
- 等待一个客户请求的到来。
- 处理客户请求。
- 发送响应给发送请求的客户。
- 返回I 1步。
重复型服务器主要的问题发生在 I 2状态。在这个时候,它不能为其他客户机提供服务。相应地,并发型服务器采用以下步骤:
- 等待一个客户请求的到来。
- 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
- 返回1步。并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。
一般来说, T C P服务器是并发的,而 U D P服务器是重复的,但也存在一些例外。我们将在11 . 1 2节对U D P对其服务器产生的影响进行详细讨论,并在 1 8 . 11节对T C P对其服务器的影响进行讨论。