多个物联网设备通过 TCP 与服务器异步通信
Multiple IOT devices communicating to a server Asynchronously via TCP
我想要多个物联网设备(比如 50 个)通过 TCP 直接异步地与服务器通信。假设所有这些设备每 30 秒都有一个心跳脉冲,并且可能会在不同的时间掉线并重新连接。
谁能告诉我在多个设备同时通信时确保没有数据丢失或阻塞的最佳方法?
TCP本身就保证了客户端和服务器之间的通信过程中不会丢失数据。它通过使用序列号和 ACK 消息来做到这一点。
从技术上讲,在实际数据传输发生之前,会在客户端(可以是 IoT 设备或任何其他设备)和服务器之间创建 TCP 连接。然后,数据被分成多个数据包并通过该连接在网络上发送。所有与 TCP 相关的机制,如流量控制、错误检测、拥塞检测等,都会在数据开始流动时发生。
如果您想详细了解 TCP 的工作原理,wiki page 是一个很好的开始。
除此之外,只要您的服务器有足够的容量来支持来自设备的请求流,那么一切都应该正常(至少在理论上)。
我认为你问的问题不对。无法确保没有数据被丢弃或阻塞。网络并不总是有效(这就是 work
这个词出现在网络中的原因,以说服您不这样做)。
正确的问题是:如何让我的分布式系统尽可能地可用和可靠?答案涉及将中断和拥塞视为正常操作的一部分,并适当地构建您的软件。
有一个永恒的usenix/acm/? 70 年代末 80 年代初的论文激发了这样一种观念,即端到端协议比功能过度的中间协议更有效;大多数中等到中等的保证相当于尽力而为。如果您依赖这些保证,您注定会失败。抱歉,现在找不到参考文献,但它被广泛引用。
我想要多个物联网设备(比如 50 个)通过 TCP 直接异步地与服务器通信。假设所有这些设备每 30 秒都有一个心跳脉冲,并且可能会在不同的时间掉线并重新连接。
谁能告诉我在多个设备同时通信时确保没有数据丢失或阻塞的最佳方法?
TCP本身就保证了客户端和服务器之间的通信过程中不会丢失数据。它通过使用序列号和 ACK 消息来做到这一点。
从技术上讲,在实际数据传输发生之前,会在客户端(可以是 IoT 设备或任何其他设备)和服务器之间创建 TCP 连接。然后,数据被分成多个数据包并通过该连接在网络上发送。所有与 TCP 相关的机制,如流量控制、错误检测、拥塞检测等,都会在数据开始流动时发生。
如果您想详细了解 TCP 的工作原理,wiki page 是一个很好的开始。
除此之外,只要您的服务器有足够的容量来支持来自设备的请求流,那么一切都应该正常(至少在理论上)。
我认为你问的问题不对。无法确保没有数据被丢弃或阻塞。网络并不总是有效(这就是 work
这个词出现在网络中的原因,以说服您不这样做)。
正确的问题是:如何让我的分布式系统尽可能地可用和可靠?答案涉及将中断和拥塞视为正常操作的一部分,并适当地构建您的软件。
有一个永恒的usenix/acm/? 70 年代末 80 年代初的论文激发了这样一种观念,即端到端协议比功能过度的中间协议更有效;大多数中等到中等的保证相当于尽力而为。如果您依赖这些保证,您注定会失败。抱歉,现在找不到参考文献,但它被广泛引用。