通訊形式
-
單工通訊-數(shù)據(jù)只能單向傳送一方來發(fā)送數(shù)據(jù),另一方來接收數(shù)據(jù)
-
半雙工通訊-數(shù)據(jù)能雙向傳送但不能同時雙向傳送
-
全雙工通訊-數(shù)據(jù)能夠同時雙向傳送和接受
注:http的通訊方式是分版本
http1.0
:單工。因為是短連接,客戶端發(fā)起請求之后,服務(wù)端處理完請求并收到客戶端的響應(yīng)后即斷開連接。
http1.1
:半雙工。默認開啟長連接keep-alive
,開啟一個連接可發(fā)送多個請求。
http2.0
:全雙工,允許服務(wù)端主動向客戶端發(fā)送數(shù)據(jù)。
長連接和短連接
短連接-凡是在一次完整的消息交互(發(fā)請求-收響應(yīng))
之后,立刻斷開連接(有一方發(fā)送FIN消息)的情況都稱為短連接
長連接-長連接的一個明顯特征是會有心跳消息(也有沒有心跳的情況),且一般心跳間隔都在30S或者1MIN左右,用wireshark抓包可以看到有規(guī)律的心跳消息交互(可能會存在毫秒級別的誤差)。
1.websocket協(xié)議長短連接
websocket是一個長連接-只需要建立一次連接,就可以一直保持
2.http協(xié)議長短連接-分版本
HTTP/1.0 中,默認使用的是短連接。也就是說,瀏覽器和服務(wù)器每進行一次 HTTP 操作,就建立一次連接,任務(wù)結(jié)束就中斷連接。
HTTP1.1 默認保持長連接(HTTP persistent connection,也翻譯為持久連接),用以保持連接特性。數(shù)據(jù)傳輸完成了保持 TCP 連接不斷開(不發(fā) RST 包、不四次握手),等待在同域名下繼續(xù)用這個通道傳輸數(shù)據(jù);
3.tcp協(xié)議長短連接
tcp長連接-在TCP層握手成功后,不立即斷開連接,并在此連接的基礎(chǔ)上進行多次消息(包括心跳)交互,直至連接的任意一方(客戶端OR服務(wù)端)主動斷開連接,此過程稱為一次完整的長連接。
tcp短連接-客戶端收到服務(wù)端的響應(yīng)后,立刻發(fā)送FIN消息,主動釋放連接。也有服務(wù)端主動斷連的情況,凡是在一次消息交互(發(fā)請求-收響應(yīng))之后立刻斷開連接的情況。
協(xié)議關(guān)系表-websocket與http都是基于tcp,可靠性傳輸協(xié)議,都是應(yīng)用層協(xié)議
協(xié)議介紹-細節(jié)注意
1.websocket協(xié)議
-
WebSocket 是一種網(wǎng)絡(luò)通信協(xié)議。RFC6455定義了它的通信標準。
-
WebSocket是HTML5下一種新的協(xié)議(websocket協(xié)議本質(zhì)上是一個基于tcp的協(xié)議)
-
WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)?。但是建立之后,在真正傳輸時候是不需要HTTP協(xié)議的
-
websocket約定了一個通信的規(guī)范,通過一個握手的機制,客戶端和服務(wù)器之間能建立一個類似tcp的連接,從而方便它們之間的通信
-
在websocket出現(xiàn)之前,web交互一般是基于http協(xié)議的短連接或者長連接
-
websocket是一種全新的協(xié)議,不屬于http無狀態(tài)協(xié)議,協(xié)議名為"ws"
-
說它是TCP傳輸,主要體現(xiàn)在建立長連接后,瀏覽器是可以給服務(wù)器發(fā)送數(shù)據(jù),服務(wù)器也可以給瀏覽器發(fā)送請求的。當然它的數(shù)據(jù)格式并不是自己定義的,是在要傳輸?shù)臄?shù)據(jù)外層有ws協(xié)議規(guī)定的外層包的。
2.http協(xié)議
-
http是一種無狀態(tài),無連接,單向的應(yīng)用層協(xié)議,它采用了請求/響應(yīng)模型,通信請求只能由客戶端發(fā)起,服務(wù)端對請求做出應(yīng)答處理。這樣的弊端顯然是很大的,只要服務(wù)端狀態(tài)連續(xù)變化,客戶端就必須實時響應(yīng),都是通過javascript與ajax進行輪詢,這樣顯然是非常麻煩的,同時輪詢的效率低,非常的浪費資源(http一直打開,一直重復(fù)的連接)。、
-
而http是瀏覽器發(fā)起向服務(wù)器的連接,服務(wù)器預(yù)先并不知道這個連接
3.tcp協(xié)議
-
TCP(傳輸控制協(xié)議)是一種面向連接的協(xié)議,它提供了可靠的數(shù)據(jù)傳輸服務(wù)。TCP在傳輸數(shù)據(jù)之前會建立一條邏輯連接,并在傳輸完成后斷開連接。TCP還提供了數(shù)據(jù)流控制、擁塞控制和差錯控制等功能。
-
TCP是全雙工通信協(xié)議。這意味著在通信過程中,雙方都能同時發(fā)送和接收數(shù)據(jù)。
協(xié)議區(qū)別對比圖
區(qū)別點 | tcp | http | websocket |
---|---|---|---|
長短連接 | 長短連接 | 分版本 | 長連接 |
模型層 | 傳輸層 | 應(yīng)用層 | 應(yīng)用層 |
通訊方式 | 全雙工通訊 | 分版本 | 全雙工通訊 |
總結(jié):
經(jīng)過這一趟流程下來相信你也對?Websocket協(xié)議-http協(xié)議-tcp協(xié)議區(qū)別和相同點 有了初步的深刻印象,但在實際開發(fā)中我 們遇到的情況肯定是不一樣的,所以我們要理解它的原理,萬變不離其宗。加油,打工人!文章來源:http://www.zghlxwxcb.cn/news/detail-611438.html
什么不足的地方請大家指出謝謝 -- 風(fēng)過無痕文章來源地址http://www.zghlxwxcb.cn/news/detail-611438.html
到了這里,關(guān)于Websocket協(xié)議-http協(xié)議-tcp協(xié)議區(qū)別和相同點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!