微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GPRS上开销最少的协议

如何解决GPRS上开销最少的协议

我们公司开发了收集农业领域数据的站点。这些字段可能处在茫茫荒地之中,因此站点使用带SIM卡的GSM / GPRS,后者会自动切换到最强的提供商。

每隔5分钟,会建立Internet连接以将数据发送到服务器。数据具有包长度,命令,传感器数据和crc检查的结构。但是这些数据结构是通过http帖子发送到url的。

对于480字节的数据,大约使用2550字节的数据流量。 HTTP协议有很多开销。因为我们只需要发送480字节的数据,所以HTTP上的发布有80%的开销。现在我们有几百个车站,并且这个数目正在增长。因此,数据流量的成本正在迅速增加

我们想对数据传输进行重新设计。数据由工作站中的微芯片微处理器发送。

我们的目标是在保证数据传输的同时,尽可能减少开销。所以我研究了TCP和UDP。

TCP具有故障检测和恢复功能,但是开销较高。 UDP的开销较低,但是不能保证数据传输不会失败。

我的第一个想法是建立一个侦听TCP端口的服务器。站通过TCP发送数据。主要是因为有保证的数据传递。

使用UDP,我们必须自己开发检查并重新发送数据,但是记录的数据结构已经准备好进行检查。

所以我真的不确定该怎么做。我正在尝试就这些问题寻求答案:

  • TCP和UDP发送(和交付)480字节数据需要多少字节开销?

  • TCP和UDP是考虑发送480字节数据的最佳方法吗?还是有一种更智能的解决方案,其开销甚至更低?

解决方法

TCP和UDP发送(和传递)480字节数据需要多少字节开销?

(典型的)TCP头长度为20个字节,尽管使用选项可以(略)长一些。如果整个480字节在单个TCP段中发送,那么在第二层开销之前,您将获得480 +20 + 20(IP报头)= 520字节。

UDP具有8个字节的标头,因此对于UDP,您将具有480 + 8 + 20 = 508个字节。

但是,您应该考虑TCP是流协议。从TCP套接字读取就像从二进制文件读取一样-您需要使用某种分隔符或将消息的长度放在每个消息的前面,自己将该流分成单个消息。

另一方面,

UDP适用于单个消息。从UDP套接字读取将一次返回一条消息。

TCP和UDP是考虑发送480字节数据的最佳方法吗?还是有一种更智能的解决方案,其开销甚至更低?

UDP和TCP是Internet上最低级别的传输协议。 HTTP和其他高级协议都建立在它们之上。如果数据的大小至关重要,则无需使用RAW套接字并将数据直接嵌入到IP数据包中,原始的TCP和UDP的开销就可以降低。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。