无sslmqtt是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无sslmqtt是啥意思相关的知识,希望对你有一定的参考价值。
参考技术A 无sslmqtt指的是无物联网连接协议。MQTT是一种机器对机器(M2M)/”物联网 “连接协议。它设计初衷是用于极轻量级的发布/订阅消息传输。它适于于远程连接环境,需要少量代码交互并且网络带宽很稀缺的场景。例如,通过卫星链路来连接传感器与代理服务器,与医疗服务提供商的偶尔数据连接,以及在一系列家庭自动化和小型设备场景中。它也是移动应用的理想选择,因为它体积小、功耗低、数据包最小化,并能有效地将信息分配给一个或多个接收器。
MQTT 协议由 Andy Stanford-Clark (IBM) 和 Arlen Nipper(Arcom,现为 Cirrus Link)于 1999 年发明。 他们需要一种通过卫星连接石油管道的协议,以最大限度地减少电池损耗和带宽。
HTTP是无状态的,那么keep-alive是啥意思?
【中文标题】HTTP是无状态的,那么keep-alive是啥意思?【英文标题】:HTTP is statel-less,so what does it mean by keep-alive?HTTP是无状态的,那么keep-alive是什么意思? 【发布时间】:2011-08-28 23:48:19 【问题描述】:Keep-Alive: 300
Proxy-Connection: keep-alive
我们知道HTTP连接在请求得到响应时关闭,那么keep-alive
是什么意思,有人能详细说明一下吗?
【问题讨论】:
【参考方案1】:这意味着可以保持连接打开以请求更多资源,例如图像和样式表。
【讨论】:
所以说HTTP is state-less
是错误的,在这种情况下它可以是全状态的,对吧?
不,HTTP 确实是无状态的。这意味着服务器返回的数据不依赖于用户之前的任何操作。 Cookie 和其他非 HTTP 方法使 Web 看起来是有状态的,例如使用户能够在网站上登录和退出。这种意义上的状态与连接无关。
好像我一直在错误地理解stateless
,我认为它与非持久连接相同......那你能举一个有状态协议的例子吗?
例如 TCP 是一个有状态的协议。基本上,执行某种握手的每个协议都是有状态的。见mama.indstate.edu/users/shri/State.html【参考方案2】:
协议确实是无状态的,但是keep-alive表示客户端和服务器之间的连接应该保持打开状态。
打开 TCP 连接是一项相对重量级的操作,保持该连接打开可以避免与打开新连接相关的设置和拆卸成本。
【讨论】:
如果连接是持久的,怎么可能是无状态的? 是的,连接是准持久的,直到客户端的资源完成服务。但是一旦服务器完成发送资源,连接就会关闭,使其成为无状态的。【参考方案3】:我们知道,当请求得到响应时,HTTP 连接已关闭
什么是 HTTP 连接?实际上,它是一个实现 HTTP 的套接字连接。只有在 HTTP1.0 中,每次响应后连接才会关闭。为了节省建立 TCP/IP 连接的成本,HTTP1.1 规定除非客户端发送标头
Connection:close
或者服务器返回相同的标头,然后套接字保持打开状态。您可以根据需要向此套接字提供任意数量的请求,并且响应将按照请求的顺序返回。这要求响应要么使用分块传输编码发送,要么包含内容长度标头,以便可以检测/计算每个响应的结尾。
proxy-connection
标头再次不同,仅与客户端和代理服务器之间的对话有关。
我推荐此页面作为协议的优秀指南。
HTTP Made Really Easy
【讨论】:
如果连接是持久的,如何确保the responses will come back in the order that they were requested
?可能后面的请求会更早得到响应,对吧?
这是服务器的责任。给定单个套接字上的请求顺序,则服务器必须以相同的顺序响应。【参考方案4】:
Keep-alive
与状态无关。
在网络中,最昂贵的操作之一是反复打开和关闭连接。然而,现代 HTML 页面在技术上要求您准确地做到这一点:首先,获取页面,然后获取每个资源并重复,直到您拥有所有内容。由于这会非常慢,HTTP/1.1 允许代理保持连接活动,直到他从服务器获得他想要的一切。
Keep-alive
基本上是网络浏览器告诉服务器不要挂断。
【讨论】:
那跟有状态有什么关系呢? 在 HTTP 中,什么都没有,因为 HTTP 是一个无状态协议。 HTTP 中的每个请求都是在真空中进行的。对比 TCP,您发送的每个后续数据包都是前一个数据包的延续。 TCP 需要注意每个数据包的接收方式,以便它可以为更高的协议(如 HTTP)构建有意义的消息。这就是协议有状态的原因:每个请求/数据包都是对话的一部分,而不是单个请求/数据包【参考方案5】:这个问题已经回答并接受了,但我想详细解释一下:
keep-alive 不能永远保持一个连接;应用程序 在服务器中运行决定了保持 连接活动,并且在大多数情况下您可以配置此限制。
在 HTTP/1.1 中,默认使用 Keep-alive。如果客户端有其他请求,他们将为它们使用相同的连接。
无状态一词并不意味着服务器没有能力保持 一个连接。它只是意味着服务器无法识别任何 任意两个请求之间的关系。
【讨论】:
以上是关于无sslmqtt是啥意思的主要内容,如果未能解决你的问题,请参考以下文章