今天突然想到這個問題tcp建立連線需要伺服器端和客戶端三次握手,socket也需要伺服器端和客戶端進行互動繫結ip和埠什麼的。見下圖:
先來看看socket建立連線的過程:
再來看看tcp建立連線(三次握手)的過程:
最後看看tcp斷開連線的四次握手:
socket只是通訊上一種通訊方式, tcp是一種通訊協議,我們所開發的程式大都都是基於tcp協議的socket通訊,當然也可以使用其他協議來通過socket通訊,比如 udp, 更強悍的話,你可以自定義協議來通過socket進行網路通訊。
從osi參考模型上來區分,socket是介於應用層和傳輸層中間的一層中。提供了應用程式呼叫其底層網路請求的api。看下邊的這個圖很容易理解。
具體可以參看此博文,講的比較詳細:
Socket的C S模型與TCP關係
首先我們看一下tcp的c s設計基本模型。在模型中有兩個關鍵點,與tcp連線可以對號入座 1 connet 與accept 的互動,完成tcp的三次握手連線。此處應該注意伺服器是屬於被動方。等待客戶端發起握手。期間任何乙個資料報的丟失都會使得連線不成功。2 雙方close 的互動,完成連線的關閉。當...
socket連線和TCP連線的關係
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己定義應用層協議。web使用http協議作應用層協議,以封裝http文字資訊,...
socket連線和TCP連線的關係
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己定義應用層協議。web使用http協議作應用層協議,以封裝http文字資訊,...