如何理解Socket

2021-06-20 09:52:58 字數 1652 閱讀 6281

socket協議的形象描述

socket的英文原義是「孔」或「插座」。在這裡作為4bds unix的程序通訊機制,取後一種意義。socket非常類似於**插座。以乙個國家級**網為例。**的通話雙方相當於相互通訊的2個程序,區號是它的網路位址;區內乙個單位的交換機相當於一台主機,主機分配給每個使用者的局內號碼相當於socket號。任何使用者在通話之前,首先要占有一部**機,相當於申請乙個socket;同時要知道對方的號碼,相當於對方有乙個固定的socket。然後向對方撥號呼叫,相當於發出連線請求(假如對方不在同一區內,還要撥對方區號,相當於給出網路位址)。對方假如在場並空閒(相當於通訊的另一主機開機且可以接受連線請求),拿起**話筒,雙方就可以正式通話,相當於連線成功。雙方通話的過程,是一方向**機發出訊號和對方從**機接收訊號的過程,相當於向socket傳送資料和從socket接收資料。通話結束後,一方掛起**機相當於關閉socket,撤消連線。

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

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

(協議,本地位址,本地埠)

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

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

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

-----

",也無法建立連線。現在,如果在這台主機上執行乙個ftp服務軟體(該軟體將開啟乙個socket, 並將其繫結到21埠),再在這台主機上執行乙個web 服務軟體(該軟體將開啟另乙個socket,並將其繫結到80埠)。這樣,在另一台主機或同一臺主機上執行ftp 202.120.127.201,ftp客戶軟體將通過21埠來呼叫主機上由ftp 服務軟體提供的socket,與其建立連線並對話。而在netscape中輸入"

"時,將通過80埠來呼叫主機上由web服務軟體提供的socket,與其建 立連線並對話。 

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

初步理解socket

在學習socket之前,先回顧下tcp ip協議。tcp ip transmission control protocol internet protocol 即傳輸控制協議 網間協議,定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準,從字面意思來看tcp ip是tcp和ip協議的合稱,但實...

簡單理解Socket

鏈結 要想理解socket首先得熟悉一下tcp ip協議族,tcp ip transmission control protocol internet protocol 即傳輸控制協議 網間協議,定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準 從字面意思來看tcp ip是tcp和ip協議的...

簡單理解Socket

tcp ip 要想理解socket首先得熟悉一下tcp ip協議族,tcp ip transmission control protocol internet protocol 即傳輸控制協議 網間協議,定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準,從字面意思來看tcp ip是tcp和i...