Socket 通訊原理

2021-07-08 14:58:06 字數 2153 閱讀 7307

socket,又稱「套接字」。網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個 socket。

socket 的英文願意是「孔」或「插座」。在 internet 上的主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟乙個 socket,並繫結到乙個埠上,不同的埠對應不同的服務。socket 正如其英文原意那樣,像乙個插座。一台主機猶如布滿各種插座的房間,每個插座上都有乙個編號,有的插座提供220伏交流電,有的提供110伏交流電,有的提供有線電視節目。客戶軟體將插頭插到不同編號的插座上,就可以得到不同的服務。

socket 非常類似於**插座。以乙個國家級**網為例,**的通話雙方相當於相互通訊的2個程序,區號是它的網路位址;區內乙個單位的交換機相當於一台主機

,主機分配給每個使用者的局內號碼相當於 socket 號。任何使用者在通話之前,首先要占有一部**機,相當於申請乙個 socket;同時要知道對方的號碼,相當於對方有乙個固定的 socket。然後向對方撥號呼叫,相當於發出連線請求(假如對方不在同一區內,還要撥對方區號,相當於給出網路位址)。假如對方在場並空閒(相當於通訊的另一主機開機且可以接受連線請求),拿起**話筒,雙方就可以正式通話,相當於連線成功。雙方通話的過程,是一方向**機發出訊號和對方從**機接收訊號的過程,相當於向 socket 傳送資料和從 socket 接收資料。通話結束後,一方掛起**機相當於關閉 socket,撤消連線。

在**系統中,一般使用者只能感受到本地**機和對方**號碼的存在,建立通話的過程,話音傳輸的過程以及整個**系統的技術細節對他都是透明的,這也與 socket 機制非常相似。socket 利用網間網通訊設施實現程序通訊,但它對通訊設施的細節毫不關心,只要通訊設施能提供足夠的通訊能力,它就滿足了。

至此,我們對 socket 進行了直觀的描述。抽象出來,socket 實質上提供了程序通訊的端點。程序通訊之前,雙方首先必須各自建立乙個端點,否則是沒有辦法建立聯絡並相互通訊的。正如打**之前,雙方必須各自擁有一台**機一樣。

在網間網內部,每乙個 socket 用乙個半相關描述:(協議,本地位址,本地埠)。

乙個完整的 socket 有乙個本地唯一的 socket 號,由作業系統分配。

最重要的是,socket 是面向客戶/伺服器模型而設計的,針對客戶和伺服器程式提供不同的 socket 系統呼叫。客戶隨機申請乙個 socket(相當於乙個想打**的人可以在任何一台入網**上撥號呼叫),系統為之分配乙個 socket 號;伺服器擁有全域性公認的 socket,任何客戶都可以向它發出連線請求和資訊請求(相當於乙個被呼叫的**擁有乙個呼叫方知道的**號碼)。

socket 利用客戶/伺服器模式巧妙地解決了程序之間建立通訊連線的問題。伺服器 socket 半相關為全域性所公認非常重要。讀者不妨考慮一下,兩個完全隨機的使用者程序之間如何建立通訊?假如通訊雙方沒有任何一方的 socket 固定,就好比打**的雙方彼此不知道對方的**號碼,要通話是不可能的。

socket 是工作於 tcp/ip 協議中應用層和傳輸層之間的乙個抽象,如圖所示:

socket 保證了不同計算機之間的通訊,也就是網路通訊。對於**,通訊模型是客戶端伺服器之間的通訊。兩個端都建立乙個 socket 物件,然後通過 socket 物件對資料進行傳輸。通常伺服器處於乙個無線迴圈,等待客戶端連線:

在 tcp 連線會話中的作用:

上圖也很清晰的表明了三次握手的socket具體過程。

1.客戶端socket物件connect呼叫之後進行阻塞,此過程傳送了乙個syn。

2.伺服器socket物件呼叫accept函式之後阻塞,直到客戶端傳送來的syn,然後傳送syn和ack應答

3.客戶端socket物件收到服務端傳送的應答之後,再傳送乙個ack給伺服器,並返回connect呼叫,建立連線。

4.伺服器socket物件接受客戶端最後一次握手確定ack返回accept函式,建立連線。

至此,客戶端和伺服器的socket通訊連線建立完成,剩下的就是兩個端的連線物件收發資料,從而完成網路通訊。

SOCKET 通訊原理

源 基於tcp ip協議的網路程式設計 定義變數 獲得winsock版本 載入winsock庫 初始化 建立套接字 設定套接字選項 關閉套接字 解除安裝winsock庫 釋放所有資源 整個程式架構分為兩大部分,伺服器端客戶端。伺服器socket程式流程 socket bind listen acce...

Socket 通訊原理

socket 的中文翻譯過來就是 套接字 套接字是什麼,我們先來看看它的英文含義 插座。socket 就像乙個 插座,負責連通兩端的 進行點對點通訊,讓 可以進行通訊,埠就像插座上的孔,埠不能同時被其他程序占用。而我們建立連線就像把插頭插在這個插座上,建立乙個 socket 例項開始監聽後,這個 插...

Socket 通訊原理

socket是什麼呢?socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。不過socket...