HTTP、MQTT、Websocket有什么区别
2018-03-18 19:09
387 查看
相同点:均为OSI 7层模型的【应用层协议】
不同点:如下
使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
对负载内容屏蔽的消息传输;
使用 TCP/IP 提供网络连接;
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
通信方式
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP之请求消息Request:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP之响应消息Response:HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
若connection 模式为close,则服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
不足:
HTTP通信方式问题,HTTP的请求/应答方式的会话都是客户端发起的,缺乏服务器通知客户端的机制,在需要通知的场景,如聊天室,游戏,客户端应用需要不断地轮询服务器。
取代了网页和服务器采用HTTP轮询进行双向通讯的机制。
不同点:如下
MQTT
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
对负载内容屏蔽的消息传输;
使用 TCP/IP 提供网络连接;
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
HTTP
HTTP是一个属于应用层的,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。通信方式
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP之请求消息Request:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP之响应消息Response:HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
若connection 模式为close,则服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
不足:
HTTP通信方式问题,HTTP的请求/应答方式的会话都是客户端发起的,缺乏服务器通知客户端的机制,在需要通知的场景,如聊天室,游戏,客户端应用需要不断地轮询服务器。
Websocket协议(非socket)
WebSocket协议是基于TCP的一种应用层网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。取代了网页和服务器采用HTTP轮询进行双向通讯的机制。
相关文章推荐
- HTTPS和HTTP有什么区别,到底安全在哪里?
- HTTP协议中POST、GET、HEAD的区别是什么
- System.Web.HttpContext.Current.Cache和System.Web.HttpRuntime.Cache有什么区别?
- 什么是HTTPS?听大神说https和http有何区别?
- http和https有什么区别?
- 牛客网Java刷题知识点之什么是HTTP协议、什么是HTTP隧道、HTTP响应的结构是怎么样的、HTTP报头包含哪些、HTTP中GET与POST方法有什么区别
- websocket 和 socket.io 之间的区别是什么
- HTTPS与HTTP有什么区别?HTTPS的七个误解
- Http 中Connection: close和Connection: keep-alive有什么区别?
- HTTPS和HTTP有什么区别,到底安全在哪里?
- HTTP、TCP/IP、Socket与WebSocket的区别!
- 什么是HTTPS?听大神说https和http有何区别?
- HTTPS和HTTP有什么区别,到底安全在哪里?
- HTTP协议中POST、GET、HEAD的区别是什么?分别在什么情况下使用?
- RequestDispatcher提供两个方法:forward,include有什么区别,以及和HttpResponse的sendRedirect方法的区别
- 与HTTP有什么区别?HTTPS的七个误解
- HTTP中GET和POST方法有什么区别
- WebSocket 和socket、HTTP的区别和联系
- https和http有什么区别
- 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别