Networking 嵌入式PIC微控制器通过互联网与服务器通信的最佳协议?

Networking 嵌入式PIC微控制器通过互联网与服务器通信的最佳协议?,networking,snmp,network-protocols,tcp-ip,microchip,Networking,Snmp,Network Protocols,Tcp Ip,Microchip,首先,感谢你抽出时间阅读这篇文章 我希望开发一个TCP/IP设备,使用Microchip PIC18或PIC32系列嵌入式微控制器和Microchip的TCP/IP堆栈。然而,目前我对网络的了解还很基础,因此我写这篇文章的原因 有谁能推荐我的TPC/IP嵌入式设备使用的最佳协议,以便它可以与数据中心的服务器通信?我的目的是让嵌入式设备位于internet上某个远程位置,服务器可以在该位置与设备通信,并下载数据(如温度计探头读数)以存储在数据库中。我还希望数据中心的服务器能够在需要时重新配置远程设

首先,感谢你抽出时间阅读这篇文章

我希望开发一个TCP/IP设备,使用Microchip PIC18或PIC32系列嵌入式微控制器和Microchip的TCP/IP堆栈。然而,目前我对网络的了解还很基础,因此我写这篇文章的原因

有谁能推荐我的TPC/IP嵌入式设备使用的最佳协议,以便它可以与数据中心的服务器通信?我的目的是让嵌入式设备位于internet上某个远程位置,服务器可以在该位置与设备通信,并下载数据(如温度计探头读数)以存储在数据库中。我还希望数据中心的服务器能够在需要时重新配置远程设备上的设置和变量

到目前为止,我对协议的研究使我找到了以下选择:

  • SNMP v3(由于加密和身份验证,版本3)
  • UDP(虽然我读到这可能不可靠,但速度很快)
  • TCP(我对此还不太清楚)
有没有人能给我建议一下最好的下山路线?我并不期待你能给出详细的答案,但我真的很想知道应该研究哪些主题/协议

我的意图是通过internet部署许多这些嵌入式设备,它们都将数据发送回服务器

我假设远程嵌入式设备必须连接到服务器,而不是相反,因为服务器将具有静态IP地址或DNS名称,而远程设备地址将是未知的

如果您对此有任何建议,我们将不胜感激。请不要犹豫,问问我是否遗漏了这篇文章中的任何关键信息

非常感谢

抢劫

*更新*
有人指出我可能误用了Web服务器这个术语,所以我修改了我的帖子,改为提到数据中心的服务器。感谢您向我指出这一点。

如果目标是Web服务器,您别无选择。您必须使用HTTP,它在TCP上运行


或者您误用了术语“Web服务器”。

这在许多方面取决于您的具体要求。TCP/IP能够提供相当可靠的连接,因为它提供了一种方法来确定客户端是否已连接、何时连接以及何时断开连接。UDP是无连接的,因此服务器打开一个端口并侦听数据,但没有自动连接管理,因此客户端需要显式地“告诉”服务器何时到达或将要离开(这也意味着您需要创建自己的超时设施)

此外,若您的内存/处理资源非常有限,那个么值得记住的是,UDP是一种“成本较低”的协议,因为它避免了TCP由于其内置连接管理而带来的大量开销


虽然这些都是协议,但它们实际上只是自己处理连接。您可能仍然需要创建自己的协议来管理数据本身。例如,当您通过TCP或UDP发送数据时,您发送的字节可能不会同时全部到达服务器。这意味着您需要一种方法来验证收到的每个数据包,以确保您拥有所有数据包。这通常是用一个校验和和一个字节组合来表示数据发送的总大小。

你也可以考虑MQTT()。它是一个轻量级消息传递协议。为了编码你的消息,你可能会考虑原BUFF()

谢谢你这么快就回来了。那么,SNMP只是一个本地网络协议,不能在internet上使用吗?对不起,我所说的web服务器只是数据中心中的一个服务器,通过静态IP/DNS连接到internet设置。是否可以使用SNMP完全取决于对等方之间的相关UDP端口(161-2)是否完全打开。事实上,这同样适用于所有其他协议。谢谢@EJP的建议。我使用了UDP。它是低级别的,不需要对PIC造成太多负担。听起来你的服务器将ping图片。我认为从服务器向PIC发送UDP数据包没有问题,PIC通过另一条UDP消息响应数据包中的命令返回服务器。如果服务器在一段时间内没有收到响应,请重新发送命令。Best将要求您更准确地确定您的需求;但是,您应该考虑TLS安全协议(如HTTPS)或SSH。我不建议你尝试编写自己的协议,除非你准备学习一些难以置信的深奥数学。就像椭圆曲线和/或生成超大伪素数一样,我会选择TCP上的HTTPS。如果照片在防火墙后面呢?我会说你的理解是正确的。一般来说,服务器不能/不应该依赖于客户端在线或在同一地址始终可用。只有当客户机与服务器建立安全连接时,他们的通信才应该被信任。这是个问题吗?@RobHurd如果没有ping,我会让PIC通过UDP向服务器发送注册命令。注册将有PIC的IP地址。感谢您的回复@Alfie。我将阅读更多关于发送和接收TCP和UDP数据的内容。我现在遇到的问题是,我对网络完全陌生,所以我试着用我的尾巴从中找出我的头。如果不知道更多关于你正在做什么,很难提出最佳策略,但是为了帮助阐明协议:你可以考虑HTTP作为“数据传输协议”;它定义了有关所用端口、需要发送的格式数据以及需要包含的内容(例如数据长度或使用的字符编码)的规则。但是,HTTP使用TCP[连接协议]。FTP使用TCP(端口)