套接字簡介

套接字介紹

參考資料
套接字參考資料-1
套接字參考資料-2

什麼是套接字

參考資料1

Socket的英文原意是"插座",作爲類UNIX系統的進程通信機制,它如同插座一樣方便的幫助計算機接入互聯網通信。

任何用戶在通信之前,首先要先申請一個Socket號,Socket號相當於自己的電話號碼。同時要知道對方的電話號碼,相當於對方有一個Socket。然後向對方撥號呼叫,相當於發出連接請求(假如對方不在同一區內,還要撥對方區號,相當於給出網絡地址)。對方假如在場並空閒(相當於通信的另一主機開機且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當於連接成功。雙方通話的過程,是向電話機發出信號和從電話機接受信號的過程,相當於Socket發送數據和從Socket接受數據。通話結束後,一方掛起電話機,相當於關閉Socket,撤銷連接。

由此可見,Socket的通信機制與電話交換機制非常相似。Socket實質上提供了進程通信的端點。進程通信之前,雙方首先必須各自創建一個端點,否則是沒有辦法建立聯繫並相互通信的。每一個Socket都用一個半相關描述。

參考資料2

應用層通過傳輸層進行數據通信時,TCP和UDP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP連接或多個應用程序進程可能需要 通過同一個TCP協議端口傳輸數據。爲了區別不同的應用程序進程和連接,許多計算機操作系統爲應用程序與TCP/IP協議交互提供了稱爲套接字 (Socket)的接口,區分不同應用程序進程間的網絡通信和連接。
生成套接字,主要有3個參數:通信的目的IP地址、使用的傳輸 層協議(TCP或UDP)和使用的端口號。Socket原意是“插座”。通過將這3個參數結合起來,與一個“插座”Socket綁定,應用層就可以和傳輸 層通過套接字接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的併發服務。

Socket可以看成在兩個程序進行通訊連接中的一個端點,一個程序將一段信息寫入Socket中,該Socket將這段信息發送給另外一個Socket中,使這段信息能傳送到其他程序中。

Host A上的程序A將一段信息寫入Socket中,Socket的內容被Host A的網絡管理軟件訪問,並將這段信息通過Host A的網絡接口卡發送到Host B,Host B的網絡接口卡接收到這段信息後,傳送給Host B的網絡管理軟件,網絡管理軟件將這段信息保存在Host B的Socket中,然後程序B才能在Socket中閱讀這段信息。

要通過互聯網進行通信,至少需要一對套接字,一個運行於客戶機端,稱之爲ClientSocket,另一個運行於服務器端,稱之爲serverSocket。

根據連接啓動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分爲三個步驟:服務器監聽,客戶端請求,連接確認

服務器監聽:是服務器端套接字並不定位具體的客戶端套接字,而是處於等待連接的狀態,實時監控網絡狀態。
客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然後就向服務器端套接字提出連接請求。
連 接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客 戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。

套接字的定義

{協議,本地地址,本地端口}。

一個完整的Socket則用一個相關描述

{協議,本地地址,本地端口,遠程地址,遠程端口}。 

每一個Socket有一個本地的唯一Socket號,由操作系統分配。套接字有3種類型:流式套接字(SOCK_STREAM)、數據包套接字(SOCK_DGRAM)和原始套接字。

流式套接字可以提供可靠的、面向連接的通信流。如果通過流式套接字發送了順序的數據:1、2。那麼數據到達遠程時候的順序也是1、2。

流式套接字可用於Telnet遠程連接、WWW服務等需要使數據順序傳遞的應用,它使用TCP協議保證數據傳輸的可靠性。流式套接字的工作原理如圖所示,我們將網絡中的兩臺主機分別作爲服務器和客戶機看待

在這裏插入圖片描述

數據包套接字定義了一種無連接的服務,數據通過相互獨立的報文進行傳輸,是無序的,並且不保證可靠性。數據包套接字使用者數據包協議UDP,數據只是簡單地傳送到對方。數據包套接字的工作原理如圖所示。

在這裏插入圖片描述

原始套接字允許對低層協議如IP或ICMP直接訪問,主要用於新的網絡協議實現的測試等。原始套接字主要用於一些協議的開發,可以進行比較底層的操作。它功能強大,但是沒有上面介紹的兩種套接字使用方便,一般的程序也涉及不到原始套接字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章