HTTP、WebSocket、MQTT、TCP的区别和联系

这篇具有很好参考价值的文章主要介绍了HTTP、WebSocket、MQTT、TCP的区别和联系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3个应用层协议

HTTP、WebSocket、MQTT都是应用层协议。

  • HTTP(HyperText Transfer Protocol)主要用于在Web浏览器和Web服务器之间传输数据,例如显示Web页面、文件下载、上传等操作,属于请求-响应协议。
  • WebSocket也是应用于浏览器和Web服务器之间进行双向通信,提供了实时交互的能力。
  • MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布-订阅模式的消息传输协议。MQTT协议主要用于物联网设备之间的通信,具有低带宽、低能耗、可靠性高、支持异步通信等特点。

我们使用HTTP和WebSocket协议在Web应用程序中进行数据交互,使用MQTT在物联网设备之间进行数据传输。

1个传输层协议

TCP(Transmission Control Protocol)是一种传输层协议,提供可靠的、面向连接的数据传输服务。TCP协议主要用于保证数据的可靠传输,采用三次握手协议建立连接,通过确认和重传机制保证数据的可靠性。 

WebSocket和HTTP协议的关系

WebSocket协议在HTTP协议之上建立,通过HTTP的Upgrade头部将HTTP协议升级为WebSocket协议。在建立WebSocket连接之前,客户端和服务器之间必须先建立HTTP连接。因此,WebSocket可以看作是一种在HTTP连接之上的新协议,它在原有的HTTP基础上增加了双向实时通信的功能,不需要每次请求都建立连接,可以保持持久连接。

HTTP协议本身是一种请求-响应协议,客户端通过发送请求,服务器接收请求并返回响应。在这个过程中,服务器不能主动向客户端发送消息,只有在接收到客户端请求后才能返回响应。这种单向通信的限制使得HTTP协议不能实现实时双向通信的功能,对于需要实时交互的应用来说,HTTP协议的性能和效率都比较低。

WebSocket协议的出现解决了这个问题。WebSocket协议建立一个持久性的TCP连接,使得客户端和服务器之间可以实时双向通信。当客户端和服务器之间建立了WebSocket连接后,客户端可以随时向服务器发送消息,服务器也可以主动向客户端发送消息,而不必等待客户端的请求。

因此,WebSocket和HTTP协议有着紧密的关系,WebSocket协议建立在HTTP协议之上,并且在使用WebSocket协议之前,需要先建立HTTP连接。这时,HTTP协议起到了类似TCP中握手的作用:

  1. 客户端向服务器发送HTTP请求,请求头部包含Upgrade和Connection字段,表示客户端请求升级到WebSocket协议。
  2. 服务器收到请求后,根据请求头部中的Upgrade字段,判断是否支持升级到WebSocket协议。
  3. 如果服务器支持升级到WebSocket协议,则返回HTTP响应,响应头部包含Upgrade和Connection字段,表示服务器同意升级到WebSocket协议。
  4. 客户端收到服务器的响应后,根据响应头部中的Upgrade和Connection字段,确认服务器同意升级到WebSocket协议,并开始使用WebSocket协议进行通信。

HTTP、WebSocket、MQTT、TCP的区别和联系

由于WebSocket协议建立在HTTP协议之上,因此WebSocket协议也继承了HTTP协议的一些特性,例如可以使用HTTP的身份认证和安全机制等。文章来源地址https://www.toymoban.com/news/detail-443940.html

到了这里,关于HTTP、WebSocket、MQTT、TCP的区别和联系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络】应用层——HTTP协议

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 上篇文章中,本喵带着大家对HTTP有了一个初步的认识,今天就来详细讲解一下这个应用层协议。 如上图所示的 url (网址),里面包含有 / 以及 ? 等字符。 像这样的字符,已经被url当做 特殊

    2024年02月15日
    浏览(42)
  • 网络协议(七)应用层-HTTP

    上篇文章介绍了传输层的TCP、UDP协议,在TCP/IP协议中,下三层(网络接口层,网络层,传输层)都是计算机系统联合其他硬件设备自己在干的事,身为程序员的我们平时对其感知不大。而应用层却是与程序开发息息相关的一层,如HTTP,HTTPS,DNS,FTP,SMTP等等,针对不同应用场

    2024年02月03日
    浏览(40)
  • JavaEE & HTTP应用层协议

    HTTP应用层协议 超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP) 是一个简单的请求-响应协议 ,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以

    2024年02月06日
    浏览(83)
  • 【JavaEE】HTTP应用层协议

    HTTP应用层协议 超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP) 是一个简单的请求-响应协议 ,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以

    2024年02月07日
    浏览(53)
  • 【应用层】网络基础 -- HTTP协议

    协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的,这里便与表述使用\\\"字符串\\\") 如果我们要传输一些\\\"结构化的数据\\\" 怎么办呢? 那么我们(TCP)在收到一个报文的时候,如何保证你收到了一个完整的报文?

    2024年02月11日
    浏览(47)
  • 【Linux】应用层之HTTP协议

    在应用层,需要我们传递应用层所需特殊的数据格式,这种数据可能是连续数据,例如int类型的整形变量,也可能是string类型的字符串,也可能是多个变量构成的结构体,那么就意味着我们发送的数据可能是连续的,也可能是不连续的,这时为了统一数据的解析方法,我们对

    2024年02月12日
    浏览(44)
  • Linux网络:应用层之HTTP协议

    我们程序员写的一个个解决实际问题,满足日常需求的网络程序,都是在应用层。 协议是一种约定。网络协议是计算机网络中通信双方都必须遵守的一组约定。 在网络通信中,都是以 “字符串” 的方式来发送和接收数据的。 如果要发送和接收一些结构化的数据,就需要序

    2023年04月26日
    浏览(53)
  • 网络篇05 | 应用层 http/https

    HTTP协议请求报文是以字符文本的格式传输,具体包含以下四大部分: 请求行(首行):[方法]+[url]+[版本号],分别使用空格分隔; 请求头(Header):请求的属性,每个键值对独占一行,冒号+空格来分割键和值; 空行:遇到空行表示Header部分结束; 正文(Body):空行后面的

    2024年04月15日
    浏览(53)
  • 【Linux】应用层协议:HTTP和HTTPS

    每个人都可以很喜欢每个人,但喜欢治不了病,喜欢买不了东西,喜欢不能当饭吃,喜欢很廉价… 1.1 URL的组成 1. 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求

    2024年02月10日
    浏览(50)
  • 【计算机网络】应用层——HTTP 协议(一)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 HTTP协议全称超文本传输协议,通过浏览器和服务器进行数据交互,进行

    2024年01月23日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包