
- Unix Socket 教程
- Unix Socket - 首頁
- Unix Socket - 什麼是 Socket?
- Unix Socket - 網路地址
- Unix Socket - 網路主機名
- Unix Socket - 客戶端伺服器模型
- Unix Socket - 結構
- Unix Socket - 埠和服務
- Unix Socket - 網路位元組序
- Unix Socket - IP 地址函式
- Unix Socket - 核心函式
- Unix Socket - 輔助函式
- Unix Socket - 伺服器示例
- Unix Socket - 客戶端示例
- Unix Socket - 總結
- Unix Socket 有用資源
- Unix Socket - 快速指南
- Unix Socket - 有用資源
- Unix Socket - 討論
Unix Socket - 客戶端伺服器模型
大多數網路應用程式使用客戶端-伺服器架構,它指的是兩個程序或兩個應用程式相互通訊以交換某些資訊。這兩個程序之一充當客戶端程序,另一個程序充當伺服器。
客戶端程序
這是一個通常發出資訊請求的程序。獲取響應後,此程序可能會終止或進行其他處理。
例如,Internet 瀏覽器充當客戶端應用程式,它向 Web 伺服器傳送請求以獲取一個 HTML 網頁。
伺服器程序
這是一個接收來自客戶端請求的程序。在收到來自客戶端的請求後,此程序將執行所需的處理,收集所需的資訊並將其傳送給請求者客戶端。完成後,它準備好為另一個客戶端提供服務。伺服器程序始終處於警報狀態並準備為傳入請求提供服務。
例如 - Web 伺服器一直等待來自 Internet 瀏覽器的請求,並且一旦它收到來自瀏覽器的任何請求,它就會獲取請求的 HTML 頁面並將其傳送回該瀏覽器。
請注意,客戶端需要知道伺服器的地址,但伺服器在連線建立之前不需要知道客戶端的地址甚至存在。一旦連線建立,雙方都可以傳送和接收資訊。
2 層和 3 層架構
客戶端-伺服器架構有兩種型別 -
2 層架構 - 在此架構中,客戶端直接與伺服器互動。這種型別的架構可能存在一些安全漏洞和效能問題。Internet Explorer 和 Web 伺服器使用兩層架構。此處使用安全套接字層 (SSL) 解決安全問題。
3 層架構 - 在此架構中,另一個軟體位於客戶端和伺服器之間。此中間軟體稱為“中介軟體”。中介軟體用於執行所有安全檢查和負載均衡(在負載過重的情況下)。中介軟體接收來自客戶端的所有請求,並在執行必要的身份驗證後,將該請求傳遞給伺服器。然後伺服器執行所需的處理並將響應傳送回中介軟體,最後中介軟體將此響應傳遞迴客戶端。如果要實現 3 層架構,則可以在 Web 伺服器和 Web 瀏覽器之間保留任何中介軟體,例如 Web Logic 或 WebSphere 軟體。
伺服器型別
您可以擁有兩種型別的伺服器 -
迭代伺服器 - 這是伺服器最簡單的形式,其中伺服器程序為一個客戶端提供服務,並在完成第一個請求後,接收來自另一個客戶端的請求。同時,另一個客戶端保持等待狀態。
併發伺服器 - 這種型別的伺服器執行多個併發程序以同時處理許多請求,因為一個程序可能需要更長時間,而另一個客戶端無法等待那麼長時間。在 Unix 下編寫併發伺服器最簡單的方法是fork一個子程序來分別處理每個客戶端。
如何建立客戶端
建立連線的系統呼叫對於客戶端和伺服器來說略有不同,但都涉及套接字的基本構造。這兩個程序都建立自己的套接字。
在客戶端建立套接字所涉及的步驟如下 -
使用socket()系統呼叫建立套接字。
使用connect()系統呼叫將套接字連線到伺服器的地址。
傳送和接收資料。有多種方法可以做到這一點,但最簡單的方法是使用read()和write()系統呼叫。
如何建立伺服器
在伺服器端建立套接字所涉及的步驟如下 -
使用socket()系統呼叫建立套接字。
使用bind()系統呼叫將套接字繫結到地址。對於 Internet 上的伺服器套接字,地址由主機上的埠號組成。
使用listen()系統呼叫偵聽連線。
使用accept()系統呼叫接受連線。此呼叫通常會阻塞連線,直到客戶端與伺服器連線。
使用read()和write()系統呼叫傳送和接收資料。
客戶端和伺服器互動
以下是顯示完整客戶端和伺服器互動的圖表 -
