socket是什麼意思

2021-07-15 08:07:28 字數 1818 閱讀 4606

在計算機通訊領域,socket 被翻譯為「套接字」,它是計算機之間進行通訊的一種約定或一種方式。通過 socket 這種約定,一台計算機可以接收其他計算機的資料,也可以向其他計算機傳送資料。

學習 socket,也就是學習計算機之間如何通訊,並編寫出實用的程式。

計算機分布在世界各地,要想和它們通訊,必須要知道確切的位置。確定計算機位置的方式有多種,ip 位址是最常用的,例如,114.114.114.114 是國內第乙個、全球第三個開放的 dns 服務位址,127.0.0.1 是本機位址。

其實,我們的計算機並不知道 ip 位址對應的地理位置,當要通訊時,只是將 ip 位址封裝到要傳送的資料報中,交給路由器去處理。路由器有非常智慧型和高效的演算法,很快就會找到目標計算機,並將資料報傳遞給它,完成一次單向通訊。

目前大部分軟體使用 ipv4 位址,但 ipv6 也正在被人們接受,尤其是在教育網中,已經大量使用。

有了 ip 位址,雖然可以找到目標計算機,但仍然不能進行通訊。一台計算機可以同時提供多種網路服務,例如web服務、ftp服務(檔案傳輸服務)、smtp服務(郵箱服務)等,僅有 ip 位址,計算機雖然可以正確接收到資料報,但是卻不知道要將資料報交給哪個網路程式來處理,所以通訊失敗。

為了區分不同的網路程式,計算機會為每個網路程式分配乙個獨一無二的

埠號(port number)

,例如,web服務的埠號是 80,ftp 服務的埠號是 21,smtp 服務的埠號是 25。

埠(port)

是乙個虛擬的、邏輯上的概念。可以將埠理解為一道門,資料通過這道門流入流出,每道門有不同的編號,就是埠號。如下圖所示:

協議(protocol)

就是網路通訊的約定,通訊的雙方必須都遵守才能正常收發資料。協議有很多種,例如 tcp、udp、ip 等,通訊的雙方必須使用同一協議才能通訊。協議是一種規範,由計算機組織制定,規定了很多細節,例如,如何建立連線,如何相互識別等。

協議僅僅是一種規範,必須由計算機軟體來實現。例如 ip 協議規定了如何找到目標計算機,那麼各個開發商在開發自己的軟體時就必須遵守該協議,不能另起爐灶。

所謂

協議族(protocol family)

,就是一組協議(多個協議)的統稱。最常用的是 tcp/ip 協議族,它包含了 tcp、ip、udp、telnet、ftp、smtp 等上百個互為關聯的協議,由於 tcp、ip 是兩種常用的底層協議,所以把它們統稱為 tcp/ip 協議族。計算機之間有很多資料傳輸方式,各有優缺點,常用的有兩種:sock_stream 和 sock_dgram。

1) sock_stream 表示面向連線的資料傳輸方式。資料可以準確無誤地到達另一台計算機,如果損壞或丟失,可以重新傳送,但效率相對較慢。常見的 http 協議就使用 sock_stream 傳輸資料,因為要確保資料的正確性,否則網頁不能正常解析。

2) sock_dgram 表示無連線的資料傳輸方式。計算機只管傳輸資料,不作資料校驗,如果資料在傳輸中損壞,或者沒有到達另一台計算機,是沒有辦法補救的。也就是說,資料錯了就錯了,無法重傳。因為 sock_dgram 所做的校驗工作少,所以效率比 sock_stream 高。

注意:sock_dgram 沒有想象中的糟糕,不會頻繁的丟失資料,資料錯誤只是小概率事件。
有可能多種協議使用同一種資料傳輸方式,所以在 socket 程式設計中,需要同時指明資料傳輸方式和協議。

綜上所述:ip位址和埠能夠在廣袤的網際網路中定位到要通訊的程式,協議和資料傳輸方式規定了如何傳輸資料,有了這些,兩台計算機就可以通訊了。

uma是什麼意思 UMA是什麼意思?

展開全部 uma 不明生物 是636f707962616964757a686964616f31333431376537動畫 進化戰記 betterman 中的一類人造怪物的統稱,是生命工學食料研究所 b.p.l.所長梅崎博士製造出來 協助他利用阿尼瑪斯之花 大量製造蛋白質 具有驚人攻擊性的怪物。阿拉...

是什麼意思?

meta是html中的元標籤,其中包含了對應html的相關資訊,客戶端瀏覽器或伺服器端的程式會根據這些資訊進行處理。http equiv類似於http的頭部協議,它回應給瀏覽器一些有用的資訊,以幫助正確和精確地顯示網頁內容。content 內容型別 重要!這個網頁的格式是文字的,網頁模式 chars...

In 是什麼意思

函式引數型別前 in 代表什麼 在visual c 中屬於sal批註,是為了編譯系統在分析 時發現缺陷用的 表示是乙個輸入引數。可以定義乙個 in 的巨集,這個巨集什麼都不做,就是形如這樣的。define in void fun int in x 等同於 void fun int x 但是他給出了引...