国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HTTP、WebSocket、STOMP、MQTT 協(xié)議

這篇具有很好參考價值的文章主要介紹了HTTP、WebSocket、STOMP、MQTT 協(xié)議。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、計算機網(wǎng)絡的層次結構

1、兩種模型(TCP/IP四層模型與OSI體系)對應的結構,以及TCP/IP模型各個層級對應的協(xié)議

http,mqtt,tcp協(xié)議,http,websocket,網(wǎng)絡,網(wǎng)絡協(xié)議

1、TCP/IP協(xié)議

  • TCP/IP 是用于因特網(wǎng) (Internet) 的通信協(xié)議,是對計算機必須遵守的規(guī)則的描述,只有遵守這些規(guī)則,計算機之間才能進行通信。
  • TCP/IP是基于TCP和IP這兩個最初的協(xié)議之上的不同的通信協(xié)議的大集合,是一個協(xié)議族。

1-1、TCP(傳輸控制協(xié)議,Transmission Control Protocol)

  • 在計算機網(wǎng)絡中屬于傳輸層,是TCP/IP協(xié)議棧中最核心的協(xié)議之一
  • 面向連接:一種可靠的傳輸服務,使用前必須先建立連接,傳輸完成后釋放
  • 點對點:每一條tcp協(xié)議只能是一對一的,TCP 連接的端點叫做套接字,套接字 socket = (IP 地址:端口號),每一條 TCP 連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。(注意:該socket和經(jīng)常說的socket編程中的socket不是一個東西,后者的全稱應該是Socket API
  • 全雙工通信:允許通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù)
  • 流模式:數(shù)據(jù)被作為無結構的字節(jié)流
  • 有序的:為每個由其傳輸?shù)淖侄沃付樞蛱?,對于發(fā)送的每一個分段,接收主機必須在一個指定的時間內(nèi)返回一個確認信息,發(fā)送者未收到確認,數(shù)據(jù)會被重新發(fā)送

1-2、IP協(xié)議(互聯(lián)網(wǎng)協(xié)議,Internet Protocol)

  • 在計算機網(wǎng)絡中屬于網(wǎng)際層(網(wǎng)絡層/網(wǎng)絡互連層),是TCP/IP協(xié)議棧中最核心的協(xié)議之一
  • 無連接的協(xié)議:主要通過IP地址,保證了聯(lián)網(wǎng)設備的唯一性
  • 不可靠的數(shù)據(jù)傳輸:不能保證數(shù)據(jù)包一定能到達對方,數(shù)據(jù)是否會被丟棄以及丟棄之后如何處理

二、HTTP協(xié)議(超文本傳輸協(xié)議,HyperText Transfer Protocol)

  • 基于TCP協(xié)議的應用層傳輸協(xié)議,簡單來說就是客戶端和服務端進行數(shù)據(jù)傳輸?shù)囊环N規(guī)則。
  • 無狀態(tài)協(xié)議:HTTP協(xié)議本身不會對發(fā)送過的請求和相應的通信狀態(tài)進行持久化處理,由于HTTP是無狀態(tài)協(xié)議,通常在網(wǎng)頁上引入cookie之類技術來記錄狀態(tài)
  • 無連接協(xié)議:基于請求-響應的模式,每次連接只處理一個請求,即一個Request和一個Response對應了整個連接,響應后斷開連接。(在后續(xù)的版本中添加了Connection: Keep-Alive實現(xiàn)長連接)
  • 任意類型的數(shù)據(jù)對象:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標記
  • 半雙工通信:允許數(shù)據(jù)在兩個方向上傳輸,但是在某一時刻,只允許數(shù)據(jù)在一個方向上傳輸

HTTP工作原理

1、客戶端連接到服務器

一個HTTP客戶端與服務器建立一個TCP套接字連接

2、發(fā)送HTTP請求

通過TCP套接字,向服務器發(fā)送一個文本的請求報文(請求行、請求頭、請求數(shù)據(jù)、空行)

3、服務器接受請求并返回HTTP響應

服務器解析請求,將資源寫到TCP套接字,由客戶端讀取響應內(nèi)容(狀態(tài)行、響應頭部、空行、響應數(shù)據(jù))

4、釋放連接TCP連接

若connection模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection模式為keepalive,則該連接會保持段時間,在該時間內(nèi)可以繼續(xù)接收請求

5、客戶端解析響應數(shù)據(jù)

通過狀態(tài)行、響應頭等相關內(nèi)容進行資源解析

三、WebSocket協(xié)議

要使用HTTP實現(xiàn)雙向通訊,傳統(tǒng)的方式即進行輪詢已達到效果(即每隔一段時間,想服務器發(fā)出請求獲取最新的數(shù)據(jù)),常見的輪詢方式分為輪詢(定時請求)和長輪詢(請求后服務器在有數(shù)據(jù)變化時才響應,客戶端在請求快過期前或請求響應后,再次發(fā)起請求)。

這種傳統(tǒng)的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發(fā)出請求,然而 HTTP 請求與響應可能會包含較長的頭部,其中真正有效的數(shù)據(jù)可能只是很小的一部分,所以這樣會消耗很多帶寬資源。

HTML5定義了 WebSocket 協(xié)議,能更好的節(jié)省服務器資源和帶寬,并且能夠更實時地進行通訊。

  • 基于TCP協(xié)議的應用層傳輸協(xié)議
  • 持久連接:連接創(chuàng)建后,客戶端和服務端的數(shù)據(jù)傳輸不用新建連接。
  • 全雙工通信:客戶端和服務端可以雙向通信
  • 較少的開銷:數(shù)據(jù)交換時,數(shù)據(jù)包頭較小

1、WebSocket連接的建立

當客戶端想要使用 WebSocket 協(xié)議與服務端進行通信時, 首先需要確定服務端是否支持 WebSocket 協(xié)議, 因此 WebSocket 協(xié)議的第一步是進行握手, WebSocket 握手采用 HTTP Upgrade 機制, 客戶端可以發(fā)送如下所示的結構發(fā)起握手 (請注意 WebSocket 握手只允許使用 HTTP GET 方法):

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

在 HTTP Header 中設置 Upgrade 字段, 其字段值為 websocket, 并在 Connection 字段指示 Upgrade, 服務端若支持 WebSocket 協(xié)議, 并同意握手:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13

客戶端校驗返回內(nèi)容,握手成功則將通信協(xié)議升級到WebSocket,至此就可以使用WebSocket協(xié)議進行客戶端-服務端數(shù)據(jù)交換。

2、WebSocket端口:

WebSockets使用HTTP Upgrade機制升級到Web Socket協(xié)議,因此HTTP服務器可以與WebSocket服務器共享默認的HTTP與HTTPS端。默認情況下:WebSocket 協(xié)議使用 80 端口、若運行在 TLS 之上時,默認使用 443 端口

3、WebSocket與Socket的關系

  • WebSocket 和 Socket 并無關系
  • 套接字(socket)在TCP/IP之上,位于傳輸層和應用層之間的一個抽象層,并不是一個協(xié)議,傳輸層的低一層協(xié)議服務socket,socket服務應用層。socket其實就是是一組API,提供了對TCP/IP的相關操作

4、WebSocket與HTTP的關系

  • 都屬于應用層協(xié)議,基于TCP/IP協(xié)議,是可靠的傳輸協(xié)議
  • WebSocket支持持久連接,HTTP不支持持久連接(HTTP使用Connection: Keep-Alive也可實現(xiàn)長連接,但HTTP的生命周期還是屬于一個Request對應一個Response)
  • WebSocket是雙向通信協(xié)議,HTTP是單向協(xié)議
  • WebSocket協(xié)議在第一次握手連接時,通過HTTP協(xié)議
  • HTTP服務器可以與WebSocket服務器共享默認的HTTP與HTTPS端(80和443)

四、STOMP協(xié)議(簡單(流)文本定向消息協(xié)議,Simple (or Streaming) Text Orientated Messaging Protocol)

WebSocket協(xié)議只會將字節(jié)流轉換為文本/二進制消息,使用時需要定義應用間所發(fā)送消息的語義,還需要確保Client和Server都能遵循這些語義。比如:在消息中有一個type,當type為subscribe時,表示訂閱消息,當type為message時表示發(fā)送了一條消息。在使用WebSocket的時候,我們不同的地方使用都要做類似的工作:“設計message”,也就是常說的“WebSocket的通信形式層級過低”

  • STOMP是一種為MOM(Message Oriented Middleware,面向消息的中間件)設計的簡單文本協(xié)議,提供了一個可互操作的連接格式,用于client之間進行異步消息傳輸?shù)暮唵挝谋緟f(xié)議
  • STOMP協(xié)議并不是為websocket設計的, 它是屬于消息隊列的一種協(xié)議,STOMP協(xié)議可以建立在WebSocket之上,也可以建立在其他應用層協(xié)議之上(一般也就是WebSocket了)
  • STOMP 提供了一個基于幀的線路格式(借鑒了HTTP),使用不同的幀,表示不同的含義
    http,mqtt,tcp協(xié)議,http,websocket,網(wǎng)絡,網(wǎng)絡協(xié)議

http,mqtt,tcp協(xié)議,http,websocket,網(wǎng)絡,網(wǎng)絡協(xié)議文章來源地址http://www.zghlxwxcb.cn/news/detail-852534.html

五、MQTT協(xié)議(消息隊列遙測傳輸協(xié)議,Message Queuing Telemetry Transport)

  • 基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通訊協(xié)議,該協(xié)議構建于TCP/IP協(xié)議上,屬于應用層協(xié)議
  • 消息不是直接從發(fā)送器發(fā)送到接收器,是由MQTT server(或稱為 MQTT Broker)分發(fā)。(區(qū)別于WebSocket的點對點)
  • 可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務,常用于物聯(lián)網(wǎng)(IoT)應用中的設備間通信
  • MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務器,消息發(fā)布者可以同時是訂閱者。發(fā)布者和消費者之間并不關心對方,都只和代理(Broker)(服務器)打交道
  • 提供心跳機制、遺囑消息、QoS 質(zhì)量等級+離線消息、主題和安全管理等多種特性

六、MQTT與WebSocket

1、相同點

  • MQTT 和 WebSocket 都是應用層協(xié)議
  • 都是使用 TCP 協(xié)議確??煽總鬏敂?shù)據(jù)
  • 都支持雙向通信
  • 都使用二進制傳輸

2、通信模型

  • WebSocket 是一種簡單的報文協(xié)議,僅僅定義了會話的發(fā)起方式和報文格式及類型。如何使用報文通信全由應用程序控制
  • MQTT 是一種比較復雜的消息協(xié)議,規(guī)定了客戶端和服務器的通信模型,是一種面向主題(topic)的消息廣播協(xié)議,基于發(fā)布/訂閱模式
  • MQTT 是一套比較復雜的消息投遞協(xié)議,而 WebSocket則只是在TCP協(xié)議之上實現(xiàn)了簡單的報文通信。兩種協(xié)議工作層次不一樣,也就是常說的“WebSocket的通信形式層級過低”

3、連接建立方式

  • WebSocket 基于 HTTP/1.1 的 Upgrade 機制協(xié)商會話,協(xié)商完成后協(xié)議由HTTP升級到WebSocket,完成雙工信道的建立
  • MQTT 協(xié)議則需要通過 CONNECT 報文協(xié)商會話,TCP連接建立之后,客戶端會主動發(fā)送 CONNECT 報文。服務端準備好之后會回應 CONNACK 報文,完成雙工信道的建立

4、消息收發(fā)方式

  • WebSocket 收發(fā)消息不需要對方確認
  • MQTT 收發(fā)消息需要根據(jù)投遞級別(QoS)進行確認:QoS 0(最多一次)、QoS 1(最少一次)、QoS 2(恰好一次)

5、?;顧C制

  • WebSocket 只規(guī)定了 ping/pong 兩種報文,用于心跳探測,但協(xié)議并不強制要求定時收發(fā)心跳包
  • MQTT 則有明確的心跳協(xié)商機制。協(xié)商會話使用的 CONNECT 報文包含 Keep Alive 頭部信息,使用兩個字節(jié)傳輸心跳間隔,單位是秒。會話協(xié)商后需要定時收發(fā) PINGREQ 和 PINGRESP 報文。

6、使用場景

  • MQTT是為了物聯(lián)網(wǎng)場景設計的基于TCP的Pub/Sub協(xié)議,有許多為物聯(lián)網(wǎng)優(yōu)化的特性,比如適應不同網(wǎng)絡的QoS、層級主題、遺言等等
  • WebSocket是為了HTML5應用方便與服務器雙向通訊而設計的協(xié)議,HTTP握手然后轉TCP協(xié)議,用于取代之前的Server Push、Comet、長輪詢等老舊實現(xiàn)

到了這里,關于HTTP、WebSocket、STOMP、MQTT 協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Websocket協(xié)議-http協(xié)議-tcp協(xié)議區(qū)別和相同點

    Websocket協(xié)議-http協(xié)議-tcp協(xié)議區(qū)別和相同點

    通訊形式 單工通訊-數(shù)據(jù)只能單向傳送一方來發(fā)送數(shù)據(jù),另一方來接收數(shù)據(jù) 半雙工通訊-數(shù)據(jù)能雙向傳送但不能同時雙向傳送 全雙工通訊-數(shù)據(jù)能夠同時雙向傳送和接受 注:http的通訊方式是分版本 http1.0 :單工。因為是短連接,客戶端發(fā)起請求之后,服務端處理完請求并收到

    2024年02月15日
    瀏覽(19)
  • API 接口主流協(xié)議有哪些?如何創(chuàng)建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同協(xié)議?

    API 接口主流協(xié)議有哪些?如何創(chuàng)建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同協(xié)議?

    API 接口協(xié)議繁多,不同的協(xié)議有著不同的使用場景。70% 互聯(lián)網(wǎng)應用開發(fā)者日常僅會接觸到最通用的 HTTP 協(xié)議,相信大家希望了解更多其他協(xié)議的信息。我們今天會給大家介紹各種 API 接口主流協(xié)議和他們之間的關系。 接口協(xié)議分成兩類: 傳輸層協(xié)議和應用層協(xié)議。 傳輸層協(xié)

    2023年04月21日
    瀏覽(45)
  • 前端面試:【網(wǎng)絡協(xié)議與性能優(yōu)化】HTTP/HTTPS、TCP/IP和WebSocket

    嗨,親愛的Web開發(fā)者!在構建現(xiàn)代Web應用時,了解網(wǎng)絡協(xié)議是優(yōu)化性能和確保安全性的關鍵。本文將深入探討HTTP/HTTPS、TCP/IP和WebSocket這三個網(wǎng)絡協(xié)議,幫助你理解它們的作用以及如何優(yōu)化Web應用的性能。 1. HTTP/HTTPS協(xié)議: HTTP(超文本傳輸協(xié)議): HTTP是用于在Web上傳輸數(shù)據(jù)的

    2024年02月11日
    瀏覽(27)
  • mqtt、tcp、http的區(qū)別

    MQTT、TCP和HTTP都是不同的通信協(xié)議,它們在設計和用途上有很大的區(qū)別。下面是它們之間的主要區(qū)別: MQTT是一種消息傳輸協(xié)議,專門設計用于在低帶寬、不穩(wěn)定的網(wǎng)絡環(huán)境中進行高效的通信。它采用發(fā)布/訂閱模式,適用于物聯(lián)網(wǎng)和M2M通信,以及需要輕量級消息傳輸?shù)膱鼍啊?/p>

    2024年02月14日
    瀏覽(44)
  • HTTP協(xié)議和MQTT協(xié)議對比誰更好

    HTTP協(xié)議是Web聯(lián)網(wǎng)的基礎,也是應用最為廣泛和流行的協(xié)議,HTTP連接最顯著的特點是客戶端發(fā)送的每次請求都需要服務器回送響應,在請求結束后,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。 MQTT是一種基于發(fā)布/訂閱模式的“輕量級”通訊協(xié)議,該協(xié)

    2023年04月12日
    瀏覽(23)
  • Qt/C++編寫物聯(lián)網(wǎng)組件/支持modbus/rtu/tcp/udp/websocket/mqtt/多線程采集

    Qt/C++編寫物聯(lián)網(wǎng)組件/支持modbus/rtu/tcp/udp/websocket/mqtt/多線程采集

    支持多種協(xié)議,包括Modbus_Rtu_Com/Modbus_Rtu_Tcp/Modbus_Rtu_Udp/Modbus_Rtu_Web/Modbus_Tcp/Modbus_Udp/Modbus_Web等,其中web指websocket。 支持多種采集通訊方式,包括串口和網(wǎng)絡等,可自由拓展其他方式。 自定義采集間隔(精確到毫秒)和超時次數(shù),超時后自動將離線的文件從輪詢隊列中移除,加

    2024年02月08日
    瀏覽(22)
  • WebSocket和HTTP協(xié)議有什么區(qū)別?&& 連環(huán)問:WebSocket和HTTP長輪詢的區(qū)別?

    什么是WebSocket? 答:WebSocket是一種網(wǎng)絡傳輸協(xié)議,可在單個TCP連接上進行全雙工通信,位于OSI模型的應用層。 特點: 1. TCP連接,與HTTP協(xié)議兼容 2. 雙向通信,主動推送(服務端向客戶端) 3. 無同源限制,協(xié)議標識符是ws(加密wss) WebSocket: 1. 支持端對端通訊 2. 可以由client發(fā)起

    2024年02月11日
    瀏覽(24)
  • 整合 WebSocket 基于 STOMP 協(xié)議實現(xiàn)廣播

    整合 WebSocket 基于 STOMP 協(xié)議實現(xiàn)廣播

    SpringBoot 實戰(zhàn) (十六) | 整合 WebSocket 基于 STOMP 協(xié)議實現(xiàn)廣播 如題,今天介紹的是 SpringBoot 整合 WebSocket 實現(xiàn)廣播消息。 什么是 WebSocket ? WebSocket 為瀏覽器和服務器提供了雙工異步通信的功能,即瀏覽器可以向服務器發(fā)送信息,反之也成立。 WebSocket 是通過一個 socket 來實現(xiàn)雙

    2024年01月21日
    瀏覽(20)
  • 為什么有了HTTP,還需要WebSocket協(xié)議?

    為什么有了HTTP,還需要WebSocket協(xié)議?

    目錄 WebSocket是什么? WebSocket怎樣建立連接? WebSocket的實際用途 WebSocket 與 HTTP 的選擇 HTTP 是基于 TCP協(xié)議 的,同一時間里,客戶端和服務器只能有一方主動發(fā)數(shù)據(jù),是 半雙工通信 。 通常,打開某個網(wǎng)頁,我們每點擊一次網(wǎng)頁上的某個選項,前端就會發(fā)送一次HTTP請求,網(wǎng)站

    2024年02月11日
    瀏覽(28)
  • 【Linux網(wǎng)絡】TCP UDP socket HTTP webSocket之間的區(qū)別

    【Linux網(wǎng)絡】TCP UDP socket HTTP webSocket之間的區(qū)別

    目錄 一、OSI TCP/IP模型 二、幾者之間的關系 三、HTTP 四、Socket 五、WebSocket 5.1、WebSocket 優(yōu)點 首先我們要了解OSI七層模型,和預支對應的TCP/IP 四層的模型。 ? ? 用下面的圖可以看出,TCP? UDP 工作在傳輸層,而 HTTP? WebSocket 工作在應用層,但socket不屬于七層模型中的任何一層,

    2024年02月11日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包