gpt4 book ai didi

蓝牙串行端口通信 (SPP)

转载 作者:行者123 更新时间:2023-12-02 22:30:27 25 4
gpt4 key购买 nike

我们正在开发一款通过蓝牙使用 SPP(串行端口配置文件)的应用程序,开发人员正在讨论使用某种类型的协议(protocol)和数据包传输,还是仅在没有任何形式的 ACK、序列或大小信息的情况下流式传输数据.

蓝牙是否提供有保证的传输和数据完整性,以便我们不需要数据包协议(protocol)设计的开销?我们可以仅依靠蓝牙来确保数据传输吗?

最佳答案

交货有保证吗?,

保证交货顺序。这是由于蓝牙协议(protocol)底层内置的确认/序列编号方案所致。因此,在较低层,数据包将被重新传输,直到被确认为止。请注意,这相当于停止并等待 ARQ 方案。如果超过超时时间,则认为连接丢失(通常为 30 秒)

数据完整性得到保证吗?

蓝牙 4.2 引入了 BT 安全连接。这包括对每个传输的数据包进行消息完整性检查 (MIC),接收端的 MIC 不匹配将触发重新传输,并且多个 MIC 不匹配可能会断开连接。

因此,如果您不使用安全连接功能,则无法保证完整性。有一个 16 位 CRC 方案用于保护数据,但众所周知,在很长一段时间内,将会出现 CRC 逃逸(位翻转,从而使 CRC 保持正确)。但这种情况比较少见,而且发生在嘈杂的环境中。如果您的应用程序需要非常高的数据完整性,那么可以使用 SecureConnection 或引入应用程序级完整性检查。

请注意,SPP Profile 本身没有任何错误/序列检查,RFCOMM 有一个 8 位 FCS(帧检查序列),用于检查 header 损坏。 L2CAP 流/重传模式有一个可选的 16 位 FCS,涵盖 L2CAP header 和数据,请注意,基本 L2CAP 模式根本没有 FCS。

如果您有启用 L2CAP FCS 的选项,则较低级别的 16 位 CRC + L2CAP 层的 16 位 FCS + RFCOMM 层的 8 位 FCS 将提供足以满足大多数应用程序的数据完整性。然而,正如前面提到的,如果它确实很关键,那么您需要引入额外的应用程序级别完整性检查。

关于蓝牙串行端口通信 (SPP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com