socket通訊和tcp通訊的區別:1、tcp協議屬於傳輸層協議,而socket是應用層和傳輸層之間的一個抽象層;2、建立一個TCP連接需要三次握手;3、 socket連線可以保持長連線;4、tcp服務端和tcp客戶端使用socket通訊等。
本文操作環境:Windows10系統、Dell G3電腦。
socket通訊和tcp通訊的差別是什麼?
tcp和socket的差異
tcp協定屬於傳輸層協定(UDP也屬於傳輸層協定,但UDP協定是無狀態的)。建立一個TCP連接需要三次握手,斷開一個TCP連接需要四次揮手。手機能夠使用連網功能,是因為手機底層實現了TCP/IP協議,使用手機終端透過無線網路就可以與服務端建立一個tcp連線。 TCP協定可以對上層網路提供接口,使上層網路資料的傳輸建立在「無差別」的網路之上。
tcp建立連線需要三次握手:
圖1:tcp連線三次握手示意圖如圖所示:客戶端要與服務端建立tcp連接,首先向服務端發送一個syn J訊號,服務端收到此訊號後向客戶端回答一個ACK J 1訊號,並額外加了一個syn K訊號,客戶端收到ACK J 1訊號後就知道,服務端能收到我的訊號,後面我客戶端就可以放心的發送資料給你服務端而不用擔心你服務端接收不到我發送的資料了。
圖2:tcp連線中斷時四次揮手示意圖
客戶端收到服務端的回應訊號ACK M 1後,客戶端就知道:服務端知道我客戶端不會再傳送封包給你服務端了,你可以停止對我的監聽了。
但此時只是客戶端->服務端的單向流動停止了,另一個方向的流動:
服務端->客戶端的資料發送還可以正常進行,直到服務端向客戶端發送FIN N揮手訊號,客戶端向服務端回應ACK N 1訊號,服務端才知道:客戶端知道我服務端不會再發送資料包給你客戶端了,你可以停止對我的監聽了。
至此,客戶端->服務端的單向流動和服務端->客戶端的單向流動兩個方向都停止,可以關閉連線了。
二:socket
我們知道兩個進程如果需要進行通訊最基本的一個前提能能夠唯一的標示一個進程,在本地進程通訊中我們可以使用PID來唯一標示一個進程,但PID只在本地唯一,網路中的兩個進程PID衝突幾率很大,這時候我們需要另闢它徑了,我們知道IP層的ip位址可以唯一標示主機,而TCP層協定和連接埠號碼可以唯一標示主機的一個進程,這樣我們可以利用ip位址+協定+埠號唯一標示網路中的一個進程。
######能夠唯一標示網路中的進程後,它們就可以利用socket進行通訊了,什麼是socket呢? ######我們常常把socket翻譯成套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象化為幾個簡單的介面供應用層呼叫已實現進程在網路中通訊。 ############ 圖5:socket通訊系統模組示意圖######tcp服務端和tcp客戶端使用socket通訊的過程如下。 ###從圖中可以看到,socket連線可以保持長連線。
圖6:基本socket客戶/服務端通訊流程示意圖
注意的是,socket連線可以由客戶端主動關閉,也可以由服務端主動關閉。
更多相關知識,請造訪常見問題欄位!
#以上是socket通訊和tcp通訊的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver Mac版
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)