我们公司开发了在农业领域收集数据的台站。这些领域可能是在不知道,所以站使用GSM/GPRS与SIM卡,自动切换到最强的供应商。
每隔5分钟,就会建立一个互联网连接,以便将数据发送到服务器。该数据具有分组长度、命令、传感器数据和crc校验的结构。但是这些数据结构是通过http post发送到url的。
对于480字节的数据,大约使用2550字节的数据流量。HTTP协议中存在很多开销。因为我们只需要发送480字节的数据,我们就有80%的开销通过http的post。现在我们有几百个电台,而且这个数字还在增长。因此,数据通信的成本正在迅速增长。
我们想重新设计数据的传输。数据是由单片机在车站发送的。
我们的目标是尽可能减少开销,保证数据传递。所以我研究了TCP和UDP。
TCP具有故障检测和恢复功能,但开销较高。UDP的开销较低,但不能保证数据的传递不会失败。
我的第一个想法是构建一个监听TCP端口的服务器。站通过TCP发送数据。主要是因为保障数据的传递。
使用UDP,我们必须自行开发数据的检查和重发,但是记录的数据结构已经准备好进行检查了。
所以我真的很怀疑该怎么做。我正试图从这些问题中得到一个答案:
发布于 2020-11-05 11:18:09
,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是互联网上最底层的传输协议。HTTP和其他高级协议都建立在它们之上。如果数据的大小非常重要,则原始TCP和UDP的开销与您将不使用原始套接字和直接将数据嵌入IP数据包时获得的开销一样低。
https://stackoverflow.com/questions/64692850
复制相似问题