socket通訊和tcp通訊的區別:1、tcp協定屬於傳輸層協定,而socket是應用層和傳輸層之間的一個抽象層;2、建立一個TCP連線需要三次握手;3、socket連線可以保持長連線;4、tcp伺服器端和tcp使用者端使用socket通訊等。
本文操作環境:Windows10系統、Dell G3電腦。
socket通訊和tcp通訊的區別是什麼?
tcp和socket的區別
一: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
我們知道兩個程序如果需要進行通訊最基本的一個前提能能夠唯一的標示一個程序,在本地程序通訊中我們可以使用PID來唯一標示一個程序,但PID只在本地唯一,網路中的兩個程序PID衝突機率很大,這時候我們需要另闢它徑了,我們知道IP層的ip地址可以唯一標示主機,而TCP層協定和埠號可以唯一標示主機的一個程序,這樣我們可以利用ip地址+協定+埠號唯一標示網路中的一個程序。
能夠唯一標示網路中的程序後,它們就可以利用socket進行通訊了,什麼是socket呢?
我們經常把socket翻譯為通訊端,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用層呼叫已實現程序在網路中通訊。
圖5:socket通訊系統模組示意圖
tcp伺服器端和tcp使用者端使用socket通訊的過程如下。
從圖中可以看到,socket連線可以保持長連線。
圖6:基本socket客戶/伺服器端通訊流程示意圖
注意的是,socket連線可以由使用者端主動關閉,也可以由伺服器端主動關閉。
更多相關知識,請存取欄目!
以上就是socket通訊和tcp通訊的區別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!