TCP、UDP、HTTP、SOCKET、WebSocket之間的區別

推薦閱讀:

TCP爲什麼是三次握手,爲什麼不是兩次或者四次 && TCP四次揮手

TCP的幾個狀態 (SYN, FIN, ACK, PSH, RST, URG)

TCP/IP協議棧主要分爲四層:應用層、傳輸層、網絡層、數據鏈路層,
每層都有相應的協議,如下圖

IP:
網絡層協議;(高速公路)

TCP和UDP:
傳輸層協議;(卡車)

HTTP:
應用層協議;(貨物)。HTTP(超文本傳輸協議)是利用TCP在兩臺電腦(通常是Web服務器和客戶端)之間傳輸信息的協議。客戶端使用Web瀏覽器發起HTTP請求給Web服務器,Web服務器發送被請求的信息給客戶端。

SOCKET:
套接字,TCP/IP網絡的API。(港口碼頭/車站)Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象爲幾個簡單的接口供應用層調用已實現進程在網絡中通信。

TCP/IP:
代表傳輸控制協議/網際協議,指的是一系列協議,TCP/IP 模型在 OSI 模型的基礎上進行了簡化,變成了四層,從下到上分別爲:網絡接口層、網絡層、傳輸層、應用層。與 OSI 體系結構對比如下:


TCP/UDP區別:
TCP
(傳輸控制協議,Transmission Control Protocol):(類似打電話)
面向連接、傳輸可靠(保證數據正確性)、有序(保證數據順序)、傳輸大量數據(流模式)、速度慢、對系統資源的要求多,程序結構較複雜,
每一條TCP連接只能是點到點的,
TCP首部開銷20字節。

UDP
(用戶數據報協議,User Data Protocol):(類似發短信)
面向非連接 、傳輸不可靠(可能丟包)、無序、傳輸少量數據(數據報模式)、速度快,對系統資源的要求少,程序結構較簡單 ,
UDP支持一對一,一對多,多對一和多對多的交互通信,
UDP的首部開銷小,只有8個字節。

tcp三次握手建立連接:


第一次握手:客戶端發送syn包(seq=x)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也發送一個SYN包(seq=y),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=y+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
握手過程中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。

主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;
主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什麼時候發?”,這是第二次對話;
主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接着吧!”,這是第三次對話。
三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之後,主機A才向主機B正式發送數據。

Websocket
Websocket協議解決了服務器與客戶端全雙工通信的問題。

注:什麼是單工、半雙工、全工通信?
信息只能單向傳送爲單工;
信息能雙向傳送但不能同時雙向傳送稱爲半雙工;
信息能夠同時雙向傳送則稱爲全雙工。

websocket協議解析
websocket協議包含兩部分:一部分是“握手”,一部分是“數據傳輸”。

WebSocket和Socket區別
可以把WebSocket想象成HTTP(應用層),HTTP和Socket什麼關係,WebSocket和Socket就是什麼關係。

HTTP 協議有一個缺陷:通信只能由客戶端發起,做不到服務器主動向客戶端推送信息。

WebSocket 協議在2008年誕生,2011年成爲國際標準。所有瀏覽器都已經支持了。
它的最大特點就是,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話,屬於服務器推送技術的一種。

幾者之間的關係概況

對於幾者之間的關係,可以概況爲:

http websocket等應用層協議通過socket接口從而調用tcp udp等傳輸層協議,從而達到網絡通信。

tcp udp =》 socket =》 http websocket

參考:
揭開Socket編程的面紗

圖解TCP-IP協議

Android 進階12:進程通信之 Socket (順便回顧 TCP UDP)

WebSocket與TCP/IP

websocket 歷史及使用詳解

WebSocket 教程
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章