Websockets 并非神奇的东西

主要观点:几个月前与嵌入式 RTOS 供应商的高级工程师交谈,其称 WebSockets 是物联网的重要标准,但交谈很快结束未深入了解原因。之后发现关于 WebSockets 和物联网有很多误解,作者希望澄清一些误解并激发对 WebSockets 的正确兴趣。
关键信息

  • WebSockets 每个消息被分成帧,有一定开销,并非无消息开销。
  • WebSockets 是基于 TCP 的消息导向协议,像 UDP 无最大长度限制但有 TCP 的传输保证和拥塞控制,不同于 TCP 的流导向。
  • WebSockets 协商机制好,初始可通过 HTTP 请求协商连接条款,如包含授权头认证客户端等,能解决 MQTT 等协议的一些问题。
  • 最初的协商请求是基于 TCP 的二进制协议的有力补充,但 WebSockets 并非许多传统物联网协议的替代品,只是增强机制,且将其用于物联网应用值得担忧,因其明显为 Web 浏览器设计,如服务器帧掩码浪费资源,基于源的安全对非 HTML 应用无用。
    重要细节
  • 短消息从服务器到客户端,2 字节开销;从客户端到服务器,6 字节开销(4 字节掩码),最大开销 14 字节或使用扩展时无限制。
  • WebSockets 规范中提到其是 TCP 之上的一层,添加了帧机制回到 TCP 构建的 IP 数据包机制但无长度限制。
  • SCTP 提供类似 TCP 之上消息的好处但去除了 TCP 部分减少开销,却未广泛采用。
  • WebSockets 连接从流而非消息建立,一些流导向协议在其中实现困难但多数协议可放入帧中。
  • 可通过协商请求解决 MQTT 客户端体验问题,如发送错误信息等。
阅读 9
0 条评论