“客戶端”和“服務器”在TCP/IP中可能會令人混淆,因為它們有多種含義,并且有時是多種含義并用:
硬件角色:客戶端和服務器通常是指聯網硬件所扮演的主要角色。客戶端主要是指像PC這樣的由個人使用的裝置,主要通過發送請求來發起對話。服務器則是專門響應客戶端請求的高性能設備,位于數據中心,除了管理員以外不曾為他人所見。
軟件角色:TCP/IP使用不同的軟件以使眾多協議實現客戶端和服務器角色。客戶端軟件通常安裝于客戶端硬件上,服務器軟件則一般安裝于服務器硬件上,但也并非一貫如此。有的設備既運行客戶端軟件又運行服務器軟件。
事務角色:在任何具體的信息交換中,客戶端一般是發起通信或發送請求的設備,而服務器則作出響應并且通常會提供信息。事務大多是由客戶端設備上的客戶端軟件發起的,但并非總是如此。
一個典型的組織會有許多較小型的個人電腦被指定為客戶端而幾臺較大型的電腦被指定為服務器。服務器一般運行服務器軟件,客戶端則通常運行客戶端軟件,反之亦然。
舉例來說,假設您是在1號服務器機房工作的管理員,現在需要將一份文件發給2號服務器。于是您啟用文件傳輸協議(FTP)從而向2號服務器發起對話。在這次事務中,1號服務器由于使用FTP客戶端程序發起通信,所以扮演了客戶端的角色,而2號服務器則充當了服務器的角色。理論上來說,您甚至可以從1號服務器向一個特定的客戶端發起一個FTP傳輸,但前提是該客戶端具有能響應該服務器請求的FTP服務器軟件。不過這種并不常見,因為客戶端設備上通常不安裝服務器軟件。
在某些協議下,服務器之間需要相互通信,此時可運用事務角色的概念來定義服務器角色和客戶端角色。例如,當兩個簡單郵件傳輸協議(SMTP)服務器為了交換電子郵件而進行通信時,即使兩者都是在服務器硬件上運行的服務器程序,但在任何事務過程中,必然是一個設備充當客戶端而另一個充當服務器。在某些情況下,設備甚至可以在事務過程中交換客戶端和服務器角色。
客戶端和服務器角色往往隨著時間的推移而變化。20世紀90年代,個人電腦的功能日益提高,“永久在線”式寬帶連接導致客戶端硬件/軟件與服務器硬件/軟件之間的界限模糊不清,并且增加了端對端應用模式的(比如文件共享)使用。然而到了21世紀初期前后,移動設備持有量的劇增逆轉了這種趨勢。移動設備通常在功能方面受到限制,所以更依賴于服務器提供功能,這令客戶端/服務器變得比以往更重要。而像云計算等技術的出現更進一步堅定了將功能集中于服務器而用戶僅適用“輕量級”客戶端設備訪問服務器這一想法。