“客户端”和“服务器”在TCP/IP中可能会令人混淆,因为它们有多种含义,并且有时是多种含义并用:
- 硬件角色:客户端和服务器通常是指联网硬件所扮演的主要角色。客户端主要是指像PC这样的由个人使用的装置,主要通过发送请求来发起对话。服务器则是专门响应客户端请求的高性能设备,位于数据中心,除了管理员以外不曾为他人所见。
- 软件角色:TCP/IP使用不同的软件以使众多协议实现客户端和服务器角色。客户端软件通常安装于客户端硬件上,服务器软件则一般安装于服务器硬件上,但也并非一贯如此。有的设备既运行客户端软件又运行服务器软件。
- 事务角色:在任何具体的信息交换中,客户端一般是发起通信或发送请求的设备,而服务器则作出响应并且通常会提供信息。事务大多是由客户端设备上的客户端软件发起的,但并非总是如此。
一个典型的组织会有许多较小型的个人电脑被指定为客户端而几台较大型的电脑被指定为服务器。服务器一般运行服务器软件,客户端则通常运行客户端软件,反之亦然。
举例来说,假设您是在1号服务器机房工作的管理员,现在需要将一份文件发给2号服务器。于是您启用文件传输协议(FTP)从而向2号服务器发起对话。在这次事务中,1号服务器由于使用FTP客户端程序发起通信,所以扮演了客户端的角色,而2号服务器则充当了服务器的角色。理论上来说,您甚至可以从1号服务器向一个特定的客户端发起一个FTP传输,但前提是该客户端具有能响应该服务器请求的FTP服务器软件。不过这种并不常见,因为客户端设备上通常不安装服务器软件。
在某些协议下,服务器之间需要相互通信,此时可运用事务角色的概念来定义服务器角色和客户端角色。例如,当两个简单邮件传输协议(SMTP)服务器为了交换电子邮件而进行通信时,即使两者都是在服务器硬件上运行的服务器程序,但在任何事务过程中,必然是一个设备充当客户端而另一个充当服务器。在某些情况下,设备甚至可以在事务过程中交换客户端和服务器角色。
客户端和服务器角色往往随着时间的推移而变化。20世纪90年代,个人电脑的功能日益提高,“永久在线”式宽带连接导致客户端硬件/软件与服务器硬件/软件之间的界限模糊不清,并且增加了端对端应用模式的(比如文件共享)使用。然而到了21世纪初期前后,移动设备持有量的剧增逆转了这种趋势。移动设备通常在功能方面受到限制,所以更依赖于服务器提供功能,这令客户端/服务器变得比以往更重要。而像云计算等技术的出现更进一步坚定了将功能集中于服务器而用户仅适用“轻量级”客户端设备访问服务器这一想法。