標籤:
應用程式層通過傳輸層進行資料通訊時,TCP和UDP會遇到同時為多個應用程式進程提供並發服務的問題。多個TCP串連或多個應用程式進程可能需要通過同一個TCP協議連接埠傳輸資料。為了區別不同的應用程式進程和串連,許多電腦作業系統為應用程式與TCP/IP協議互動提供了稱為通訊端(Socket)的介面,區分不同應用程式進程間的網路通訊和串連。
產生通訊端,主要有3個參數:通訊的目的IP地址、使用的傳輸層協議(TCP或UDP)和使用的連接埠號碼。Socket原意是“插座”。通過將這3個參數結合起來,與一個“插座”Socket綁定,應用程式層就可以和傳輸層通過通訊端介面,區分來自不同應用程式進程或網路連接的通訊,實現資料轉送的並發服務。
Socket可以看成在兩個程式進行通訊串連中的一個端點,一個程式將一段資訊寫入Socket中,該Socket將這段資訊發送給另外一個Socket中,使這段資訊能傳送到其他程式中。1:
Host A上的程式A將一段資訊寫入Socket中,Socket的內容被Host A的網路管理軟體訪問,並將這段資訊通過Host A的網路介面卡發送到Host B,Host B的網路介面卡接收到這段資訊後,傳送給Host B的網路管理軟體,網路管理軟體將這段資訊儲存在Host B的Socket中,然後程式B才能在Socket中閱讀這段資訊。
要通過互連網進行通訊,至少需要一對通訊端,一個運行於客戶機端,稱之為ClientSocket,另一個運行於伺服器端,稱之為serverSocket。
根據串連啟動的方式以及本地通訊端要串連的目標,通訊端之間的串連過程可以分為三個步驟:伺服器監聽,用戶端請求,串連確認。
伺服器監聽:是伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態。
用戶端請求:是指由用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求。
串連確認:是指當伺服器端通訊端監聽到或者說接收到用戶端通訊端的串連請求,它就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端確認了此描述,串連就建立好了。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求。
收藏於 2011-05-24 來自於百度空間
什麼是Socket,為什麼要用Socket