首頁 > 常見問題 > 主體

socket通訊和tcp通訊的差別是什麼

藏色散人
發布: 2022-01-24 14:51:11
原創
38550 人瀏覽過

socket通訊和tcp通訊的區別:1、tcp協議屬於傳輸層協議,而socket是應用層和傳輸層之間的一個抽象層;2、建立一個TCP連接需要三次握手;3、 socket連線可以保持長連線;4、tcp服務端和tcp客戶端使用socket通訊等。

socket通訊和tcp通訊的差別是什麼

本文操作環境:Windows10系統、Dell G3電腦。

socket通訊和tcp通訊的差別是什麼?

tcp和socket的差異

socket通訊和tcp通訊的差別是什麼

一:tcp協定

tcp協定屬於傳輸層協定(UDP也屬於傳輸層協定,但UDP協定是無狀態的)。建立一個TCP連接需要三次握手,斷開一個TCP連接需要四次揮手。手機能夠使用連網功能,是因為手機底層實現了TCP/IP協議,使用手機終端透過無線網路就可以與服務端建立一個tcp連線。 TCP協定可以對上層網路提供接口,使上層網路資料的傳輸建立在「無差別」的網路之上。

tcp建立連線需要三次握手:

圖1:tcp連線三次握手示意圖

如圖所示:

客戶端要與服務端建立tcp連接,首先向服務端發送一個syn J訊號,服務端收到此訊號後向客戶端回答一個ACK J 1訊號,並額外加了一個syn K訊號,客戶端收到ACK J 1訊號後就知道,服務端能收到我的訊號,後面我客戶端就可以放心的發送資料給你服務端而不用擔心你服務端接收不到我發送的資料了。

客戶端收到服務端發送的SYN K訊號後,還需要向服務端回一個ACK K 1訊號,這樣服務端收到此訊號就知道,我服務端給你客戶端發送的訊號,你客戶端能夠收到,這樣我服務端就可以放心的給你客戶端發送資料而不用擔心你客戶端收不到自己發送的資料了。

其實從上面的描述可以看到:

建立連線完全可以跟斷開TCP連線一樣分四步走,只不過是把服務端的回應訊號ACK和客戶端的認證請求訊號SYNC這兩步做成一步走了。

tcp連線關閉時需要四次揮手:

圖2:tcp連線中斷時四次揮手示意圖

客戶端收到服務端的回應訊號ACK M 1後,客戶端就知道:服務端知道我客戶端不會再傳送封包給你服務端了,你可以停止對我的監聽了。


但此時只是客戶端->服務端的單向流動停止了,另一個方向的流動:

服務端->客戶端的資料發送還可以正常進行,直到服務端向客戶端發送FIN N揮手訊號,客戶端向服務端回應ACK N 1訊號,服務端才知道:客戶端知道我服務端不會再發送資料包給你客戶端了,你可以停止對我的監聽了。

至此,客戶端->服務端的單向流動和服務端->客戶端的單向流動兩個方向都停止,可以關閉連線了。

socket通訊和tcp通訊的差別是什麼二:socket

我們知道兩個進程如果需要進行通訊最基本的一個前提能能夠唯一的標示一個進程,在本地進程通訊中我們可以使用PID來唯一標示一個進程,但PID只在本地唯一,網路中的兩個進程PID衝突幾率很大,這時候我們需要另闢它徑了,我們知道IP層的ip位址可以唯一標示主機,而TCP層協定和連接埠號碼可以唯一標示主機的一個進程,這樣我們可以利用ip位址+協定+埠號唯一標示網路中的一個進程。

######能夠唯一標示網路中的進程後,它們就可以利用socket進行通訊了,什麼是socket呢? ######我們常常把socket翻譯成套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象化為幾個簡單的介面供應用層呼叫已實現進程在網路中通訊。 ############ 圖5:socket通訊系統模組示意圖######tcp服務端和tcp客戶端使用socket通訊的過程如下。 ###

從圖中可以看到,socket連線可以保持長連線。
socket通訊和tcp通訊的差別是什麼
圖6:基本socket客戶/服務端通訊流程示意圖

注意的是,socket連線可以由客戶端主動關閉,也可以由服務端主動關閉。

更多相關知識,請造訪常見問題欄位!

#

以上是socket通訊和tcp通訊的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!